summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java99
1 files changed, 66 insertions, 33 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
index 5e972c51d6..4e56c6e9c0 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
@@ -18,7 +18,10 @@ import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.location.modes.CameraMode;
import com.mapbox.mapboxsdk.maps.MapboxMap;
-final class LocationCameraController implements MapboxAnimator.OnCameraAnimationsValuesChangeListener {
+import java.util.HashSet;
+import java.util.Set;
+
+final class LocationCameraController {
@CameraMode.Mode
private int cameraMode;
@@ -196,44 +199,73 @@ final class LocationCameraController implements MapboxAnimator.OnCameraAnimation
onCameraMoveInvalidateListener.onInvalidateCameraMove();
}
- @Override
- public void onNewLatLngValue(@NonNull LatLng latLng) {
- if (cameraMode == CameraMode.TRACKING
- || cameraMode == CameraMode.TRACKING_COMPASS
- || cameraMode == CameraMode.TRACKING_GPS
- || cameraMode == CameraMode.TRACKING_GPS_NORTH) {
- setLatLng(latLng);
- }
- }
+ private final MapboxAnimator.AnimationsValueChangeListener<LatLng> latLngValueListener =
+ new MapboxAnimator.AnimationsValueChangeListener<LatLng>() {
+ @Override
+ public void onNewAnimationValue(LatLng value) {
+ setLatLng(value);
+ }
+ };
- @Override
- public void onNewGpsBearingValue(float gpsBearing) {
- boolean trackingNorth = cameraMode == CameraMode.TRACKING_GPS_NORTH
- && mapboxMap.getCameraPosition().bearing != 0;
+ private final MapboxAnimator.AnimationsValueChangeListener<Float> gpsBearingValueListener =
+ new MapboxAnimator.AnimationsValueChangeListener<Float>() {
+ @Override
+ public void onNewAnimationValue(Float value) {
+ boolean trackingNorth = cameraMode == CameraMode.TRACKING_GPS_NORTH
+ && mapboxMap.getCameraPosition().bearing == 0;
- if (cameraMode == CameraMode.TRACKING_GPS
- || cameraMode == CameraMode.NONE_GPS
- || trackingNorth) {
- setBearing(gpsBearing);
+ if (!trackingNorth) {
+ setBearing(value);
+ }
+ }
+ };
+
+ private final MapboxAnimator.AnimationsValueChangeListener<Float> compassBearingValueListener =
+ new MapboxAnimator.AnimationsValueChangeListener<Float>() {
+ @Override
+ public void onNewAnimationValue(Float value) {
+ if (cameraMode == CameraMode.TRACKING_COMPASS
+ || cameraMode == CameraMode.NONE_COMPASS) {
+ setBearing(value);
+ }
+ }
+ };
+
+ private final MapboxAnimator.AnimationsValueChangeListener<Float> zoomValueListener =
+ new MapboxAnimator.AnimationsValueChangeListener<Float>() {
+ @Override
+ public void onNewAnimationValue(Float value) {
+ setZoom(value);
+ }
+ };
+
+ private final MapboxAnimator.AnimationsValueChangeListener<Float> tiltValueListener =
+ new MapboxAnimator.AnimationsValueChangeListener<Float>() {
+ @Override
+ public void onNewAnimationValue(Float value) {
+ setTilt(value);
+ }
+ };
+
+ Set<AnimatorListenerHolder> getAnimationListeners() {
+ Set<AnimatorListenerHolder> holders = new HashSet<>();
+ if (isLocationTracking()) {
+ holders.add(new AnimatorListenerHolder(MapboxAnimator.ANIMATOR_CAMERA_LATLNG, latLngValueListener));
}
- }
- @Override
- public void onNewCompassBearingValue(float compassBearing) {
- if (cameraMode == CameraMode.TRACKING_COMPASS
- || cameraMode == CameraMode.NONE_COMPASS) {
- setBearing(compassBearing);
+ if (isLocationBearingTracking()) {
+ holders.add(new AnimatorListenerHolder(MapboxAnimator.ANIMATOR_CAMERA_GPS_BEARING, gpsBearingValueListener));
}
- }
- @Override
- public void onNewZoomValue(float zoom) {
- setZoom(zoom);
- }
+ if (isConsumingCompass()) {
+ holders.add(new AnimatorListenerHolder(
+ MapboxAnimator.ANIMATOR_CAMERA_COMPASS_BEARING,
+ compassBearingValueListener));
+ }
- @Override
- public void onNewTiltValue(float tilt) {
- setTilt(tilt);
+ holders.add(new AnimatorListenerHolder(MapboxAnimator.ANIMATOR_ZOOM, zoomValueListener));
+ holders.add(new AnimatorListenerHolder(MapboxAnimator.ANIMATOR_TILT, tiltValueListener));
+ return holders;
}
boolean isTransitioning() {
@@ -273,7 +305,8 @@ final class LocationCameraController implements MapboxAnimator.OnCameraAnimation
private boolean isLocationBearingTracking() {
return cameraMode == CameraMode.TRACKING_GPS
- || cameraMode == CameraMode.TRACKING_GPS_NORTH;
+ || cameraMode == CameraMode.TRACKING_GPS_NORTH
+ || cameraMode == CameraMode.NONE_GPS;
}
private void notifyCameraTrackingChangeListener(boolean wasTracking) {