Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlga Khlopkova <o.khlopkova@corp.mail.ru>2020-10-22 22:29:25 +0300
committerAnatoliy V. Tomilov <tomilov@users.noreply.github.com>2020-10-29 13:51:50 +0300
commit834ee4c7ef8d1dfb41b71d6d0aec7b5ae1cd58aa (patch)
tree0df0a53f8e359759808ce18442ee7e13f7e3f061 /transit
parent696929d952a46ac8d8db3c855b22a1d9a8e77c72 (diff)
[transit] Fix edges direction for route rendering.
Diffstat (limited to 'transit')
-rw-r--r--transit/world_feed/world_feed.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/transit/world_feed/world_feed.cpp b/transit/world_feed/world_feed.cpp
index 8b9de3c060..ccfb303cbc 100644
--- a/transit/world_feed/world_feed.cpp
+++ b/transit/world_feed/world_feed.cpp
@@ -1784,6 +1784,18 @@ bool WorldFeed::PrepareEdgesInRegion(std::string const & region)
std::tie(edgeData.m_shapeLink.m_startIndex, edgeData.m_shapeLink.m_endIndex) =
FindPointsOnShape(shapePoints, it->second[0].front(), it->second[0].back());
}
+
+ CHECK(edgeData.m_shapeLink.m_startIndex != 0 || edgeData.m_shapeLink.m_endIndex != 0, (edgeData.m_shapeLink.m_shapeId));
+
+ auto const & pointOnShapeStart = shapePoints[edgeData.m_shapeLink.m_startIndex];
+ auto const & pointOnShapeEnd = shapePoints[edgeData.m_shapeLink.m_endIndex];
+
+ auto const & pointStopStart = m_stops.m_data.at(edgeId.m_fromStopId).m_point;
+
+ if (mercator::DistanceOnEarth(pointOnShapeStart, pointStopStart) > mercator::DistanceOnEarth(pointOnShapeEnd, pointStopStart))
+ {
+ std::swap(edgeData.m_shapeLink.m_startIndex, edgeData.m_shapeLink.m_endIndex);
+ }
}
return !edgeIdsInRegion.empty();