Adapt to feedback in #519
This commit is contained in:
parent
fab343d0d3
commit
007e4a69c8
@ -7,6 +7,7 @@
|
|||||||
#include <boost/optional.hpp>
|
#include <boost/optional.hpp>
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
namespace osrm
|
namespace osrm
|
||||||
{
|
{
|
||||||
@ -32,7 +33,19 @@ struct BaseParameters
|
|||||||
{
|
{
|
||||||
return (hints.empty() || hints.size() == coordinates.size()) &&
|
return (hints.empty() || hints.size() == coordinates.size()) &&
|
||||||
(bearings.empty() || bearings.size() == coordinates.size()) &&
|
(bearings.empty() || bearings.size() == coordinates.size()) &&
|
||||||
(radiuses.empty() || radiuses.size() == coordinates.size());
|
(radiuses.empty() || radiuses.size() == coordinates.size()) &&
|
||||||
|
std::all_of(bearings.begin(), bearings.end(),
|
||||||
|
[](const boost::optional<Bearing> bearing_and_range)
|
||||||
|
{
|
||||||
|
if (bearing_and_range)
|
||||||
|
{
|
||||||
|
return bearing_and_range->bearing >= 0 &&
|
||||||
|
bearing_and_range->bearing <= 360 &&
|
||||||
|
bearing_and_range->range >= 0 &&
|
||||||
|
bearing_and_range->range <= 180;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ util::json::Object makeRoute(const guidance::Route &route,
|
|||||||
boost::optional<util::json::Value> geometry);
|
boost::optional<util::json::Value> geometry);
|
||||||
|
|
||||||
util::json::Object
|
util::json::Object
|
||||||
makeWaypoint(const FixedPointCoordinate location, std::string &&way_name, const Hint &hint);
|
makeWaypoint(const FixedPointCoordinate location, std::string &&name, const Hint &hint);
|
||||||
|
|
||||||
util::json::Object makeRouteLeg(guidance::RouteLeg &&leg, util::json::Array &&steps);
|
util::json::Object makeRouteLeg(guidance::RouteLeg &&leg, util::json::Array &&steps);
|
||||||
|
|
||||||
|
@ -35,12 +35,12 @@ inline StepManeuver stepManeuverFromGeometry(const extractor::TurnInstruction in
|
|||||||
const auto turn_coordinate = leg_geometry.locations[turn_index];
|
const auto turn_coordinate = leg_geometry.locations[turn_index];
|
||||||
const auto post_turn_coordinate = leg_geometry.locations[turn_index + 1];
|
const auto post_turn_coordinate = leg_geometry.locations[turn_index + 1];
|
||||||
|
|
||||||
const double pre_turn_heading =
|
const double pre_turn_bearing =
|
||||||
util::coordinate_calculation::bearing(pre_turn_coordinate, turn_coordinate);
|
util::coordinate_calculation::bearing(pre_turn_coordinate, turn_coordinate);
|
||||||
const double post_turn_heading =
|
const double post_turn_bearing =
|
||||||
util::coordinate_calculation::bearing(turn_coordinate, post_turn_coordinate);
|
util::coordinate_calculation::bearing(turn_coordinate, post_turn_coordinate);
|
||||||
|
|
||||||
return StepManeuver{turn_coordinate, pre_turn_heading, post_turn_heading, instruction};
|
return StepManeuver{turn_coordinate, pre_turn_bearing, post_turn_bearing, instruction};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ namespace guidance
|
|||||||
struct RouteStep
|
struct RouteStep
|
||||||
{
|
{
|
||||||
unsigned name_id;
|
unsigned name_id;
|
||||||
std::string way_name;
|
std::string name;
|
||||||
double duration;
|
double duration;
|
||||||
double distance;
|
double distance;
|
||||||
extractor::TravelMode mode;
|
extractor::TravelMode mode;
|
||||||
|
@ -14,8 +14,8 @@ namespace guidance
|
|||||||
struct StepManeuver
|
struct StepManeuver
|
||||||
{
|
{
|
||||||
util::FixedPointCoordinate location;
|
util::FixedPointCoordinate location;
|
||||||
double heading_before;
|
double bearing_before;
|
||||||
double heading_after;
|
double bearing_after;
|
||||||
extractor::TurnInstruction instruction;
|
extractor::TurnInstruction instruction;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -101,14 +101,6 @@ util::json::Array coordinateToLonLat(const FixedPointCoordinate &coordinate)
|
|||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
util::json::Array coordinateToLatLon(const FixedPointCoordinate &coordinate)
|
|
||||||
{
|
|
||||||
util::json::Array array;
|
|
||||||
array.values.push_back(coordinate.lat / COORDINATE_PRECISION);
|
|
||||||
array.values.push_back(coordinate.lon / COORDINATE_PRECISION);
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME this actually needs to be configurable from the profiles
|
// FIXME this actually needs to be configurable from the profiles
|
||||||
std::string modeToString(const extractor::TravelMode mode)
|
std::string modeToString(const extractor::TravelMode mode)
|
||||||
{
|
{
|
||||||
@ -134,9 +126,9 @@ util::json::Object makeStepManeuver(const guidance::StepManeuver &maneuver)
|
|||||||
{
|
{
|
||||||
util::json::Object step_maneuver;
|
util::json::Object step_maneuver;
|
||||||
step_maneuver.values["type"] = detail::instructionToString(maneuver.instruction);
|
step_maneuver.values["type"] = detail::instructionToString(maneuver.instruction);
|
||||||
step_maneuver.values["location"] = detail::coordinateToLatLon(maneuver.location);
|
step_maneuver.values["location"] = detail::coordinateToLonLat(maneuver.location);
|
||||||
step_maneuver.values["heading_before"] = maneuver.heading_before;
|
step_maneuver.values["bearing_before"] = maneuver.bearing_before;
|
||||||
step_maneuver.values["heading_after"] = maneuver.heading_after;
|
step_maneuver.values["bearing_after"] = maneuver.bearing_after;
|
||||||
return step_maneuver;
|
return step_maneuver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,7 +138,7 @@ util::json::Object makeRouteStep(guidance::RouteStep &&step,
|
|||||||
util::json::Object route_step;
|
util::json::Object route_step;
|
||||||
route_step.values["distance"] = step.distance;
|
route_step.values["distance"] = step.distance;
|
||||||
route_step.values["duration"] = step.duration;
|
route_step.values["duration"] = step.duration;
|
||||||
route_step.values["way_name"] = std::move(step.way_name);
|
route_step.values["name"] = std::move(step.name);
|
||||||
route_step.values["mode"] = detail::modeToString(step.mode);
|
route_step.values["mode"] = detail::modeToString(step.mode);
|
||||||
route_step.values["maneuver"] = makeStepManeuver(step.maneuver);
|
route_step.values["maneuver"] = makeStepManeuver(step.maneuver);
|
||||||
if (geometry)
|
if (geometry)
|
||||||
@ -172,11 +164,11 @@ util::json::Object makeRoute(const guidance::Route &route,
|
|||||||
}
|
}
|
||||||
|
|
||||||
util::json::Object
|
util::json::Object
|
||||||
makeWaypoint(const FixedPointCoordinate location, std::string &&way_name, const Hint &hint)
|
makeWaypoint(const FixedPointCoordinate location, std::string &&name, const Hint &hint)
|
||||||
{
|
{
|
||||||
util::json::Object waypoint;
|
util::json::Object waypoint;
|
||||||
waypoint.values["location"] = detail::coordinateToLatLon(location);
|
waypoint.values["location"] = detail::coordinateToLonLat(location);
|
||||||
waypoint.values["way_name"] = std::move(way_name);
|
waypoint.values["name"] = std::move(name);
|
||||||
waypoint.values["hint"] = hint.ToBase64();
|
waypoint.values["hint"] = hint.ToBase64();
|
||||||
return waypoint;
|
return waypoint;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user