Adapt to feedback in #519

This commit is contained in:
Patrick Niklaus 2016-02-22 22:09:50 +01:00
parent fab343d0d3
commit 007e4a69c8
6 changed files with 28 additions and 23 deletions

View File

@ -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;
});
} }
}; };

View File

@ -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);

View File

@ -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};
} }
} }

View File

@ -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;

View File

@ -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;
}; };

View File

@ -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;
} }