diff options
author | Constantin Shalnev <c.shalnev@corp.mail.ru> | 2015-07-30 11:04:23 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 03:06:52 +0300 |
commit | 3eea7aee093246f7be3544ae16f1202eef481a91 (patch) | |
tree | 1e291d5dd0b6b9bb48106e3ee39517e42b052c03 /routing/features_road_graph.cpp | |
parent | 948ec1575782df3db47e03276e8a57405e4e0438 (diff) |
Use smaller spatial extent to lookup connected features
Diffstat (limited to 'routing/features_road_graph.cpp')
-rw-r--r-- | routing/features_road_graph.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/routing/features_road_graph.cpp b/routing/features_road_graph.cpp index fa7e835acf..65e5b039bc 100644 --- a/routing/features_road_graph.cpp +++ b/routing/features_road_graph.cpp @@ -20,7 +20,7 @@ namespace { uint32_t constexpr kPowOfTwoForFeatureCacheSize = 10; // cache contains 2 ^ kPowOfTwoForFeatureCacheSize elements -double constexpr kReadCrossEpsilon = 1.0E-4; +double constexpr kMwmRoadCrossingRadiusMeters = 2.0; double constexpr kMwmCrossingNodeEqualityRadiusMeters = 100.0; @@ -162,10 +162,8 @@ void FeaturesRoadGraph::ForEachFeatureClosestToCross(m2::PointD const & cross, CrossEdgesLoader & edgesLoader) const { CrossFeaturesLoader featuresLoader(*this, edgesLoader); - m_index.ForEachInRect(featuresLoader, - m2::RectD(cross.x - kReadCrossEpsilon, cross.y - kReadCrossEpsilon, - cross.x + kReadCrossEpsilon, cross.y + kReadCrossEpsilon), - GetStreetReadScale()); + m2::RectD const rect = MercatorBounds::RectByCenterXYAndSizeInMeters(cross, kMwmRoadCrossingRadiusMeters); + m_index.ForEachInRect(featuresLoader, rect, GetStreetReadScale()); } void FeaturesRoadGraph::FindClosestEdges(m2::PointD const & point, uint32_t count, @@ -228,10 +226,8 @@ void FeaturesRoadGraph::GetJunctionTypes(Junction const & junction, feature::Typ types = typesHolder; }; - m_index.ForEachInRect(f, - m2::RectD(cross.x - kReadCrossEpsilon, cross.y - kReadCrossEpsilon, - cross.x + kReadCrossEpsilon, cross.y + kReadCrossEpsilon), - GetStreetReadScale()); + m2::RectD const rect = MercatorBounds::RectByCenterXYAndSizeInMeters(cross, kMwmRoadCrossingRadiusMeters); + m_index.ForEachInRect(f, rect, GetStreetReadScale()); } void FeaturesRoadGraph::ClearState() |