From eccdf95e5edb360447d7793b8438236d71bc1bab Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Thu, 6 Jul 2017 18:59:35 +0300 Subject: [PATCH] Route points selection fixed. --- map/bookmark_manager.cpp | 6 +++++- map/framework.cpp | 13 ++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp index 0e34ffa526..2ba32f4237 100644 --- a/map/bookmark_manager.cpp +++ b/map/bookmark_manager.cpp @@ -208,7 +208,11 @@ namespace { m2::AnyRectD const & rect = m_rectHolder(container->GetType()); if (UserMark const * p = container->FindMarkInRect(rect, m_d)) - m_mark = p; + { + double const kEps = 1e-5; + if (m_mark == nullptr || !p->GetPivot().EqualDxDy(m_mark->GetPivot(), kEps)) + m_mark = p; + } } UserMark const * GetFindedMark() const { return m_mark; } diff --git a/map/framework.cpp b/map/framework.cpp index b9a24fa2b6..55c147e363 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -2520,11 +2520,18 @@ UserMark const * Framework::FindUserMarkInTapPosition(m2::PointD const & pt) con double const pxHeight = touchRadius + bmAddition; m_currentModelView.GetTouchRect(pt + m2::PointD(0, bmAddition), pxWidth, pxHeight, bmSearchRect); + + m2::AnyRectD routingRect; + m_currentModelView.GetTouchRect(pt, touchRadius + bmAddition, routingRect); + UserMark const * mark = m_bmManager.FindNearestUserMark( - [&rect, &bmSearchRect](UserMarkType type) -> m2::AnyRectD const & + [&rect, &bmSearchRect, &routingRect](UserMarkType type) -> m2::AnyRectD const & { - return (type == UserMarkType::BOOKMARK_MARK || - type == UserMarkType::ROUTING_MARK) ? bmSearchRect : rect; + if (type == UserMarkType::BOOKMARK_MARK) + return bmSearchRect; + if (type == UserMarkType::ROUTING_MARK) + return routingRect; + return rect; }); return mark; }