From 73b7fc47e1b57c50ed65fa916823e04209d71fd3 Mon Sep 17 00:00:00 2001 From: kevin Date: Wed, 3 Jul 2019 17:57:04 +0800 Subject: Add getShiftedTarget method for CameraPosition --- .../mapbox/mapboxsdk/camera/CameraPosition.java | 29 ++++++++++++++-------- .../java/com/mapbox/mapboxsdk/maps/Transform.java | 9 ++++--- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java index ad6e2a0638..1326983753 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java @@ -86,6 +86,24 @@ public final class CameraPosition implements Parcelable { this.zoom = zoom; } + /** + * Do shift for target location and get the shifted target. + * + * @return the shifted target. + */ + public LatLng getShiftedTarget() { + if (target != null) { + //todo: add check after https://github.com/mapbox/mapbox-java/issues/1057 is resolved. + List shifted = CoordinateShifterManager.getCoordinateShifter() + .shiftLonLat(target.getLongitude(), target.getLatitude()); + if (shifted != null && shifted.size() > 1) { + return new LatLng(shifted.get(1),shifted.get(0)); + } + } + return new LatLng(); + + } + /** * Describe the kinds of special objects contained in this Parcelable's * marshalled representation. @@ -172,7 +190,6 @@ public final class CameraPosition implements Parcelable { * Builder for composing CameraPosition objects. */ public static final class Builder { - private boolean needShift = false; private double bearing = -1; @Nullable private LatLng target = null; @@ -274,7 +291,6 @@ public final class CameraPosition implements Parcelable { */ @NonNull public Builder target(LatLng location) { - needShift = true; this.target = location; return this; } @@ -317,15 +333,6 @@ public final class CameraPosition implements Parcelable { * @return CameraPosition */ public CameraPosition build() { - if (needShift && target != null) { - //todo: add check after https://github.com/mapbox/mapbox-java/issues/1057 is resolved. - List shifted = CoordinateShifterManager.getCoordinateShifter() - .shiftLonLat(target.getLongitude(), target.getLatitude()); - if (shifted != null && shifted.size() > 1) { - target.setLongitude(shifted.get(0)); - target.setLatitude(shifted.get(1)); - } - } return new CameraPosition(this.target, zoom, tilt, bearing); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java index 1961cf0450..d58a4a2f79 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java @@ -108,7 +108,8 @@ public final class Transform implements MapView.OnCameraDidChangeListener { if (isValidCameraPosition(cameraPosition)) { cancelTransitions(); cameraChangeDispatcher.onCameraMoveStarted(OnCameraMoveStartedListener.REASON_API_ANIMATION); - nativeMap.jumpTo(cameraPosition.target, cameraPosition.zoom, cameraPosition.tilt, cameraPosition.bearing); + nativeMap.jumpTo(cameraPosition.getShiftedTarget(), cameraPosition.zoom, cameraPosition.tilt, + cameraPosition.bearing); cameraChangeDispatcher.onCameraIdle(); invalidateCameraPosition(); handler.post(new Runnable() { @@ -134,8 +135,8 @@ public final class Transform implements MapView.OnCameraDidChangeListener { cameraCancelableCallback = callback; } mapView.addOnCameraDidChangeListener(this); - nativeMap.easeTo(cameraPosition.target, cameraPosition.zoom, cameraPosition.bearing, cameraPosition.tilt, - durationMs, easingInterpolator); + nativeMap.easeTo(cameraPosition.getShiftedTarget(), cameraPosition.zoom, cameraPosition.bearing, + cameraPosition.tilt, durationMs, easingInterpolator); } } @@ -154,7 +155,7 @@ public final class Transform implements MapView.OnCameraDidChangeListener { cameraCancelableCallback = callback; } mapView.addOnCameraDidChangeListener(this); - nativeMap.flyTo(cameraPosition.target, cameraPosition.zoom, cameraPosition.bearing, + nativeMap.flyTo(cameraPosition.getShiftedTarget(), cameraPosition.zoom, cameraPosition.bearing, cameraPosition.tilt, durationMs); } } -- cgit v1.2.1