From e0b0269103f7690c11d01e22b12d8057775a3de6 Mon Sep 17 00:00:00 2001 From: Cameron Mace Date: Tue, 23 May 2017 13:53:33 -0400 Subject: [PATCH] reset step and leg indexes when reroute occurs --- .../testapp/activity/MockLocationEngine.java | 2 +- .../android/navigation/v5/NavigationEngine.java | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/navigation/app/src/main/java/com/mapbox/services/android/navigation/testapp/activity/MockLocationEngine.java b/navigation/app/src/main/java/com/mapbox/services/android/navigation/testapp/activity/MockLocationEngine.java index a975fcf3bec..5342acd4e6a 100644 --- a/navigation/app/src/main/java/com/mapbox/services/android/navigation/testapp/activity/MockLocationEngine.java +++ b/navigation/app/src/main/java/com/mapbox/services/android/navigation/testapp/activity/MockLocationEngine.java @@ -321,7 +321,7 @@ private Location mockLocation(Position position) { lastLocation.setBearing((float) bearing); } - lastLocation.setAccuracy(40f); + lastLocation.setAccuracy(3f); lastLocation.setTime(SystemClock.elapsedRealtime()); return lastLocation; diff --git a/navigation/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/NavigationEngine.java b/navigation/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/NavigationEngine.java index 00f4bc054eb..588acc534ee 100644 --- a/navigation/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/NavigationEngine.java +++ b/navigation/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/NavigationEngine.java @@ -2,6 +2,8 @@ import android.location.Location; +import android.support.annotation.NonNull; +import android.text.TextUtils; import com.mapbox.services.android.navigation.v5.listeners.AlertLevelChangeListener; import com.mapbox.services.android.navigation.v5.listeners.OffRouteListener; @@ -26,7 +28,6 @@ class NavigationEngine { // Navigation state information private RouteProgress previousRouteProgress; - private DirectionsRoute directionsRoute; private MapboxNavigationOptions options; private long timeIntervalSinceLastOffRoute; private Location previousLocation; @@ -41,7 +42,7 @@ class NavigationEngine { * @param isSnapEnabled boolean true if the snapping to route features enabled, otherwise false * @since 0.2.0 */ - NavigationEngine(MapboxNavigationOptions options, boolean isSnapEnabled) { + NavigationEngine(@NonNull MapboxNavigationOptions options, boolean isSnapEnabled) { this.isSnapEnabled = isSnapEnabled; this.options = options; stepIndex = 0; @@ -57,12 +58,15 @@ class NavigationEngine { * @since 0.2.0 */ void onLocationChanged(DirectionsRoute directionsRoute, Location location) { - this.directionsRoute = directionsRoute; // if the previousRouteProgress is null, the route has just begun and one needs to be created if (previousRouteProgress == null) { previousRouteProgress = new RouteProgress(directionsRoute, location, 0, 0, NavigationConstants.NONE_ALERT_LEVEL); } + if (TextUtils.equals(directionsRoute.getGeometry(), previousRouteProgress.getRoute().getGeometry())) { + resetRouteProgress(); + } + // If the locations the same as previous, no need to recalculate things if (location.equals(previousLocation)) { return; @@ -130,6 +134,11 @@ private void notifyProgressChange(Location location, RouteProgress routeProgress } } + void resetRouteProgress() { + legIndex = 0; + stepIndex = 0; + } + public boolean isSnapEnabled() { return isSnapEnabled; } @@ -157,5 +166,4 @@ void setProgressChangeListeners(CopyOnWriteArrayList pro void setOffRouteListeners(CopyOnWriteArrayList offRouteListeners) { this.offRouteListeners = offRouteListeners; } - }