diff options
author | Lev Dragunov <l.dragunov@corp.mail.ru> | 2015-10-22 17:57:55 +0300 |
---|---|---|
committer | Lev Dragunov <l.dragunov@corp.mail.ru> | 2015-10-22 17:57:55 +0300 |
commit | fc00ee4d41d772204ff60debc3bf5f798549e1ea (patch) | |
tree | 877ace14b947bce80f22407402340638e76885f2 /routing/cross_routing_context.cpp | |
parent | ffc2669bd47fdfc2cb919a5c38f1321456d6a78b (diff) |
Tree index for cross section index finding.
Diffstat (limited to 'routing/cross_routing_context.cpp')
-rw-r--r-- | routing/cross_routing_context.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/routing/cross_routing_context.cpp b/routing/cross_routing_context.cpp index 317b854631..3e9e439ea8 100644 --- a/routing/cross_routing_context.cpp +++ b/routing/cross_routing_context.cpp @@ -1,5 +1,6 @@ #include "routing/cross_routing_context.hpp" +#include "indexer/mercator.hpp" #include "indexer/point_to_int64.hpp" namespace routing @@ -65,7 +66,10 @@ void CrossRoutingContextReader::Load(Reader const & r) m_ingoingNodes.resize(size); for (auto & node : m_ingoingNodes) + { pos = node.Load(r, pos); + m_ingoingIndex.Add(node); + } r.Read(pos, &size, sizeof(size)); pos += sizeof(size); @@ -92,6 +96,18 @@ void CrossRoutingContextReader::Load(Reader const & r) } } +bool CrossRoutingContextReader::FindIngoingNodeByPoint(m2::PointD const & point, IngoingCrossNode & node) const +{ + bool found = false; + m_ingoingIndex.ForEachInRect(MercatorBounds::RectByCenterXYAndSizeInMeters(point, 5), + [&found, &node](IngoingCrossNode const & nd) + { + node = nd; + found = true; + }); + return found; +} + const string & CrossRoutingContextReader::GetOutgoingMwmName( OutgoingCrossNode const & outgoingNode) const { |