summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java
diff options
context:
space:
mode:
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.java54
1 files changed, 15 insertions, 39 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..7dcd84de75 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,38 +276,18 @@ 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);
+ void resetTrackingModesIfRequired(CameraPosition currentCameraPosition, CameraPosition targetCameraPosition,
+ boolean isFromLocation) {
+ if (currentCameraPosition.target != null) {
+ resetTrackingModesIfRequired(!currentCameraPosition.target.equals(targetCameraPosition.target), false,
+ isFromLocation);
}
}
- /**
- * 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;
- }
-
Location getMyLocation() {
return myLocationView.getLocation();
}