Really place annotations in RouteLeg and not Route

This commit is contained in:
Patrick Niklaus
2016-05-27 00:39:46 +02:00
parent 451a0d9090
commit d6de2ca71c
5 changed files with 42 additions and 20 deletions
+2 -1
View File
@@ -85,7 +85,8 @@ makeWaypoint(const util::Coordinate location, std::string name, const Hint &hint
util::json::Object makeRouteLeg(guidance::RouteLeg leg, util::json::Array steps);
util::json::Array makeRouteLegs(std::vector<guidance::RouteLeg> legs,
std::vector<util::json::Value> step_geometries);
std::vector<util::json::Value> step_geometries,
std::vector<util::json::Object> annotations);
}
}
} // namespace engine
+11 -10
View File
@@ -176,16 +176,14 @@ class RouteAPI : public BaseAPI
});
}
auto result = json::makeRoute(route,
json::makeRouteLegs(std::move(legs), std::move(step_geometries)),
std::move(json_overview));
std::vector<util::json::Object> annotations;
if (parameters.annotations)
{
util::json::Array durations;
util::json::Array distances;
for (const auto idx : util::irange<std::size_t>(0UL, leg_geometries.size()))
{
util::json::Array durations;
util::json::Array distances;
auto &leg_geometry = leg_geometries[idx];
std::for_each(leg_geometry.annotations.begin(),
leg_geometry.annotations.end(),
@@ -193,15 +191,18 @@ class RouteAPI : public BaseAPI
durations.values.push_back(step.duration);
distances.values.push_back(step.distance);
});
util::json::Object annotation;
annotation.values["distance"] = std::move(distances);
annotation.values["duration"] = std::move(durations);
annotations.push_back(std::move(annotation));
}
util::json::Object details;
details.values["distance"] = std::move(distances);
details.values["duration"] = std::move(durations);
result.values["annotation"] = std::move(details);
}
auto result = json::makeRoute(route,
json::makeRouteLegs(std::move(legs), std::move(step_geometries), std::move(annotations)),
std::move(json_overview));
return result;
}