don't emit invalid on sliproads with incompatible modes

This commit is contained in:
Moritz Kobitzsch 2016-10-11 10:32:55 +02:00
parent 7cbb1807e7
commit 6cf99c886f
3 changed files with 44 additions and 1 deletions

View File

@ -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

View 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 |

View File

@ -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