Route points selection fixed.

This commit is contained in:
Daria Volvenkova 2017-07-06 18:59:35 +03:00 committed by r.kuznetsov
parent c365a06af2
commit eccdf95e5e
2 changed files with 15 additions and 4 deletions

View file

@ -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; }

View file

@ -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;
}