don't emit invalid on sliproads with incompatible modes
This commit is contained in:
parent
7cbb1807e7
commit
6cf99c886f
@ -13,6 +13,11 @@
|
||||
- Debug Tiles
|
||||
- Added support for turn penalties
|
||||
|
||||
# 5.4.2
|
||||
- Changes from 5.4.1
|
||||
- Bugfixes
|
||||
- #3032 Fixed a bug that could result in emitting `invalid` as an instruction type on sliproads with mode changes
|
||||
|
||||
# 5.4.1
|
||||
- Changes from 5.4.0
|
||||
- Bugfixes
|
||||
|
33
features/guidance/bicycle-sliproads.feature
Normal file
33
features/guidance/bicycle-sliproads.feature
Normal file
@ -0,0 +1,33 @@
|
||||
@routing @bicycle @mode
|
||||
Feature: Bike - Mode flag
|
||||
|
||||
Background:
|
||||
Given the profile "bicycle"
|
||||
Given a grid size of 5 meters
|
||||
|
||||
Scenario: Bike Sliproad
|
||||
Given the node map
|
||||
"""
|
||||
i
|
||||
a b - c-d
|
||||
` |
|
||||
g-e-h
|
||||
|
|
||||
|
|
||||
f
|
||||
"""
|
||||
|
||||
And the nodes
|
||||
| node | highway |
|
||||
| c | traffic_signals |
|
||||
|
||||
And the ways
|
||||
| nodes | highway | name | oneway:bicycle |
|
||||
| abcd | cycleway | street | |
|
||||
| eb | path | | yes |
|
||||
| icef | tertiary | road | |
|
||||
| geh | secondary | street | |
|
||||
|
||||
When I route I should get
|
||||
| waypoints | route | turns |
|
||||
| a,f | street,{highway:path},road,road | depart,turn right,turn right,arrive |
|
@ -1,5 +1,5 @@
|
||||
#include "engine/guidance/post_processing.hpp"
|
||||
#include "extractor/guidance/turn_instruction.hpp"
|
||||
#include "engine/guidance/post_processing.hpp"
|
||||
|
||||
#include "engine/guidance/assemble_steps.hpp"
|
||||
#include "engine/guidance/lane_processing.hpp"
|
||||
@ -838,6 +838,11 @@ std::vector<RouteStep> collapseTurns(std::vector<RouteStep> steps)
|
||||
::osrm::util::guidance::getTurnDirection(angle);
|
||||
invalidateStep(steps[step_index]);
|
||||
}
|
||||
else
|
||||
{
|
||||
//the sliproad turn is incompatible. So we handle it as a turn
|
||||
steps[one_back_index].maneuver.instruction.type = TurnType::Turn;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Due to empty segments, we can get name-changes from A->A
|
||||
|
Loading…
Reference in New Issue
Block a user