The reason I suspect that I may need to include some sort of route creation is because many of the existing systems (including Komoot I think) don't include turn by turn navigation in the routes that they export.
Some systems do (e.g. Ride With GPS) but people may not want to change their source of routes. In that case I may need to offer some sort of ability to create routes, or maybe to create turn by turn navigation for an imported route.
I spent several weeks trying to do this in code by using an algorithm that looked at the shape of the route in order to detect turns. However it wasn't good enough when I used it in practice, so I would either need to use an external service (which would cost money) or improve the algorithm by using the map data. This would involve trying to determine where the route is going on the map (known as "map matching") and then use that to generate turn by turn directions with road names etc.
This is one of the reasons that the navigation has taken so long. I have spent a lot of time investigating things that didn't quite pay off, but may be useful in the future. Another area was when I spent many weeks trying to implement offline routing using the current map data, only to come to the conclusion that it did not provide enough information (which is understandable because it is designed for display rather than routing).
However that work would pay off if I built (or more likely paid someone to build) a custom map data server that provides map tiles that contain the information required for routing. That would allow me to add offline routing and re-routing to the app by using the same data that is used to draw the map. Maybe one day.
After our conversation, I took both the Fenix 7 and WorkOutdoors on two runs, specifically observing the Fenix’s behavior.
First of all, I agree with what FMUK said, and I was wrong in my initial post. Automated routing isn’t great. It works, but off-road navigation seems to be far more complex than on-road navigation. If I miss a turn while driving, Google Maps finds me another route, and it’s totally fine (as long as the road allows traffic). However, when using paths and trails, things become more complicated. I was routed via a sandy forest road that was barely passable. I wouldn’t trust this kind of dynamic routing and wouldn’t use it. When planning a route on a computer, I can take advantage of sophisticated, popularity-based algorithms, elevation profile previews, official trail data, etc. I wouldn’t risk that missing a turn when hiking will result in routing me up an alpine wall with chains just because an algorithm calculated it as the best route.
Second observation: Even Garmin’s turn-by-turn navigation doesn’t work well all the time. On a ~20km run in the woods, I often had to check the map to follow the correct path because the arrows were either insufficient or even misleading.
Third observation: Turn-by-turn navigation isn’t actually that helpful. I even found WorkOutdoors’ map route easier to use while running. This is because it’s super fast and convenient to zoom in and out using the digital crown.
However, what really makes a difference is that Garmin beeps and vibrates when approaching a turn and can show the distance to the next important point—let’s say, a place where I need to pay attention. I’m not saying just "turn" because Garmin seems to do two things:
• If a change in direction is needed and there’s an alternative path (a junction), it always marks it as a turn.
• If a change in direction is needed but there’s no alternative path (no junction), it sometimes marks it as a turn.
With WorkOutdoors, I have to monitor the route myself continuously, and if I miss a turn, it beeps. Garmin, on the other hand, beeps before I miss a turn, drawing my attention to it so I never actually miss it.
Fourth observation: The remaining distance, ETA, and elevation profile are extremely useful.
You said "However it wasn't good enough when I used it in practice" - I obviously don't know how well it worked, but even Garmin doesn't have it working 100% all the time, and it seems that fairly naive direction-change algorithm does more important work that the full turn-by-turn navigation.