don't assign exit in arrive when ending in roundabout

This commit is contained in:
Moritz Kobitzsch 2016-12-21 09:33:15 +01:00
parent 3b2ca720a8
commit dff7fe214b
4 changed files with 11 additions and 3 deletions

View File

@ -1,3 +1,8 @@
# 5.5.2
- Changes from 5.5.1
- Bugfixes
- Fix #3475 removed an invalid `exit` field from the `arrive` maneuver
# 5.5.1 # 5.5.1
- Changes from 5.5.0 - Changes from 5.5.0
- API: - API:

View File

@ -259,6 +259,8 @@ inline std::vector<RouteStep> assembleSteps(const datafacade::BaseDataFacade &fa
BOOST_ASSERT(steps.back().intersections.front().lanes.first_lane_from_the_right == BOOST_ASSERT(steps.back().intersections.front().lanes.first_lane_from_the_right ==
INVALID_LANEID); INVALID_LANEID);
BOOST_ASSERT(steps.back().intersections.front().lane_description.empty()); BOOST_ASSERT(steps.back().intersections.front().lane_description.empty());
// depart and arrive need to be trivial
BOOST_ASSERT(steps.front().maneuver.exit == 0 && steps.back().maneuver.exit == 0);
return steps; return steps;
} }

View File

@ -29,6 +29,7 @@ inline void print(const engine::guidance::RouteStep &step)
<< " " << " "
<< " Duration: " << step.duration << " Distance: " << step.distance << " Duration: " << step.duration << " Distance: " << step.distance
<< " Geometry: " << step.geometry_begin << " " << step.geometry_end << " Geometry: " << step.geometry_begin << " " << step.geometry_end
<< " Exit: " << step.maneuver.exit
<< "\n\tIntersections: " << step.intersections.size() << " ["; << "\n\tIntersections: " << step.intersections.size() << " [";
for (const auto &intersection : step.intersections) for (const auto &intersection : step.intersections)

View File

@ -147,10 +147,9 @@ void fixFinalRoundabout(std::vector<RouteStep> &steps)
--propagation_index) --propagation_index)
{ {
auto &propagation_step = steps[propagation_index]; auto &propagation_step = steps[propagation_index];
propagation_step.maneuver.exit = 0;
if (entersRoundabout(propagation_step.maneuver.instruction)) if (entersRoundabout(propagation_step.maneuver.instruction))
{ {
propagation_step.maneuver.exit = 0;
// remember the current name as rotary name in tha case we end in a rotary // remember the current name as rotary name in tha case we end in a rotary
if (propagation_step.maneuver.instruction.type == TurnType::EnterRotary || if (propagation_step.maneuver.instruction.type == TurnType::EnterRotary ||
propagation_step.maneuver.instruction.type == TurnType::EnterRotaryAtExit) propagation_step.maneuver.instruction.type == TurnType::EnterRotaryAtExit)
@ -158,12 +157,13 @@ void fixFinalRoundabout(std::vector<RouteStep> &steps)
propagation_step.rotary_name = propagation_step.name; propagation_step.rotary_name = propagation_step.name;
propagation_step.rotary_pronunciation = propagation_step.pronunciation; propagation_step.rotary_pronunciation = propagation_step.pronunciation;
} }
else if (propagation_step.maneuver.instruction.type == else if (propagation_step.maneuver.instruction.type ==
TurnType::EnterRoundaboutIntersection || TurnType::EnterRoundaboutIntersection ||
propagation_step.maneuver.instruction.type == propagation_step.maneuver.instruction.type ==
TurnType::EnterRoundaboutIntersectionAtExit) TurnType::EnterRoundaboutIntersectionAtExit)
{
propagation_step.maneuver.instruction.type = TurnType::EnterRoundabout; propagation_step.maneuver.instruction.type = TurnType::EnterRoundabout;
}
return; return;
} }