osrm-backend/include/engine/api/json_factory.hpp

83 lines
2.4 KiB
C++
Raw Normal View History

2016-01-28 10:28:44 -05:00
#ifndef ENGINE_RESPONSE_OBJECTS_HPP_
#define ENGINE_RESPONSE_OBJECTS_HPP_
2016-03-01 16:30:31 -05:00
#include "extractor/guidance/turn_instruction.hpp"
2016-01-28 10:28:44 -05:00
#include "extractor/travel_mode.hpp"
#include "engine/polyline_compressor.hpp"
#include "engine/guidance/route_step.hpp"
#include "engine/guidance/step_maneuver.hpp"
#include "engine/guidance/route_leg.hpp"
#include "engine/guidance/route.hpp"
#include "engine/guidance/leg_geometry.hpp"
2016-01-28 10:28:44 -05:00
#include "util/coordinate.hpp"
#include "util/json_container.hpp"
#include <boost/optional.hpp>
#include <algorithm>
2016-04-12 09:00:08 -04:00
#include <iterator>
#include <string>
2016-01-28 10:28:44 -05:00
#include <vector>
namespace osrm
{
namespace engine
{
struct Hint;
namespace api
{
namespace json
{
namespace detail
{
2016-03-01 16:30:31 -05:00
std::string instructionTypeToString(extractor::guidance::TurnType type);
std::string instructionModifierToString(extractor::guidance::DirectionModifier modifier);
2016-01-28 10:28:44 -05:00
2016-03-01 08:07:55 -05:00
util::json::Array coordinateToLonLat(const util::Coordinate coordinate);
2016-01-28 10:28:44 -05:00
std::string modeToString(const extractor::TravelMode mode);
} // namespace detail
template <typename ForwardIter> util::json::String makePolyline(ForwardIter begin, ForwardIter end)
{
return {encodePolyline(begin, end)};
2016-01-28 10:28:44 -05:00
}
template <typename ForwardIter>
util::json::Object makeGeoJSONLineString(ForwardIter begin, ForwardIter end)
{
util::json::Object geojson;
geojson.values["type"] = "LineString";
util::json::Array coordinates;
std::transform(begin, end, std::back_inserter(coordinates.values), &detail::coordinateToLonLat);
2016-01-28 10:28:44 -05:00
geojson.values["coordinates"] = std::move(coordinates);
return geojson;
}
util::json::Object makeStepManeuver(const guidance::StepManeuver &maneuver);
util::json::Object makeRouteStep(guidance::RouteStep step,
2016-01-28 10:28:44 -05:00
boost::optional<util::json::Value> geometry);
util::json::Object makeRoute(const guidance::Route &route,
util::json::Array legs,
2016-01-28 10:28:44 -05:00
boost::optional<util::json::Value> geometry);
util::json::Object
makeWaypoint(const util::Coordinate location, std::string name, const Hint &hint);
2016-01-28 10:28:44 -05:00
util::json::Object makeRouteLeg(guidance::RouteLeg leg, util::json::Array steps);
2016-01-28 10:28:44 -05:00
util::json::Array makeRouteLegs(std::vector<guidance::RouteLeg> legs,
2016-02-25 11:55:52 -05:00
std::vector<util::json::Value> step_geometries);
2016-01-28 10:28:44 -05:00
}
}
} // namespace engine
} // namespace osrm
#endif // ENGINE_GUIDANCE_API_RESPONSE_GENERATOR_HPP_