diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java | 54 |
1 files changed, 14 insertions, 40 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java index 25b60aa72d..09213934ae 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java @@ -33,7 +33,6 @@ public final class TrackingSettings { private boolean myLocationEnabled; private boolean dismissLocationTrackingOnGesture = true; private boolean dismissBearingTrackingOnGesture = true; - private boolean isResetTrackingWithCameraPositionChange = true; private MapboxMap.OnMyLocationTrackingModeChangeListener onMyLocationTrackingModeChangeListener; private MapboxMap.OnMyBearingTrackingModeChangeListener onMyBearingTrackingModeChangeListener; @@ -57,8 +56,6 @@ public final class TrackingSettings { outState.putBoolean(MapboxConstants.STATE_MY_LOCATION_TRACKING_DISMISS, isDismissLocationTrackingOnGesture()); outState.putBoolean(MapboxConstants.STATE_MY_BEARING_TRACKING_DISMISS, isDismissBearingTrackingOnGesture()); outState.putBoolean(MapboxConstants.STATE_MY_LOCATION_ENABLED, isMyLocationEnabled()); - outState.putBoolean(MapboxConstants.STATE_MY_TRACKING_MODE_DISMISS_FOR_CAMERA, - isDismissTrackingModesForCameraPositionChange()); } void onRestoreInstanceState(Bundle savedInstanceState) { @@ -77,8 +74,6 @@ public final class TrackingSettings { MapboxConstants.STATE_MY_LOCATION_TRACKING_DISMISS, true)); setDismissBearingTrackingOnGesture(savedInstanceState.getBoolean( MapboxConstants.STATE_MY_BEARING_TRACKING_DISMISS, true)); - setDismissTrackingModeForCameraPositionChange(savedInstanceState.getBoolean( - MapboxConstants.STATE_MY_TRACKING_MODE_DISMISS_FOR_CAMERA, true)); } /** @@ -259,15 +254,16 @@ public final class TrackingSettings { } /** - * Reset the tracking modes as necessary. Location tracking is reset if the map center is changed, - * bearing tracking if there is a rotation. + * Reset the tracking modes as necessary. Location tracking is reset if the map center is changed and not from + * location, bearing tracking if there is a rotation. * - * @param translate true if translation - * @param rotate true if rotation + * @param translate true if translation + * @param rotate true if rotation + * @param isFromLocation true if from location */ - void resetTrackingModesIfRequired(boolean translate, boolean rotate) { + void resetTrackingModesIfRequired(boolean translate, boolean rotate, boolean isFromLocation) { // if tracking is on, and we should dismiss tracking with gestures, and this is a scroll action, turn tracking off - if (translate && !isLocationTrackingDisabled() && isDismissLocationTrackingOnGesture()) { + if (translate && !isLocationTrackingDisabled() && isDismissLocationTrackingOnGesture() && !isFromLocation) { setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE); } @@ -280,36 +276,14 @@ public final class TrackingSettings { /** * Reset the tracking modes as necessary. Animated camera position changes can reset the underlying tracking modes. * - * @param cameraPosition the changed camera position + * @param currentCameraPosition the current camera position + * @param targetCameraPosition the changed camera position + * @param isFromLocation true if from location */ - void resetTrackingModesIfRequired(CameraPosition cameraPosition) { - if (isDismissTrackingModesForCameraPositionChange()) { - resetTrackingModesIfRequired(cameraPosition.target != null, false); - } - } - - /** - * Returns if a animation allows to dismiss a tracking mode. - * <p> - * By default this is set to true. - * </p> - * - * @return True if camera animations will allow to dismiss a tracking mode - */ - public boolean isDismissTrackingModesForCameraPositionChange() { - return isResetTrackingWithCameraPositionChange; - } - - /** - * Sets a flag to allow animated camera position changes to dismiss a tracking mode. - * <p> - * <p> - * </p> - * - * @param willAllowToDismiss True will allow animated camera changes dismiss a trackig mode - */ - public void setDismissTrackingModeForCameraPositionChange(boolean willAllowToDismiss) { - isResetTrackingWithCameraPositionChange = willAllowToDismiss; + void resetTrackingModesIfRequired(CameraPosition currentCameraPosition, CameraPosition targetCameraPosition, + boolean isFromLocation) { + resetTrackingModesIfRequired(!currentCameraPosition.target.equals(targetCameraPosition.target), false, + isFromLocation); } Location getMyLocation() { |