don't collapse highway ramps into uturns (#4074)
This commit is contained in:
parent
a58139dfb5
commit
ceaf065d0e
@ -14,6 +14,7 @@
|
|||||||
- #4075 Changed counting of exits on service roundabouts
|
- #4075 Changed counting of exits on service roundabouts
|
||||||
- Bugfixes
|
- Bugfixes
|
||||||
- Fixed a copy/paste issue assigning wrong directions in similar turns (left over right)
|
- Fixed a copy/paste issue assigning wrong directions in similar turns (left over right)
|
||||||
|
- #4074: fixed a bug that would announce entering highway ramps as u-turns
|
||||||
|
|
||||||
# 5.7.1
|
# 5.7.1
|
||||||
- Bugfixes
|
- Bugfixes
|
||||||
|
@ -61,7 +61,7 @@ Feature: Basic Routing
|
|||||||
|
|
||||||
When I route I should get
|
When I route I should get
|
||||||
| waypoints | route | summary |
|
| waypoints | route | summary |
|
||||||
| a,c | road, | road, 101 |
|
| a,c | road,, | road, 101 |
|
||||||
|
|
||||||
Scenario: Only Refs
|
Scenario: Only Refs
|
||||||
Given the node map
|
Given the node map
|
||||||
|
@ -1279,3 +1279,43 @@ Feature: Simple Turns
|
|||||||
When I route I should get
|
When I route I should get
|
||||||
| waypoints | route | turns |
|
| waypoints | route | turns |
|
||||||
| a,d | foo,bar,bar | depart,turn slight right,arrive |
|
| a,d | foo,bar,bar | depart,turn slight right,arrive |
|
||||||
|
|
||||||
|
Scenario: UTurn onto ramp
|
||||||
|
Given the node map
|
||||||
|
"""
|
||||||
|
a - - - b - c
|
||||||
|
.|
|
||||||
|
_________________ de
|
||||||
|
h-g-----------------------f
|
||||||
|
"""
|
||||||
|
And the ways
|
||||||
|
| nodes | name | ref | oneway | highway |
|
||||||
|
| abc | Road | | yes | primary |
|
||||||
|
| ce | other | | yes | primary |
|
||||||
|
| cdg | | | yes | motorway_link |
|
||||||
|
| fgh | | C 42 | yes | motorway |
|
||||||
|
|
||||||
|
|
||||||
|
When I route I should get
|
||||||
|
| waypoints | route | ref | turns |
|
||||||
|
| a,h | Road,,, | ,,C 42,C 42 | depart,on ramp right,merge slight left,arrive |
|
||||||
|
|
||||||
|
Scenario: UTurn onto ramp (same ref)
|
||||||
|
Given the node map
|
||||||
|
"""
|
||||||
|
a - - - b - c
|
||||||
|
.|
|
||||||
|
_________________ de
|
||||||
|
h-g-----------------------f
|
||||||
|
"""
|
||||||
|
And the ways
|
||||||
|
| nodes | name | ref | oneway | highway |
|
||||||
|
| abc | Road | C 42 | yes | primary |
|
||||||
|
| ce | other | | yes | primary |
|
||||||
|
| cdg | | | yes | motorway_link |
|
||||||
|
| fgh | | C 42 | yes | motorway |
|
||||||
|
|
||||||
|
|
||||||
|
When I route I should get
|
||||||
|
| waypoints | route | ref | turns |
|
||||||
|
| a,h | Road,,, | C 42,,C 42,C 42 | depart,on ramp right,merge slight left,arrive |
|
||||||
|
@ -123,8 +123,9 @@ inline bool requiresNameAnnounced(const std::string &from_name,
|
|||||||
(names_are_equal && ref_is_removed) || is_suffix_change;
|
(names_are_equal && ref_is_removed) || is_suffix_change;
|
||||||
|
|
||||||
const auto needs_announce =
|
const auto needs_announce =
|
||||||
// " (Ref)" -> "Name "
|
// " (Ref)" -> "Name " and reverse
|
||||||
(from_name.empty() && !from_ref.empty() && !to_name.empty() && to_ref.empty());
|
(from_name.empty() && !from_ref.empty() && !to_name.empty() && to_ref.empty()) ||
|
||||||
|
(!from_name.empty() && from_ref.empty() && to_name.empty() && !to_ref.empty());
|
||||||
|
|
||||||
const auto pronunciation_changes = from_pronunciation != to_pronunciation;
|
const auto pronunciation_changes = from_pronunciation != to_pronunciation;
|
||||||
|
|
||||||
|
@ -147,6 +147,12 @@ bool isUTurn(const RouteStepIterator step_prior_to_intersection,
|
|||||||
step_prior_to_intersection, step_entering_intersection, step_leaving_intersection))
|
step_prior_to_intersection, step_entering_intersection, step_leaving_intersection))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// uturns only allowed on turns
|
||||||
|
if (!hasTurnType(*step_entering_intersection, TurnType::Turn) &&
|
||||||
|
!hasTurnType(*step_entering_intersection, TurnType::Continue) &&
|
||||||
|
!hasTurnType(*step_entering_intersection, TurnType::EndOfRoad))
|
||||||
|
return false;
|
||||||
|
|
||||||
// the most basic condition for a uturn is that we actually turn around
|
// the most basic condition for a uturn is that we actually turn around
|
||||||
const bool takes_u_turn = bearingsAreReversed(
|
const bool takes_u_turn = bearingsAreReversed(
|
||||||
util::bearing::reverse(step_entering_intersection->intersections.front()
|
util::bearing::reverse(step_entering_intersection->intersections.front()
|
||||||
|
Loading…
Reference in New Issue
Block a user