only adjust waypoint index in tracepoints when waypoints parameter is specified

This commit is contained in:
karenzshea 2018-01-15 15:55:24 +01:00 committed by Michael Krasnyk
parent 6eb4247484
commit cdad265d49

View File

@ -87,9 +87,9 @@ class MatchAPI final : public RouteAPI
0u, static_cast<unsigned>(sub_matchings[sub_matching_index].indices.size()))) 0u, static_cast<unsigned>(sub_matchings[sub_matching_index].indices.size())))
{ {
// tidied_to_original: index of the input coordinate that a tidied coordinate // tidied_to_original: index of the input coordinate that a tidied coordinate
// corresponds to // corresponds to.
// sub_matching indices: index of the coordinate passed to map matching plugin that // sub_matching indices: index of the coordinate passed to map matching plugin that
// a matched node corresponds to // a matched node corresponds to.
trace_idx_to_matching_idx[tidy_result trace_idx_to_matching_idx[tidy_result
.tidied_to_original[sub_matchings[sub_matching_index] .tidied_to_original[sub_matchings[sub_matching_index]
.indices[point_index]]] = .indices[point_index]]] =
@ -115,17 +115,22 @@ class MatchAPI final : public RouteAPI
sub_matchings[matching_index.sub_matching_index].nodes[matching_index.point_index]; sub_matchings[matching_index.sub_matching_index].nodes[matching_index.point_index];
auto waypoint = BaseAPI::MakeWaypoint(phantom); auto waypoint = BaseAPI::MakeWaypoint(phantom);
waypoint.values["matchings_index"] = matching_index.sub_matching_index; waypoint.values["matchings_index"] = matching_index.sub_matching_index;
waypoint.values["waypoint_index"] = matching_index.point_index;
waypoint.values["alternatives_count"] = waypoint.values["alternatives_count"] =
sub_matchings[matching_index.sub_matching_index] sub_matchings[matching_index.sub_matching_index]
.alternatives_count[matching_index.point_index]; .alternatives_count[matching_index.point_index];
if (tidy_result.was_waypoint[trace_index]) // waypoint indices need to be adjusted if route legs were collapsed
if (!parameters.waypoints.empty())
{ {
waypoint.values["waypoint_index"] = was_waypoint_idx; if (tidy_result.was_waypoint[trace_index])
was_waypoint_idx++; {
} waypoint.values["waypoint_index"] = was_waypoint_idx;
else was_waypoint_idx++;
{ }
waypoint.values["waypoint_index"] = util::json::Null(); else
{
waypoint.values["waypoint_index"] = util::json::Null();
}
} }
waypoints.values.push_back(std::move(waypoint)); waypoints.values.push_back(std::move(waypoint));
} }