From 4ac8c3d44f4e7f53f959961cf73bfd051bdba7d7 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Fri, 29 May 2020 16:57:51 +0300 Subject: [PATCH] [guides on map] zoom out for suggested zoom is added --- map/guides_manager.cpp | 22 +++++++++++++++++----- map/guides_manager.hpp | 2 +- partners_api/guides_on_map_api.hpp | 6 +++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/map/guides_manager.cpp b/map/guides_manager.cpp index dbc9ed9f09..7f5909430f 100644 --- a/map/guides_manager.cpp +++ b/map/guides_manager.cpp @@ -126,7 +126,7 @@ void GuidesManager::SetEnabled(bool enabled) return; } - RequestGuides(); + RequestGuides(true /* suggestZoom */); } bool GuidesManager::IsEnabled() const @@ -146,7 +146,7 @@ void GuidesManager::ChangeState(GuidesState newState) TrackStatistics(); } -void GuidesManager::RequestGuides() +void GuidesManager::RequestGuides(bool suggestZoom) { if (!IsRequestParamsInitialized()) return; @@ -165,8 +165,8 @@ void GuidesManager::RequestGuides() auto const requestNumber = ++m_requestCounter; auto const id = m_api.GetGuidesOnMap( - corners, m_zoom, m_shownGuides.empty(), - [this, requestNumber](guides_on_map::GuidesOnMap const & guides) { + corners, m_zoom, suggestZoom, + [this, suggestZoom, requestNumber](guides_on_map::GuidesOnMap const & guides) { if (m_state == GuidesState::Disabled || requestNumber != m_requestCounter) return; @@ -176,7 +176,19 @@ void GuidesManager::RequestGuides() if (!m_guides.m_nodes.empty()) ChangeState(GuidesState::HasData); else - ChangeState(GuidesState::NoData); + { + if (suggestZoom && m_zoom > m_guides.m_suggestedZoom) + { + m_drapeEngine.SafeCall(&df::DrapeEngine::SetModelViewCenter, + m_lastShownViewport.GetGlobalRect().Center(), + m_guides.m_suggestedZoom, + true /* isAnim */, false /* trackVisibleViewport */); + } + else + { + ChangeState(GuidesState::NoData); + } + } UpdateGuidesMarks(); diff --git a/map/guides_manager.hpp b/map/guides_manager.hpp index b5d5d859f4..037e7e9363 100644 --- a/map/guides_manager.hpp +++ b/map/guides_manager.hpp @@ -115,7 +115,7 @@ public: private: void ChangeState(GuidesState newState); - void RequestGuides(); + void RequestGuides(bool suggestZoom = false); void Clear(); bool IsGuideDownloaded(std::string const & guideId) const; diff --git a/partners_api/guides_on_map_api.hpp b/partners_api/guides_on_map_api.hpp index a8e1adea28..6942496fa5 100644 --- a/partners_api/guides_on_map_api.hpp +++ b/partners_api/guides_on_map_api.hpp @@ -65,9 +65,9 @@ public: void SetDelegate(std::unique_ptr delegate); - base::TaskLoop::TaskId GetGuidesOnMap(m2::AnyRectD::Corners const & corners, uint8_t zoomLevel, - bool suggestZoom, GuidesOnMapCallback const & onSuccess, - OnError const & onError) const; + base::TaskLoop::TaskId GetGuidesOnMap(m2::AnyRectD::Corners const & corners, uint8_t zoomLevel, + bool suggestZoom, GuidesOnMapCallback const & onSuccess, + OnError const & onError) const; private: std::unique_ptr m_delegate;