diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2016-09-22 16:30:24 +0200 |
---|---|---|
committer | Antonio Zugaldia <antonio@mapbox.com> | 2016-09-22 10:30:24 -0400 |
commit | e8d47269f808845acdc5b3d76033428ac1fb630e (patch) | |
tree | 27c92a23c8424011de238166548670cc08d7540b | |
parent | d3eaf98ca17c31d063805d5eadf85be83a20b757 (diff) | |
download | qtlocation-mapboxgl-e8d47269f808845acdc5b3d76033428ac1fb630e.tar.gz |
[android] #5737 - disable tracking when a camera change occurs, treat camera change equal to gesture (#6414)
2 files changed, 18 insertions, 2 deletions
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 02d352c7f4..6896e9a236 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 d99800863e..2abf6f53fd 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() { |