Make PolylineFormatter's encodedAsJSON and unencodedAsJSON free standing functions

This commit is contained in:
Daniel J. Hofmann 2016-01-08 13:15:09 +01:00 committed by Patrick Niklaus
parent c65dd16460
commit 0627c3443d
3 changed files with 10 additions and 18 deletions

View File

@ -243,9 +243,9 @@ util::json::Value ApiResponseGenerator<DataFacadeT>::GetGeometry(const bool retu
const Segments &segments) const const Segments &segments) const
{ {
if (return_encoded) if (return_encoded)
return PolylineFormatter().printEncodedString(segments.Get()); return polylineEncodeAsJSON(segments.Get());
else else
return PolylineFormatter().printUnencodedString(segments.Get()); return polylineUnencodedAsJSON(segments.Get());
} }
template <typename DataFacadeT> template <typename DataFacadeT>

View File

@ -1,6 +1,7 @@
#ifndef POLYLINE_FORMATTER_HPP #ifndef POLYLINE_FORMATTER_HPP
#define POLYLINE_FORMATTER_HPP #define POLYLINE_FORMATTER_HPP
#include "engine/segment_information.hpp"
#include "osrm/json_container.hpp" #include "osrm/json_container.hpp"
#include <string> #include <string>
@ -11,14 +12,12 @@ namespace osrm
namespace engine namespace engine
{ {
struct SegmentInformation; // Encodes geometry into polyline format, returning an encoded JSON object
// See: https://developers.google.com/maps/documentation/utilities/polylinealgorithm
util::json::String polylineEncodeAsJSON(const std::vector<SegmentInformation> &geometry);
struct PolylineFormatter // Does not encode the geometry in polyline format, instead returning an unencoded JSON object
{ util::json::Array polylineUnencodedAsJSON(const std::vector<SegmentInformation> &geometry);
util::json::String printEncodedString(const std::vector<SegmentInformation> &polyline) const;
util::json::Array printUnencodedString(const std::vector<SegmentInformation> &polyline) const;
};
} }
} }

View File

@ -1,25 +1,18 @@
#include "engine/polyline_formatter.hpp" #include "engine/polyline_formatter.hpp"
#include "engine/polyline_compressor.hpp" #include "engine/polyline_compressor.hpp"
#include "engine/segment_information.hpp"
#include "osrm/coordinate.hpp" #include "osrm/coordinate.hpp"
#include <vector>
namespace osrm namespace osrm
{ {
namespace engine namespace engine
{ {
util::json::String util::json::String polylineEncodeAsJSON(const std::vector<SegmentInformation> &polyline)
PolylineFormatter::printEncodedString(const std::vector<SegmentInformation> &polyline) const
{ {
return util::json::String(polylineEncode(polyline)); return util::json::String(polylineEncode(polyline));
} }
util::json::Array util::json::Array polylineUnencodedAsJSON(const std::vector<SegmentInformation> &polyline)
PolylineFormatter::printUnencodedString(const std::vector<SegmentInformation> &polyline) const
{ {
util::json::Array json_geometry_array; util::json::Array json_geometry_array;
for (const auto &segment : polyline) for (const auto &segment : polyline)