From 8b3420d70cf8944a92edd08fc386884bd19ab51b Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Thu, 21 Jan 2016 17:47:46 +0300 Subject: [PATCH 1/2] Rerouting count for routing session statistics. --- routing/routing_session.cpp | 5 ++++- routing/routing_session.hpp | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index f2977608ae..6e3dd5d99e 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -72,6 +72,7 @@ void RoutingSession::BuildRoute(m2::PointD const & startPoint, m2::PointD const m_endPoint = endPoint; m_router->ClearState(); m_isFollowing = false; + m_routingRebuildCount = -1; // -1 for the first rebuild. RebuildRoute(startPoint, readyCallback, progressCallback, timeoutSec); } @@ -83,6 +84,7 @@ void RoutingSession::RebuildRoute(m2::PointD const & startPoint, ASSERT_NOT_EQUAL(m_endPoint, m2::PointD::Zero(), ("End point was not set")); RemoveRoute(); m_state = RouteBuilding; + m_routingRebuildCount++; // Use old-style callback construction, because lambda constructs buggy function on Android // (callback param isn't captured by value). @@ -171,7 +173,8 @@ RoutingSession::State RoutingSession::OnLocationPositionChanged(GpsInfo const & m_state = RouteFinished; alohalytics::TStringMap params = {{"router", m_route.GetRouterId()}, - {"passedDistance", strings::to_string(m_passedDistanceOnRouteMeters)}}; + {"passedDistance", strings::to_string(m_passedDistanceOnRouteMeters)}, + {"rebuildCount", strings::to_string(m_routingRebuildCount)}}; alohalytics::LogEvent("RouteTracking_ReachedDestination", params); } else diff --git a/routing/routing_session.hpp b/routing/routing_session.hpp index f2702869f8..07be2e395c 100644 --- a/routing/routing_session.hpp +++ b/routing/routing_session.hpp @@ -177,7 +177,10 @@ private: RoutingSettings m_routingSettings; + // Statistics parameters // Passed distance on route including reroutes double m_passedDistanceOnRouteMeters; + // Rerouting count + int m_routingRebuildCount; }; } // namespace routing From 9903296afd8b7cb7659549abce3be9f8613c43d7 Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Thu, 21 Jan 2016 17:53:37 +0300 Subject: [PATCH 2/2] Routing rebuild statistics event with coordinates. --- routing/routing_session.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp index 6e3dd5d99e..10f4d4ce50 100644 --- a/routing/routing_session.cpp +++ b/routing/routing_session.cpp @@ -204,7 +204,8 @@ RoutingSession::State RoutingSession::OnLocationPositionChanged(GpsInfo const & { // Distance from the last known projection on route // (check if we are moving far from the last known projection). - double const dist = MercatorBounds::DistanceOnEarth(m_route.GetFollowedPolyline().GetCurrentIter().m_pt, + auto const & lastGoodPoint = m_route.GetFollowedPolyline().GetCurrentIter().m_pt; + double const dist = MercatorBounds::DistanceOnEarth(lastGoodPoint, MercatorBounds::FromLatLon(info.m_latitude, info.m_longitude)); if (my::AlmostEqualAbs(dist, m_lastDistance, kRunawayDistanceSensitivityMeters)) return m_state; @@ -223,6 +224,12 @@ RoutingSession::State RoutingSession::OnLocationPositionChanged(GpsInfo const & { m_passedDistanceOnRouteMeters += m_route.GetCurrentDistanceFromBeginMeters(); m_state = RouteNeedRebuild; + alohalytics::TStringMap params = {{"router", m_route.GetRouterId()}, + {"lastCoordinateLat", strings::to_string_dac(MercatorBounds::YToLat(lastGoodPoint.y), 5 /*precision*/)}, + {"lastCoordinateLon", strings::to_string_dac(MercatorBounds::XToLon(lastGoodPoint.x), 5 /*precision*/)}, + {"passedDistance", strings::to_string(m_passedDistanceOnRouteMeters)}, + {"rebuildCount", strings::to_string(m_routingRebuildCount)}}; + alohalytics::LogEvent("RouteTracking_RouteNeedRebuild", params); } }