diff --git a/android/app/src/main/java/app/organicmaps/location/LocationHelper.java b/android/app/src/main/java/app/organicmaps/location/LocationHelper.java index 9c0fbac83..844957bb4 100644 --- a/android/app/src/main/java/app/organicmaps/location/LocationHelper.java +++ b/android/app/src/main/java/app/organicmaps/location/LocationHelper.java @@ -213,7 +213,7 @@ public class LocationHelper implements BaseLocationProvider.Listener if (mSavedLocation != null) { - if (!LocationUtils.isFromFusedProvider(location) && !LocationUtils.isLocationBetterThanLast(location, mSavedLocation)) + if (!LocationUtils.isLocationBetterThanLast(location, mSavedLocation)) { Logger.d(TAG, "The new " + location + " is worse than the last " + mSavedLocation); return; diff --git a/android/app/src/main/java/app/organicmaps/util/LocationUtils.java b/android/app/src/main/java/app/organicmaps/util/LocationUtils.java index e8c257151..735b427ef 100644 --- a/android/app/src/main/java/app/organicmaps/util/LocationUtils.java +++ b/android/app/src/main/java/app/organicmaps/util/LocationUtils.java @@ -84,6 +84,9 @@ public class LocationUtils public static boolean isLocationBetterThanLast(@NonNull Location newLocation, @NonNull Location lastLocation) { + if (newLocation.getElapsedRealtimeNanos() < lastLocation.getElapsedRealtimeNanos()) + return false; + // As described in isAccuracySatisfied, GPS may have zero accuracy "for some reasons". if (isFromGpsProvider(lastLocation) && lastLocation.getAccuracy() == 0.0f) return true;