summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java
index 6f7d7c0080..e3ebc74ae3 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java
@@ -1,5 +1,10 @@
package com.mapbox.mapboxsdk.maps;
+import android.support.annotation.NonNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraIdleListener;
import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveCanceledListener;
import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveListener;
@@ -10,6 +15,11 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
private boolean idle = true;
+ private final List<OnCameraMoveStartedListener> onCameraMoveStartedListenerList = new ArrayList<>();
+ private final List<OnCameraMoveCanceledListener> onCameraMoveCanceledListenerList = new ArrayList<>();
+ private final List<OnCameraMoveListener> onCameraMoveListenerList = new ArrayList<>();
+ private final List<OnCameraIdleListener> onCameraIdleListenerList = new ArrayList<>();
+
private OnCameraMoveStartedListener onCameraMoveStartedListener;
private OnCameraMoveCanceledListener onCameraMoveCanceledListener;
private OnCameraMoveListener onCameraMoveListener;
@@ -41,6 +51,12 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
if (onCameraMoveStartedListener != null) {
onCameraMoveStartedListener.onCameraMoveStarted(reason);
}
+
+ if (!onCameraMoveStartedListenerList.isEmpty()) {
+ for (OnCameraMoveStartedListener cameraMoveStartedListener : onCameraMoveStartedListenerList) {
+ cameraMoveStartedListener.onCameraMoveStarted(reason);
+ }
+ }
}
@Override
@@ -48,6 +64,12 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
if (onCameraMoveListener != null && !idle) {
onCameraMoveListener.onCameraMove();
}
+
+ if (!onCameraMoveListenerList.isEmpty()) {
+ for (OnCameraMoveListener cameraMoveListener : onCameraMoveListenerList) {
+ cameraMoveListener.onCameraMove();
+ }
+ }
}
@Override
@@ -55,6 +77,12 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
if (onCameraMoveCanceledListener != null && !idle) {
onCameraMoveCanceledListener.onCameraMoveCanceled();
}
+
+ if (!onCameraMoveCanceledListenerList.isEmpty()) {
+ for (OnCameraMoveCanceledListener cameraMoveCanceledListener : onCameraMoveCanceledListenerList) {
+ cameraMoveCanceledListener.onCameraMoveCanceled();
+ }
+ }
}
@Override
@@ -64,6 +92,52 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M
if (onCameraIdleListener != null) {
onCameraIdleListener.onCameraIdle();
}
+
+ if (!onCameraIdleListenerList.isEmpty()) {
+ for (OnCameraIdleListener cameraIdleListener : onCameraIdleListenerList) {
+ cameraIdleListener.onCameraIdle();
+ }
+ }
+ }
+ }
+
+ void addOnCameraIdleListener(@NonNull OnCameraIdleListener listener) {
+ onCameraIdleListenerList.add(listener);
+ }
+
+ void removeOnCameraIdleListener(@NonNull OnCameraIdleListener listener) {
+ if (onCameraIdleListenerList.contains(listener)) {
+ onCameraIdleListenerList.remove(listener);
+ }
+ }
+
+ void addOnCameraMoveCancelListener(OnCameraMoveCanceledListener listener) {
+ onCameraMoveCanceledListenerList.add(listener);
+ }
+
+ void removeOnCameraMoveCancelListener(OnCameraMoveCanceledListener listener) {
+ if (onCameraMoveCanceledListenerList.contains(listener)) {
+ onCameraMoveCanceledListenerList.remove(listener);
+ }
+ }
+
+ void addOnCameraMoveStartedListener(OnCameraMoveStartedListener listener) {
+ onCameraMoveStartedListenerList.add(listener);
+ }
+
+ void removeOnCameraMoveStartedListener(OnCameraMoveStartedListener listener) {
+ if (onCameraMoveStartedListenerList.contains(listener)) {
+ onCameraMoveStartedListenerList.remove(listener);
+ }
+ }
+
+ void addOnCameraMoveListener(OnCameraMoveListener listener) {
+ onCameraMoveListenerList.add(listener);
+ }
+
+ void removeOnCameraMoveListener(OnCameraMoveListener listener) {
+ if (onCameraMoveListenerList.contains(listener)) {
+ onCameraMoveListenerList.remove(listener);
}
}
}