summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2018-10-08 15:16:27 +0200
committerTobrun <tobrun@mapbox.com>2018-10-11 14:12:35 +0200
commit9e7694cb38982cf0434be64b8894c1628236d0d9 (patch)
treeae7ac8fe4da4b5a59b8468c66bba599006dd01ec /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
parent52bc08456e81ce531448f2c28dec5084fcc69155 (diff)
downloadqtlocation-mapboxgl-9e7694cb38982cf0434be64b8894c1628236d0d9.tar.gz
[android] - replace OnMapChange with specific callbacks
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java391
1 files changed, 389 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 44aa507365..1c92b3fe0b 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
@@ -78,6 +78,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
private final MapCallback mapCallback = new MapCallback();
private final CopyOnWriteArrayList<OnMapChangedListener> onMapChangedListeners = new CopyOnWriteArrayList<>();
+ private final MapChangeReceiver mapChangeReceiver = new MapChangeReceiver();
private NativeMapView nativeMapView;
private MapboxMap mapboxMap;
@@ -321,7 +322,11 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
}
boolean crossSourceCollisions = mapboxMapOptions.getCrossSourceCollisions();
- nativeMapView = new NativeMapView(getContext(), getPixelRatio(), crossSourceCollisions, this, mapRenderer);
+ nativeMapView = new NativeMapView(
+ getContext(), getPixelRatio(), crossSourceCollisions, this, mapChangeReceiver, mapRenderer
+ );
+
+ // deprecated API
nativeMapView.addOnMapChangedListener(change -> {
// dispatch events to external listeners
if (!onMapChangedListeners.isEmpty()) {
@@ -422,6 +427,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
@UiThread
public void onDestroy() {
destroyed = true;
+ mapChangeReceiver.clear();
onMapChangedListeners.clear();
mapCallback.clearOnMapReadyCallbacks();
@@ -682,6 +688,381 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
//
/**
+ * Set a callback that's invoked when the camera region will change.
+ *
+ * @param listener The callback that's invoked when the camera region will change
+ */
+ public void addOnCameraWillChangeListener(OnCameraWillChangeListener listener) {
+ mapChangeReceiver.addOnCameraWillChangeListener(listener);
+ }
+
+ /**
+ * Remove a callback that's invoked when the camera region will change.
+ *
+ * @param listener The callback that's invoked when the camera region will change
+ */
+ public void removeOnCameraWillChangeListener(OnCameraWillChangeListener listener) {
+ mapChangeReceiver.removeOnCameraWillChangeListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the camera is changing.
+ *
+ * @param listener The callback that's invoked when the camera is changing
+ */
+ public void addOnCameraIsChangingListener(OnCameraIsChangingListener listener) {
+ mapChangeReceiver.addOnCameraIsChangingListener(listener);
+ }
+
+ /**
+ * Remove a callback that's invoked when the camera is changing.
+ *
+ * @param listener The callback that's invoked when the camera is changing
+ */
+ public void removeOnCameraIsChangingListener(OnCameraIsChangingListener listener) {
+ mapChangeReceiver.removeOnCameraIsChangingListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the camera region did change.
+ *
+ * @param listener The callback that's invoked when the camera region did change
+ */
+ public void addOnCameraDidChangeListener(OnCameraDidChangeListener listener) {
+ mapChangeReceiver.addOnCameraDidChangeListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the camera region did change.
+ *
+ * @param listener The callback that's invoked when the camera region did change
+ */
+ public void removeOnCameraDidChangeListener(OnCameraDidChangeListener listener) {
+ mapChangeReceiver.removeOnCameraDidChangeListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map will start loading.
+ *
+ * @param listener The callback that's invoked when the map will start loading
+ */
+ public void addOnWillStartLoadingMapListener(OnWillStartLoadingMapListener listener) {
+ mapChangeReceiver.addOnWillStartLoadingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map will start loading.
+ *
+ * @param listener The callback that's invoked when the map will start loading
+ */
+ public void removeOnWillStartLoadingMapListener(OnWillStartLoadingMapListener listener) {
+ mapChangeReceiver.removeOnWillStartLoadingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map has finished loading.
+ *
+ * @param listener The callback that's invoked when the map has finished loading
+ */
+ public void addOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener listener) {
+ mapChangeReceiver.addOnDidFinishLoadingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map has finished loading.
+ *
+ * @param listener The callback that's invoked when the map has finished loading
+ */
+ public void removeOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener listener) {
+ mapChangeReceiver.removeOnDidFinishLoadingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map failed to load.
+ *
+ * @param listener The callback that's invoked when the map failed to load
+ */
+ public void addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener) {
+ mapChangeReceiver.addOnDidFailLoadingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map failed to load.
+ *
+ * @param listener The callback that's invoked when the map failed to load
+ */
+ public void removeOnDidFailLoadingMapListener(OnDidFailLoadingMapListener listener) {
+ mapChangeReceiver.removeOnDidFailLoadingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map will start rendering a frame.
+ *
+ * @param listener The callback that's invoked when the camera will start rendering a frame
+ */
+ public void addOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener listener) {
+ mapChangeReceiver.addOnWillStartRenderingFrameListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map will start rendering a frame.
+ *
+ * @param listener The callback that's invoked when the camera will start rendering a frame
+ */
+ public void removeOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener listener) {
+ mapChangeReceiver.removeOnWillStartRenderingFrameListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map has finished rendering a frame.
+ *
+ * @param listener The callback that's invoked when the map has finished rendering a frame
+ */
+ public void addOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener listener) {
+ mapChangeReceiver.addOnDidFinishRenderingFrameListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map has finished rendering a frame.
+ *
+ * @param listener The callback that's invoked when the map has finished rendering a frame
+ */
+ public void removeOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener listener) {
+ mapChangeReceiver.removeOnDidFinishRenderingFrameListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map will start rendering.
+ *
+ * @param listener The callback that's invoked when the map will start rendering
+ */
+ public void addOnWillStartRenderingMapListener(OnWillStartRenderingMapListener listener) {
+ mapChangeReceiver.addOnWillStartRenderingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map will start rendering.
+ *
+ * @param listener The callback that's invoked when the map will start rendering
+ */
+ public void removeOnWillStartRenderingMapListener(OnWillStartRenderingMapListener listener) {
+ mapChangeReceiver.removeOnWillStartRenderingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the map has finished rendering.
+ *
+ * @param listener The callback that's invoked when the map has finished rendering
+ */
+ public void addOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListener listener) {
+ mapChangeReceiver.addOnDidFinishRenderingMapListener(listener);
+ }
+
+ /**
+ * Remove a callback that's invoked when the map has finished rendering.
+ *
+ * @param listener The callback that's invoked when the map has finished rendering
+ */
+ public void removeOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListener listener) {
+ mapChangeReceiver.removeOnDidFinishRenderingMapListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the style has finished loading.
+ *
+ * @param listener The callback that's invoked when the style has finished loading
+ */
+ public void addOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener listener) {
+ mapChangeReceiver.addOnDidFinishLoadingStyleListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when the style has finished loading.
+ *
+ * @param listener The callback that's invoked when the style has finished loading
+ */
+ public void removeOnDidFinishLoadingStyleListener(OnDidFinishLoadingStyleListener listener) {
+ mapChangeReceiver.removeOnDidFinishLoadingStyleListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when a map source has changed.
+ *
+ * @param listener The callback that's invoked when the source has changed
+ */
+ public void addOnSourceChangedListener(OnSourceChangedListener listener) {
+ mapChangeReceiver.addOnSourceChangedListener(listener);
+ }
+
+ /**
+ * Set a callback that's invoked when a map source has changed.
+ *
+ * @param listener The callback that's invoked when the source has changed
+ */
+ public void removeOnSourceChangedListener(OnSourceChangedListener listener) {
+ mapChangeReceiver.removeOnSourceChangedListener(listener);
+ }
+
+ public interface OnCameraWillChangeListener {
+
+ /**
+ * Called when the camera region will change.
+ */
+ void onCameraWillChange(boolean animated);
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the camera is changing.
+ * <p>
+ * {@link MapView#addOnCameraIsChangingListener(OnCameraIsChangingListener)}
+ * </p>
+ */
+ public interface OnCameraIsChangingListener {
+ /**
+ * Called when the camera is changing.
+ */
+ void onCameraIsChanging();
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map region did change.
+ * <p>
+ * {@link MapView#addOnCameraDidChangeListener(OnCameraDidChangeListener)}
+ * </p>
+ */
+ public interface OnCameraDidChangeListener {
+ /**
+ * Called when the camera did change.
+ */
+ void onCameraDidChange(boolean animated);
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map will start loading.
+ * <p>
+ * {@link MapView#addOnWillStartLoadingMapListener(OnWillStartLoadingMapListener)}
+ * </p>
+ */
+ public interface OnWillStartLoadingMapListener {
+ /**
+ * Called when the map will start loading.
+ */
+ void onWillStartLoadingMap();
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map finished loading.
+ * <p>
+ * {@link MapView#addOnDidFinishLoadingMapListener(OnDidFinishLoadingMapListener)}
+ * </p>
+ */
+ public interface OnDidFinishLoadingMapListener {
+ /**
+ * Called when the map has finished loading.
+ */
+ void onDidFinishLoadingMap();
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map is changing.
+ * <p>
+ * {@link MapView#addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener)}
+ * </p>
+ */
+ public interface OnDidFailLoadingMapListener {
+ /**
+ * Called when the map failed to load.
+ *
+ * @param errorMessage The reason why the map failed to load
+ */
+ void onDidFailLoadingMap(String errorMessage);
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map will start rendering a frame.
+ * <p>
+ * {@link MapView#addOnWillStartRenderingFrameListener(OnWillStartRenderingFrameListener)}
+ * </p>
+ */
+ public interface OnWillStartRenderingFrameListener {
+ /**
+ * Called when the map will start rendering a frame.
+ */
+ void onWillStartRenderingFrame();
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map finished rendering a frame.
+ * <p>
+ * {@link MapView#addOnDidFinishRenderingFrameListener(OnDidFinishRenderingFrameListener)}
+ * </p>
+ */
+ public interface OnDidFinishRenderingFrameListener {
+ /**
+ * Called when the map has finished rendering a frame
+ *
+ * @param fully true if all frames have been rendered, false if partially rendered
+ */
+ void onDidFinishRenderingFrame(boolean fully);
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map will start rendering the map.
+ * <p>
+ * {@link MapView#addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener)}
+ * </p>
+ */
+ public interface OnWillStartRenderingMapListener {
+ /**
+ * Called when the map will start rendering.
+ */
+ void onWillStartRenderingMap();
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map is changing.
+ * <p>
+ * {@link MapView#addOnDidFinishRenderingMapListener(OnDidFinishRenderingMapListener)}
+ * </p>
+ */
+ public interface OnDidFinishRenderingMapListener {
+ /**
+ * Called when the map has finished rendering.
+ *
+ * @param fully true if map is fully rendered, false if fully rendered
+ */
+ void onDidFinishRenderingMap(boolean fully);
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when the map has loaded the style.
+ * <p>
+ * {@link MapView#addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener)}
+ * </p>
+ */
+ public interface OnDidFinishLoadingStyleListener {
+ /**
+ * Called when a style has finished loading.
+ */
+ void onDidFinishLoadingStyle();
+ }
+
+ /**
+ * Interface definition for a callback to be invoked when a map source has changed.
+ * <p>
+ * {@link MapView#addOnDidFailLoadingMapListener(OnDidFailLoadingMapListener)}
+ * </p>
+ */
+ public interface OnSourceChangedListener {
+ /**
+ * Called when a map source has changed.
+ *
+ * @param id the id of the source that has changed
+ */
+ void onSourceChangedListener(String id);
+ }
+
+ /**
* <p>
* Add a callback that's invoked when the displayed map view changes.
* </p>
@@ -689,7 +1070,9 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
*
* @param listener The callback that's invoked on every frame rendered to the map view.
* @see MapView#removeOnMapChangedListener(OnMapChangedListener)
+ * @deprecated use specific map change callbacks instead
*/
+ @Deprecated
public void addOnMapChangedListener(@NonNull OnMapChangedListener listener) {
onMapChangedListeners.add(listener);
}
@@ -699,7 +1082,9 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
*
* @param listener The previously added callback to remove.
* @see MapView#addOnMapChangedListener(OnMapChangedListener)
+ * @deprecated use specific map change callbacks instead
*/
+ @Deprecated
public void removeOnMapChangedListener(@NonNull OnMapChangedListener listener) {
if (onMapChangedListeners.contains(listener)) {
onMapChangedListeners.remove(listener);
@@ -954,7 +1339,9 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
*
* @see MapView#addOnMapChangedListener(OnMapChangedListener)
* @see MapView.MapChange
+ * @deprecated use specific map change callbacks instead
*/
+ @Deprecated
public interface OnMapChangedListener {
/**
* Called when the displayed map view changes.
@@ -1299,4 +1686,4 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
public static void setMapStrictModeEnabled(boolean strictModeEnabled) {
MapStrictMode.setStrictModeEnabled(strictModeEnabled);
}
-}
+} \ No newline at end of file