Validate camera position before transforming (#9275)
* [android] - add camera position validation before transforming * annotate CameraUpdate with nullability
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.mapbox.mapboxsdk.camera;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import com.mapbox.mapboxsdk.maps.MapboxMap;
|
||||
|
||||
@@ -9,6 +10,7 @@ import com.mapbox.mapboxsdk.maps.MapboxMap;
|
||||
*/
|
||||
public interface CameraUpdate {
|
||||
|
||||
@Nullable
|
||||
CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap);
|
||||
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ final class Transform implements MapView.OnMapChangedListener {
|
||||
@UiThread
|
||||
final void moveCamera(MapboxMap mapboxMap, CameraUpdate update, MapboxMap.CancelableCallback callback) {
|
||||
CameraPosition cameraPosition = update.getCameraPosition(mapboxMap);
|
||||
if (!cameraPosition.equals(this.cameraPosition)) {
|
||||
if (isValidCameraPosition(cameraPosition)) {
|
||||
trackingSettings.resetTrackingModesIfRequired(this.cameraPosition, cameraPosition, false);
|
||||
cancelTransitions();
|
||||
cameraChangeDispatcher.onCameraMoveStarted(OnCameraMoveStartedListener.REASON_API_ANIMATION);
|
||||
@@ -109,7 +109,7 @@ final class Transform implements MapView.OnMapChangedListener {
|
||||
final void easeCamera(MapboxMap mapboxMap, CameraUpdate update, int durationMs, boolean easingInterpolator,
|
||||
final MapboxMap.CancelableCallback callback, boolean isDismissable) {
|
||||
CameraPosition cameraPosition = update.getCameraPosition(mapboxMap);
|
||||
if (!cameraPosition.equals(this.cameraPosition)) {
|
||||
if (isValidCameraPosition(cameraPosition)) {
|
||||
trackingSettings.resetTrackingModesIfRequired(this.cameraPosition, cameraPosition, isDismissable);
|
||||
cancelTransitions();
|
||||
cameraChangeDispatcher.onCameraMoveStarted(OnCameraMoveStartedListener.REASON_API_ANIMATION);
|
||||
@@ -127,7 +127,7 @@ final class Transform implements MapView.OnMapChangedListener {
|
||||
final void animateCamera(MapboxMap mapboxMap, CameraUpdate update, int durationMs,
|
||||
final MapboxMap.CancelableCallback callback) {
|
||||
CameraPosition cameraPosition = update.getCameraPosition(mapboxMap);
|
||||
if (!cameraPosition.equals(this.cameraPosition)) {
|
||||
if (isValidCameraPosition(cameraPosition)) {
|
||||
trackingSettings.resetTrackingModesIfRequired(this.cameraPosition, cameraPosition, false);
|
||||
cancelTransitions();
|
||||
cameraChangeDispatcher.onCameraMoveStarted(OnCameraMoveStartedListener.REASON_API_ANIMATION);
|
||||
@@ -141,6 +141,10 @@ final class Transform implements MapView.OnMapChangedListener {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isValidCameraPosition(@Nullable CameraPosition cameraPosition) {
|
||||
return cameraPosition != null && !cameraPosition.equals(this.cameraPosition);
|
||||
}
|
||||
|
||||
@UiThread
|
||||
@Nullable
|
||||
CameraPosition invalidateCameraPosition() {
|
||||
|
||||
Reference in New Issue
Block a user