[guides on map] Review fix.

This commit is contained in:
Daria Volvenkova 2020-06-04 16:39:54 +03:00 committed by Vladimir Byko-Ianko
parent edf780daa7
commit 9b8991dd10
3 changed files with 25 additions and 16 deletions

View file

@ -1490,8 +1490,8 @@ void FrontendRenderer::RenderScene(ScreenBase const & modelView, bool activeFram
RenderUserMarksLayer(modelView, DepthLayer::RoutingBottomMarkLayer);
RenderUserMarksLayer(modelView, DepthLayer::RoutingMarkLayer);
RenderUserMarksLayer(modelView, DepthLayer::GuidesBottomMarkLayer);
RenderSearchMarksLayer(modelView, DepthLayer::GuidesMarkLayer);
RenderSearchMarksLayer(modelView, DepthLayer::SearchMarkLayer);
RenderNonDisplacedUserMarksLayer(modelView, DepthLayer::GuidesMarkLayer);
RenderNonDisplacedUserMarksLayer(modelView, DepthLayer::SearchMarkLayer);
}
if (!HasRouteData())
@ -1686,7 +1686,8 @@ void FrontendRenderer::RenderUserMarksLayer(ScreenBase const & modelView, DepthL
RenderSingleGroup(m_context, modelView, make_ref(group));
}
void FrontendRenderer::RenderSearchMarksLayer(ScreenBase const & modelView, DepthLayer layerId)
void FrontendRenderer::RenderNonDisplacedUserMarksLayer(ScreenBase const & modelView,
DepthLayer layerId)
{
auto & layer = m_layers[static_cast<size_t>(layerId)];
layer.Sort(nullptr);

View file

@ -183,10 +183,10 @@ private:
void RenderOverlayLayer(ScreenBase const & modelView);
void RenderNavigationOverlayLayer(ScreenBase const & modelView);
void RenderUserMarksLayer(ScreenBase const & modelView, DepthLayer layerId);
void RenderNonDisplacedUserMarksLayer(ScreenBase const & modelView, DepthLayer layerId);
void RenderTransitSchemeLayer(ScreenBase const & modelView);
void RenderTrafficLayer(ScreenBase const & modelView);
void RenderRouteLayer(ScreenBase const & modelView);
void RenderSearchMarksLayer(ScreenBase const & modelView, DepthLayer layerId);
void RenderTransitBackground();
void RenderEmptyFrame();

View file

@ -26,6 +26,24 @@ auto constexpr kScaleEps = 0.1115;
auto constexpr kMinViewportsIntersectionScore = 0.9;
auto constexpr kRequestingRectSidesIncrease = 0.3;
std::vector<std::pair<m2::PointD, size_t>> SortGuidesByPositions(
std::vector<guides_on_map::GuidesNode> const & guides, ScreenBase const & screen)
{
std::vector<std::pair<m2::PointD, size_t>> sortedGuides;
sortedGuides.reserve(guides.size());
for (size_t i = 0; i < guides.size(); ++i)
sortedGuides.emplace_back(screen.GtoP(guides[i].m_point), i);
std::sort(sortedGuides.begin(), sortedGuides.end(),
[](auto const & lhs, auto const & rhs)
{
if (base::AlmostEqualAbs(lhs.first.y, rhs.first.y, 1e-2))
return lhs.first.x < rhs.first.x;
return lhs.first.y < rhs.first.y;
});
return sortedGuides;
}
} // namespace
GuidesManager::GuidesManager(CloseGalleryFn && closeGalleryFn)
@ -339,20 +357,10 @@ void GuidesManager::UpdateGuidesMarks()
es.ClearGroup(UserMark::GUIDE_CLUSTER);
es.ClearGroup(UserMark::GUIDE);
std::vector<std::pair<m2::PointD, size_t>> sortedGuides;
sortedGuides.reserve(m_guides.m_nodes.size());
for (size_t i = 0; i < m_guides.m_nodes.size(); ++i)
sortedGuides.emplace_back(m_screen.GtoP(m_guides.m_nodes[i].m_point), i);
std::sort(sortedGuides.begin(), sortedGuides.end(),
[](std::pair<m2::PointD, size_t> const & lhs, std::pair<m2::PointD, size_t> const & rhs)
{
if (base::AlmostEqualAbs(lhs.first.y, rhs.first.y, 1e-2))
return lhs.first.x < rhs.first.x;
return lhs.first.y < rhs.first.y;
});
auto const sortedGuides = SortGuidesByPositions(m_guides.m_nodes, m_screen);
float depth = 0.0f;
for (auto & guidePos : sortedGuides)
for (auto const & guidePos : sortedGuides)
{
auto const & guide = m_guides.m_nodes[guidePos.second];
if (guide.m_sightsCount + guide.m_outdoorCount > 1)