diff --git a/map/framework.cpp b/map/framework.cpp index 523a2ac4de..2ff1c88605 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -1452,7 +1452,14 @@ bool Framework::SetViewportByURL(string const & url, url_api::Request & request) } else if (strings::StartsWith(url, "mapswithme://") || strings::StartsWith(url, "mwm://")) { - m_ParsedMapApi.SetUriAndParse(url); + if (m_ParsedMapApi.SetUriAndParse(url)) + { + m2::RectD z = GetMapApiRect(); + //Can do better consider nav bar size + m2::RectD view(MercatorBounds::LonToX(z.minX()), MercatorBounds::LatToY(z.minY()), + MercatorBounds::LonToX(z.maxX()), MercatorBounds::LatToY(z.maxY())); + ShowRectExVisibleScale(view); + } } return false; } diff --git a/map/framework.hpp b/map/framework.hpp index 13e8caffdc..04b7e5ad8c 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -466,4 +466,5 @@ public: string const & GetMapApiAppTitle() const { return m_ParsedMapApi.GetAppTitle(); } string const & GetMapApiBackUrl() const { return m_ParsedMapApi.GetGlobalBackUrl(); } m2::RectD GetMapApiRect() const { return m_ParsedMapApi.GetRect(); } + bool IsValidMapApi() const { return m_ParsedMapApi.IsValid(); } }; diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index f9dd4020f7..dae17b5bd6 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -32,10 +32,10 @@ ParsedMapApi::ParsedMapApi(Uri const & uri):m_id(0) } } -void ParsedMapApi::SetUriAndParse(string const & url) +bool ParsedMapApi::SetUriAndParse(string const & url) { Clear(); - Parse(url_scheme::Uri(url)); + return Parse(url_scheme::Uri(url)); } bool ParsedMapApi::IsValid() const diff --git a/map/mwm_url.hpp b/map/mwm_url.hpp index a0bfeb9c80..45976a4ae9 100644 --- a/map/mwm_url.hpp +++ b/map/mwm_url.hpp @@ -20,7 +20,7 @@ class ParsedMapApi public: ParsedMapApi(Uri const & uri); ParsedMapApi(); - void SetUriAndParse(string const & url); + bool SetUriAndParse(string const & url); bool IsValid() const; vector const & GetPoints() const { return m_points; } string const & GetGlobalBackUrl() const { return m_globalBackUrl; }