A major change in the app means a major change in the version number, so here we are, version 4.0!
The Short Story
First, rather than query Mapbox for data over and over again as you tap and build your route, EasyRoute now goes and fetches chunks of route and elevation data as needed and caches it on your device. The initial download will take a little longer, but once you have the data, it’s very fast. It opens the door to other improvements and features as well so I’m thinking it’ll be a long-term win.
Second, it’s also now using a new elevation data source and it works the same as above. Chunks of it will be downloaded on-demand, which will also introduce a bit of an up-front delay, but then it will be very fast.
Additionally, you can also now force a light or dark map regardless of iOS dark mode by going to the EasyRoute section of the settings app and setting the map theme.
Furthermore, there are lots of little tweaks and fixes. (Dark mode thumbnails are nice.)
The Long Story
Remember how last year I had to switch away from Google Maps because their pricing became ridiculous? Well, Mapbox went and changed their pricing structure too. I wouldn’t say it’s ridiculous, but for my use case, it costs quite a bit more. At the end of the day, it’s just not sustainable, so EasyRoute is no longer using Mapbox for routing data. (Note: the map itself is still Mapbox, but that’s just a map for rendering the visuals. The map pricing is fair and I like the Mapbox map, so it stays — for now.)
So while Mapbox forced my hand, this was something I’ve been thinking about doing for a long time anyway. In fact, it’s very close to what my plan was for how the app should work in the first place. I had been researching ways of grabbing road network data and creating the routes on the phone when I realized how I could just get Google, and later Mapbox to do it for me. Elevation is another problem, but one that was solved in a similar way.
Speaking of elevation, this has been a tricky problem over the years too. At first EasyRoute used data from MapQuest and then Google. The elevation data was actually a big part of the the Google bill and Mapbox doesn’t really offer a similar service, so I had to get creative. Since the switchover to Mapbox, EasyRoute has been downloading terrain tiles from Mapbox and calculating elevation heights from that. This is not really what the terrain tiles were intended for so I’ve always been very uneasy about the solution and have always considered it a stop-gap.
Now EasyRoute will grab chunks of elevation data collected by the Shuttle Radar Topography Mission. Thus far in my testing, it produces smoother and more accurate graphs than before, so I think it’s a much better long-term solution.
The Future
Now that the device is used for both data storage and road path calculations, it’s actually quite liberating and opens up a number of improvements and features.
For example, every map data provider like Google, Mapbox, Bing, MapQuest, etc. mandates their data be used with their map. This means that when I used Google for routing, I had to show it on a Google map, when I used Mapbox, I had to display a Mapbox map, and so on. Now I can choose any map I like. (I could even go back to Google and bring Street View back properly, or have multiple maps and let you choose!)
Another great thing is, this totally opens up the door to completely offline routing, which a number of you have been asking about for a while.
Furthermore, I’m now in control of the data EasyRoute uses. Yes, it’s OpenStreetMap data, but I process it into routable data and make it available to EasyRoute myself.
Also, the on-device route computations are so much faster than the network calls that it makes new features possible. (More responsive dragging, multiple proposed routes, etc.)
So many things on the to-do list, so little time… but I’m still just as excited to work on this little app as I was more than 7 years ago when I started the project.
Since this is a “point-zero” release (4.0) and it was a big change, I expect there will be hiccups and lots of room for improvement, so let me know how it’s working for you on either the trusty old contact form or the new Twitter account and I’ll do my best to make it better.
Thanks everyone!