Adjust Straight direction modifiers of side roads in driveway handler
This commit is contained in:
		
							parent
							
								
									6f4af330ed
								
							
						
					
					
						commit
						4d0fb89489
					
				| @ -46,3 +46,23 @@ Feature: Driveways intersections | ||||
|        When I route I should get | ||||
|           | waypoints | route   | turns         | locations | | ||||
|           | a,d       | ,second | depart,arrive | a,d       | | ||||
| 
 | ||||
| 
 | ||||
|     Scenario: Road with a turn to service road | ||||
|         Given the node map | ||||
|           """ | ||||
|                /-----------------e | ||||
|           a---b------------------c | ||||
|                `-----------------d | ||||
|           """ | ||||
| 
 | ||||
|         And the ways | ||||
|           | nodes | highway | name | oneway | | ||||
|           | abc   | trunk   | road | yes    | | ||||
|           | bd    | service | serv | yes    | | ||||
|           | be    | service | serv | yes    | | ||||
| 
 | ||||
|        When I route I should get | ||||
|           | waypoints | route          | turns                           | locations | | ||||
|           | a,d       | road,serv,serv | depart,turn slight right,arrive | a,b,d     | | ||||
|           | a,e       | road,serv,serv | depart,turn slight left,arrive  | a,b,e     | | ||||
|  | ||||
| @ -78,6 +78,18 @@ operator()(const NodeID nid, const EdgeID source_edge_id, Intersection intersect | ||||
|     road->instruction.type = | ||||
|         isSameName(source_edge_id, road->eid) ? TurnType::NoTurn : TurnType::NewName; | ||||
| 
 | ||||
|     if (road->instruction.direction_modifier == DirectionModifier::Straight) | ||||
|     { | ||||
|         std::for_each(intersection.begin() + 1, road, [](auto &side_road) { | ||||
|             if (side_road.instruction.direction_modifier == DirectionModifier::Straight) | ||||
|                 side_road.instruction.direction_modifier = DirectionModifier::SlightRight; | ||||
|         }); | ||||
|         std::for_each(road + 1, intersection.end(), [](auto &side_road) { | ||||
|             if (side_road.instruction.direction_modifier == DirectionModifier::Straight) | ||||
|                 side_road.instruction.direction_modifier = DirectionModifier::SlightLeft; | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     return intersection; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user