Don’t get me wrong, I love Google Maps. Its a borderline miraculous service that has given me superb driving directions, public transport timetables, and walking routes. All over the world. For free.
However, when I tried to get cycling directions to a store a short distance across town I encountered some issues. I plugged in my headphones, put away my phone, and was promptly directed to take a left onto a four lane highway.
Never mind that Maps’ network of cycle lanes are a disjointed nightmare
The root of the issues is that Maps treats cyclists like cars that have a few extra roads, rather than a distinct mode of transport. The key differences that Maps ignores are:
The final kicker is that the handful of cyclists I talked to (and myself) already know how to get around their cities. If asked to ride in any direction they could safely do so using roads, bike paths, and shortcuts they have found, exploiting side streets, continuing past dead ends, crossing tram lines — all actions that Maps may never suggest or know are possible. They don’t need turn-by-turn directions at all. All they need Maps to tell them is which direction to ride in, and when to stop.
The solution: Just give that information! A simple voice based interface could be used, providing the user is willing to ride with a headphone in, and an on screen interface could provide an arrow towards the destination, readable at a glance if the user had the phone within eyesight.
Now I could cross my fingers that somebody from the Maps team reads this, agrees, and builds in these arguably very simple features. I don’t like the odds of this happening, and I also don’t want to shell out $200 for a hardware solution when my phone already has all the requisite capabilities.
So I built this admittedly below average app.
Live cycling demo
As mentioned, once the user enters a destination, the app will begin to provide directions: Verbal instructions on how to alter their current course and how far they to ride are given, while on the screen an arrow points to the destination.
The app is written in Swift, using the built in location, geocoding, and text-to-speech services. At this stage directions given are dumb and do not incorporate a knowledge of the road layout. This implicitly assumes the user is navigating through a network of largely uninterrupted streets, without large obstacles that would require them to take a indirect route.
Water hazards are not accounted for
While the directions are dumb, the timing of verbal instructions is adjusted to balance providing a reassuring frequency of updates with not being super annoying. The frequency of instructions increases as the user approaches the destination, and when their course deviation has changed from the last instruction they have recieved. This aims to keep the instructions passive, allowing the user to ride their own route while the app provides assistance.
If feedback is positive, there is potential to incorporate suggestions of roads that take the user in the desired general direction, using historical data from Strava or other service.
If you want to give this navigation method a go, the code can be downloaded here and installed using Xcode.
If you are reading this, cheers for making it to the end! I hope you have a great day! 👍