Adds generate_hints=true for dropping hints in response, resolves #1789.
Adds an `generate_hints=false` option which lets us skip generating and emitting hints for Waypoints. This can be used to decrease the response size when the user does not need hints anyway. We should think about making `false` the default here in v6.
This commit is contained in:
@@ -44,13 +44,19 @@ class BaseAPI
|
||||
return waypoints;
|
||||
}
|
||||
|
||||
// FIXME gcc 4.8 doesn't support for lambdas to call protected member functions
|
||||
// protected:
|
||||
protected:
|
||||
util::json::Object MakeWaypoint(const PhantomNode &phantom) const
|
||||
{
|
||||
return json::makeWaypoint(phantom.location,
|
||||
facade.GetNameForID(phantom.name_id),
|
||||
Hint{phantom, facade.GetCheckSum()});
|
||||
if (parameters.generate_hints)
|
||||
{
|
||||
return json::makeWaypoint(phantom.location,
|
||||
facade.GetNameForID(phantom.name_id),
|
||||
Hint{phantom, facade.GetCheckSum()});
|
||||
}
|
||||
else
|
||||
{
|
||||
return json::makeWaypoint(phantom.location, facade.GetNameForID(phantom.name_id));
|
||||
}
|
||||
}
|
||||
|
||||
const datafacade::BaseDataFacade &facade;
|
||||
|
||||
@@ -66,6 +66,9 @@ struct BaseParameters
|
||||
std::vector<boost::optional<double>> radiuses;
|
||||
std::vector<boost::optional<Bearing>> bearings;
|
||||
|
||||
// Adds hints to response which can be included in subsequent requests, see `hints` above.
|
||||
bool generate_hints = true;
|
||||
|
||||
// FIXME add validation for invalid bearing values
|
||||
bool IsValid() const
|
||||
{
|
||||
|
||||
@@ -89,6 +89,10 @@ util::json::Object makeRoute(const guidance::Route &route,
|
||||
util::json::Array legs,
|
||||
boost::optional<util::json::Value> geometry);
|
||||
|
||||
// Creates a Waypoint without Hint, see the Hint overload below
|
||||
util::json::Object makeWaypoint(const util::Coordinate location, std::string name);
|
||||
|
||||
// Creates a Waypoint with Hint, see the overload above when Hint is not needed
|
||||
util::json::Object
|
||||
makeWaypoint(const util::Coordinate location, std::string name, const Hint &hint);
|
||||
|
||||
|
||||
@@ -48,9 +48,7 @@ class MatchAPI final : public RouteAPI
|
||||
response.values["code"] = "Ok";
|
||||
}
|
||||
|
||||
// FIXME gcc 4.8 doesn't support for lambdas to call protected member functions
|
||||
// protected:
|
||||
|
||||
protected:
|
||||
// FIXME this logic is a little backwards. We should change the output format of the
|
||||
// map_matching
|
||||
// routing algorithm to be easier to consume here.
|
||||
|
||||
@@ -61,8 +61,7 @@ class RouteAPI : public BaseAPI
|
||||
response.values["code"] = "Ok";
|
||||
}
|
||||
|
||||
// FIXME gcc 4.8 doesn't support for lambdas to call protected member functions
|
||||
// protected:
|
||||
protected:
|
||||
template <typename ForwardIter>
|
||||
util::json::Value MakeGeometry(ForwardIter begin, ForwardIter end) const
|
||||
{
|
||||
|
||||
@@ -70,8 +70,7 @@ class TableAPI final : public BaseAPI
|
||||
response.values["code"] = "Ok";
|
||||
}
|
||||
|
||||
// FIXME gcc 4.8 doesn't support for lambdas to call protected member functions
|
||||
// protected:
|
||||
protected:
|
||||
virtual util::json::Array MakeWaypoints(const std::vector<PhantomNode> &phantoms) const
|
||||
{
|
||||
util::json::Array json_waypoints;
|
||||
|
||||
@@ -47,9 +47,7 @@ class TripAPI final : public RouteAPI
|
||||
response.values["code"] = "Ok";
|
||||
}
|
||||
|
||||
// FIXME gcc 4.8 doesn't support for lambdas to call protected member functions
|
||||
// protected:
|
||||
|
||||
protected:
|
||||
// FIXME this logic is a little backwards. We should change the output format of the
|
||||
// trip plugin routing algorithm to be easier to consume here.
|
||||
util::json::Array MakeWaypoints(const std::vector<std::vector<NodeID>> &sub_trips,
|
||||
|
||||
@@ -141,11 +141,18 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar<Iterator, Signature>
|
||||
add_hint, qi::_r1, qi::_1)] %
|
||||
';';
|
||||
|
||||
generate_hints_rule =
|
||||
qi::lit("generate_hints=") >
|
||||
qi::bool_[ph::bind(&engine::api::BaseParameters::generate_hints, qi::_r1) = qi::_1];
|
||||
|
||||
bearings_rule =
|
||||
qi::lit("bearings=") >
|
||||
(-(qi::short_ > ',' > qi::short_))[ph::bind(add_bearing, qi::_r1, qi::_1)] % ';';
|
||||
|
||||
base_rule = radiuses_rule(qi::_r1) | hints_rule(qi::_r1) | bearings_rule(qi::_r1);
|
||||
base_rule = radiuses_rule(qi::_r1) //
|
||||
| hints_rule(qi::_r1) //
|
||||
| bearings_rule(qi::_r1) //
|
||||
| generate_hints_rule(qi::_r1);
|
||||
}
|
||||
|
||||
protected:
|
||||
@@ -157,6 +164,8 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar<Iterator, Signature>
|
||||
qi::rule<Iterator, Signature> radiuses_rule;
|
||||
qi::rule<Iterator, Signature> hints_rule;
|
||||
|
||||
qi::rule<Iterator, Signature> generate_hints_rule;
|
||||
|
||||
qi::rule<Iterator, osrm::engine::Bearing()> bearing_rule;
|
||||
qi::rule<Iterator, osrm::util::Coordinate()> location_rule;
|
||||
qi::rule<Iterator, std::vector<osrm::util::Coordinate>()> polyline_rule;
|
||||
|
||||
Reference in New Issue
Block a user