Skip to main content

How far to the next stop?

· 2 min read
Massimo Di Stefano
FastGIS author

Plan a route with a lunch stop and a mountain pass in the middle, start navigating, and until today the app would tell you exactly one thing about time: when you'd reach the end. The intermediate stops — the whole reason the route has that shape — were invisible from the saddle.

Partials everywhere the trip is shown

Multi-stop routes now carry per-stop arithmetic through the whole app:

  • In the HUD, three new cycling metric slots: NEXT STOP (distance to the next intermediate stop), STOP ETA (the arrival clock at it), and a STOP counter ("2/4"). The final-destination ETA is untouched.
  • Before you ride, the route planner's stops editor lists each stop's own leg distance, riding time, and projected arrival clock — so you can see at a glance that lunch lands at 14:30, not 12:00.
  • On CarPlay and Android Auto, a new Stops button during multi-stop navigation opens a dedicated list page: every stop with its remaining distance and arrival time. The car's own estimate still means the final destination — CarPlay models one trip, one estimate, and pretending otherwise would corrupt the ETA the car shows in its cluster.

The engine room is deliberately boring: the navigation store already kept the route's legs, and the ETA estimator already weighted remaining time by Valhalla's per-maneuver durations (so a route mixing motorway and switchbacks doesn't drift). Per-stop partials are prefix-sum subtractions over that same distribution — the last stop's numbers are identical to the trip totals by construction, and a test pins that identity at arbitrary points along the route.

When the honest answer is a dash

The interesting design work was deciding when not to show a number.

An out-and-back track — Sommeiller, Jafferau — is one leg whose geometry is a palindrome. The turnaround is not a stop, and "Stop 1 of 1" would be noise pretending to be information. A TET section or imported GPX rides as a chain of stitched legs whose boundaries are chunking artifacts, not places anyone plans to stop. And after an off-route reroute rebuilds the trip as "approach + trail", reaching the trail again is a milestone, not a stop.

In all of those cases the stop metrics show a plain . The rule the implementation follows, and the tests enforce: degrade to blank rather than lie.