navit-gps / navit

The open source (GPL v2) turn-by-turn navigation software for many OS
http://www.navit-project.org
Other
551 stars 173 forks source link

Announce when the route changes due to changes in the traffic situation #719

Open mvglasow opened 5 years ago

mvglasow commented 5 years ago

When an active route changes due to changes in the traffic situation, the user is currently not made aware of this.

If the change affects the next maneuver (i.e. the user is diverted off the current road), the user may miss the maneuver for that reason.

Also, users are mot made aware that their ETA has suddenly changed.

We want to trigger some action when the route changes, e.g. a spoken announcements or an OSD icon appearing.

Challenge 1: Detection of such changes. Maybe this can be done when the route path is refreshed: if route path segments change, it means the route has changed and the event should fire.

Challenge 2: Implementation of an event which can trigger the desired actions. AFAIK we don’t currently have events, only attributes which can trigger actions on update.

mvglasow commented 5 years ago

We also need to think about UX for these cases:

mvglasow commented 5 years ago

Maybe this could be incorporated into a general traffic status display which indicates:

For example, a traffic jam symbol indicates general status:

If spoken announcements are enabled, speak an announcement whenever the route changes due to the traffic situation. This includes all cases in which the detour icon appears or disappears, but includes other cases as well (e.g. a second traffic distortion has just been reported and bypassed).

The visual indication could be an OSD similar to navigation_status. Announcements could borrow from maneuver announcements.

The remaining challenge now is to detect route changes (and, optionally, what change it is: deviating from the main route, returning to the main route, or something else).

mvglasow commented 5 years ago

An approach to route changes could be to compare the added and removed segments to the navigation map (before and after rerouting)—if a segment is on the navigation map, it is part of the route:

If the first route created already avoids traffic distortions, we will not have a way of detecting that as a detour, unless we ignore traffic for the first calculation and then immediately trigger a recalculation.

Another difficulty is dealing with lesser evils, i.e. the cheapest way to avoid a huge traffic jam is through a smaller one. Should we report that as a detour or as a traffic jam ahead?