diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2016-11-23 16:18:28 +0300 |
---|---|---|
committer | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2016-11-23 16:21:18 +0300 |
commit | 6e81cdf59b2417264983399f49d3b4ad566ed2c5 (patch) | |
tree | 03a1b59fde26011c4d9e273eb952239a5316fb86 /drape_frontend | |
parent | f629da30d28732f748927bc8a0e42b4d7baba150 (diff) |
Check mwm on left-hand traffic.
Diffstat (limited to 'drape_frontend')
-rw-r--r-- | drape_frontend/rule_drawer.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drape_frontend/rule_drawer.cpp b/drape_frontend/rule_drawer.cpp index 3ada0a3f72..69c21481de 100644 --- a/drape_frontend/rule_drawer.cpp +++ b/drape_frontend/rule_drawer.cpp @@ -47,6 +47,8 @@ void ExtractTrafficGeometry(FeatureType const & f, df::RoadClass const & roadCla if (polyline.GetSize() < 2) return; + bool const isLeftHandTraffic = f.GetID().m_mwmId.GetInfo()->GetRegionData().Get(feature::RegionData::RD_DRIVING) == "l"; + static vector<uint8_t> directions = {traffic::TrafficInfo::RoadSegmentId::kForwardDirection, traffic::TrafficInfo::RoadSegmentId::kReverseDirection}; auto & segments = geometry[f.GetID().m_mwmId]; @@ -56,7 +58,10 @@ void ExtractTrafficGeometry(FeatureType const & f, df::RoadClass const & roadCla for (size_t dirIndex = 0; dirIndex < directions.size(); ++dirIndex) { auto const sid = traffic::TrafficInfo::RoadSegmentId(f.GetID().m_index, segmentIndex, directions[dirIndex]); - bool const isReversed = (directions[dirIndex] == traffic::TrafficInfo::RoadSegmentId::kReverseDirection); + bool isReversed = (directions[dirIndex] == traffic::TrafficInfo::RoadSegmentId::kReverseDirection); + if (isLeftHandTraffic) + isReversed = !isReversed; + segments.emplace_back(sid, df::TrafficSegmentGeometry(polyline.ExtractSegment(segmentIndex, isReversed), roadClass)); } } |