diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 02d352c7f..6896e9a23 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -2571,7 +2571,7 @@ public class MapView extends FrameLayout { ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED; } - private void resetTrackingModesIfRequired() { + void resetTrackingModesIfRequired() { TrackingSettings trackingSettings = mapboxMap.getTrackingSettings(); if (trackingSettings.isDismissLocationTrackingOnGesture()) { resetLocationTrackingMode(); @@ -2592,7 +2592,8 @@ public class MapView extends FrameLayout { private void resetBearingTrackingMode() { try { - setMyBearingTrackingMode(MyBearingTracking.NONE); + TrackingSettings trackingSettings = mapboxMap.getTrackingSettings(); + trackingSettings.setMyBearingTrackingMode(MyBearingTracking.NONE); } catch (SecurityException ignore) { // User did not accept location permissions } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index d99800863..2abf6f53f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -368,6 +368,11 @@ public class MapboxMap { */ @UiThread public final void moveCamera(CameraUpdate update, MapboxMap.CancelableCallback callback) { + // dismiss tracking, moving camera is equal to a gesture + if (!trackingSettings.isLocationTrackingDisabled()) { + mapView.resetTrackingModesIfRequired(); + } + cameraPosition = update.getCameraPosition(this); mapView.jumpTo(cameraPosition.bearing, cameraPosition.target, cameraPosition.tilt, cameraPosition.zoom); if (callback != null) { @@ -433,6 +438,11 @@ public class MapboxMap { @UiThread public final void easeCamera( CameraUpdate update, int durationMs, boolean easingInterpolator, final MapboxMap.CancelableCallback callback) { + // dismiss tracking, moving camera is equal to a gesture + if (!trackingSettings.isLocationTrackingDisabled()) { + mapView.resetTrackingModesIfRequired(); + } + cameraPosition = update.getCameraPosition(this); mapView.easeTo(cameraPosition.bearing, cameraPosition.target, getDurationNano(durationMs), cameraPosition.tilt, cameraPosition.zoom, easingInterpolator, new CancelableCallback() { @@ -521,6 +531,11 @@ public class MapboxMap { */ @UiThread public final void animateCamera(CameraUpdate update, int durationMs, final MapboxMap.CancelableCallback callback) { + // dismiss tracking, moving camera is equal to a gesture + if (!trackingSettings.isLocationTrackingDisabled() && trackingSettings.isDismissLocationTrackingOnGesture()) { + mapView.resetTrackingModesIfRequired(); + } + cameraPosition = update.getCameraPosition(this); mapView.flyTo(cameraPosition.bearing, cameraPosition.target, getDurationNano(durationMs), cameraPosition.tilt, cameraPosition.zoom, new CancelableCallback() {