Use common function for clamping logic for all user-visible bearings.

This commit is contained in:
Daniel Patterson 2016-12-13 10:44:11 -08:00 committed by Patrick Niklaus
parent 67ce19cb14
commit a51ef67db8
2 changed files with 11 additions and 7 deletions

View File

@ -40,6 +40,11 @@ util::json::Array coordinateToLonLat(const util::Coordinate coordinate);
std::string modeToString(const extractor::TravelMode mode);
/**
* Ensures that a bearing value is a whole number, and clamped to the range 0-359
*/
inline double roundAndClampBearing(double bearing) { return std::fmod(std::round(bearing), 360); }
} // namespace detail
template <unsigned POLYLINE_PRECISION, typename ForwardIter>

View File

@ -192,8 +192,8 @@ util::json::Object makeStepManeuver(const guidance::StepManeuver &maneuver)
detail::instructionModifierToString(maneuver.instruction.direction_modifier);
step_maneuver.values["location"] = detail::coordinateToLonLat(maneuver.location);
step_maneuver.values["bearing_before"] = std::fmod(std::round(maneuver.bearing_before), 360);
step_maneuver.values["bearing_after"] = std::fmod(std::round(maneuver.bearing_after), 360);
step_maneuver.values["bearing_before"] = detail::roundAndClampBearing(maneuver.bearing_before);
step_maneuver.values["bearing_after"] = detail::roundAndClampBearing(maneuver.bearing_after);
if (maneuver.exit != 0)
step_maneuver.values["exit"] = maneuver.exit;
@ -207,11 +207,10 @@ util::json::Object makeIntersection(const guidance::Intersection &intersection)
util::json::Array entry;
bearings.values.reserve(intersection.bearings.size());
std::transform(
intersection.bearings.begin(),
intersection.bearings.end(),
std::back_inserter(bearings.values),
[](const double bearing) -> util::json::Value { BOOST_ASSERT(bearing != 360.0); return std::fmod(bearing, 360); });
std::transform(intersection.bearings.begin(),
intersection.bearings.end(),
std::back_inserter(bearings.values),
detail::roundAndClampBearing);
entry.values.reserve(intersection.entry.size());
std::transform(intersection.entry.begin(),