diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java | 23 |
1 files changed, 12 insertions, 11 deletions
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 0f6b146907..ec4b903a74 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 @@ -1,5 +1,6 @@ package com.mapbox.mapboxsdk.maps; +import android.graphics.PointF; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; @@ -174,23 +175,23 @@ final class Transform implements MapView.OnMapChangedListener { return cameraPosition.zoom; } - void zoom(boolean zoomIn) { - zoom(zoomIn, -1.0f, -1.0f); - } - - void zoom(boolean zoomIn, float x, float y) { + void zoom(boolean zoomIn, @NonNull PointF focalPoint) { // Cancel any animation cancelTransitions(); - if (zoomIn) { - mapView.scaleBy(2.0, x, y, MapboxConstants.ANIMATION_DURATION); - } else { - mapView.scaleBy(0.5, x, y, MapboxConstants.ANIMATION_DURATION); + CameraPosition cameraPosition = invalidateCameraPosition(); + if (cameraPosition != null) { + int newZoom = (int) Math.round(cameraPosition.zoom + (zoomIn ? 1 : -1)); + setZoom(newZoom, focalPoint, MapboxConstants.ANIMATION_DURATION); } } - void setZoom(double zoom) { - mapView.setZoom(zoom); + void setZoom(double zoom, @NonNull PointF focalPoint) { + setZoom(zoom, focalPoint, 0); + } + + void setZoom(double zoom, @NonNull PointF focalPoint, long duration) { + mapView.setZoom(zoom, focalPoint, duration); } // Direction |