#include "util/geojson_debug_policies.hpp" #include "util/coordinate.hpp" #include "util/geojson_debug_policy_toolkit.hpp" #include namespace osrm::util { //---------------------------------------------------------------- NodeIdVectorToLineString::NodeIdVectorToLineString( const std::vector &node_coordinates) : node_coordinates(node_coordinates) { } // converts a vector of node ids into a linestring geojson feature util::json::Object NodeIdVectorToLineString::operator()(const std::vector &node_ids, const std::optional &properties) const { util::json::Array coordinates; std::transform(node_ids.begin(), node_ids.end(), std::back_inserter(coordinates.values), NodeIdToCoordinate(node_coordinates)); return makeFeature("LineString", std::move(coordinates), properties); } //---------------------------------------------------------------- NodeIdVectorToMultiPoint::NodeIdVectorToMultiPoint( const std::vector &node_coordinates) : node_coordinates(node_coordinates) { } util::json::Object NodeIdVectorToMultiPoint::operator()(const std::vector &node_ids, const std::optional &properties) const { util::json::Array coordinates; std::transform(node_ids.begin(), node_ids.end(), std::back_inserter(coordinates.values), NodeIdToCoordinate(node_coordinates)); return makeFeature("MultiPoint", std::move(coordinates), properties); } //---------------------------------------------------------------- util::json::Object CoordinateVectorToMultiPoint::operator()(const std::vector &input_coordinates, const std::optional &properties) const { auto coordinates = makeJsonArray(input_coordinates); return makeFeature("MultiPoint", std::move(coordinates), properties); } //---------------------------------------------------------------- util::json::Object CoordinateVectorToLineString::operator()(const std::vector &input_coordinates, const std::optional &properties) const { auto coordinates = makeJsonArray(input_coordinates); return makeFeature("LineString", std::move(coordinates), properties); } } // namespace osrm::util