diff --git a/drape_frontend/my_position_controller.cpp b/drape_frontend/my_position_controller.cpp index 1d12b99ee2..485db8dc6a 100644 --- a/drape_frontend/my_position_controller.cpp +++ b/drape_frontend/my_position_controller.cpp @@ -101,6 +101,7 @@ MyPositionController::MyPositionController(location::EMyPositionMode initMode, , m_oldPosition(m2::PointD::Zero()) , m_oldDrawDirection(0.0) , m_lastGPSBearing(false) + , m_lastLocationTimestamp(0.0) , m_positionYOffset(kPositionOffsetY) , m_isVisible(false) , m_isDirtyViewport(false) @@ -327,7 +328,13 @@ void MyPositionController::OnLocationUpdate(location::GpsInfo const & info, bool m_isPositionAssigned = true; SetIsVisible(true); - m_updateLocationTimer.Reset(); + + double const kEps = 1e-5; + if (fabs(m_lastLocationTimestamp - info.m_timestamp) > kEps) + { + m_lastLocationTimestamp = info.m_timestamp; + m_updateLocationTimer.Reset(); + } } void MyPositionController::LoseLocation() diff --git a/drape_frontend/my_position_controller.hpp b/drape_frontend/my_position_controller.hpp index c3e61faaca..c20d171f25 100644 --- a/drape_frontend/my_position_controller.hpp +++ b/drape_frontend/my_position_controller.hpp @@ -145,6 +145,7 @@ private: my::Timer m_pendingTimer; my::Timer m_routingNotFollowTimer; my::Timer m_updateLocationTimer; + double m_lastLocationTimestamp; m2::RectD m_pixelRect; m2::PointD m_centerPixelPositionRouting;