diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2017-03-06 16:05:39 -0800 |
---|---|---|
committer | Antonio Zugaldia <antonio@mapbox.com> | 2017-03-10 09:37:00 -0800 |
commit | ed16a7d63289e1414ab1a21de1a7d367a0dc8fb3 (patch) | |
tree | 2f19286add065e5ebc688981df8b245af7408d48 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk | |
parent | 2581af3cb69f087b2c64bdf45c7802b5106e1df5 (diff) | |
download | qtlocation-mapboxgl-ed16a7d63289e1414ab1a21de1a7d367a0dc8fb3.tar.gz |
[android] - zoom to rounded levels
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk')
4 files changed, 35 insertions, 14 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 ac6c15f671..a2b6fb1f42 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 @@ -508,7 +508,7 @@ public class MapView extends FrameLayout { if (destroyed) { return; } - mapboxMap.onUpdate(); + mapboxMap.onUpdateRegionChange(); } } @@ -971,8 +971,10 @@ public class MapView extends FrameLayout { mapboxMap.onPostMapReady(); } }); + } else if (change == DID_FINISH_RENDERING_FRAME || change == DID_FINISH_RENDERING_FRAME_FULLY_RENDERED) { + mapboxMap.onUpdateFullyRendered(); } else if (change == REGION_IS_CHANGING || change == REGION_DID_CHANGE || change == DID_FINISH_LOADING_MAP) { - mapboxMap.onUpdate(); + mapboxMap.onUpdateRegionChange(); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 2af2c2ef0f..5d2c649d32 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -155,14 +155,18 @@ public final class MapboxMap { /** * Called when the user */ - void onUpdate() { - CameraPosition cameraPosition = transform.invalidateCameraPosition(); - uiSettings.update(cameraPosition); - // FIXME introduce update method with camera position + void onUpdateRegionChange() { trackingSettings.update(); annotationManager.update(); } + void onUpdateFullyRendered() { + CameraPosition cameraPosition = transform.invalidateCameraPosition(); + if (cameraPosition != null) { + uiSettings.update(cameraPosition); + } + } + // Style /** diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index 7c68a48c4d..e991819e4f 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -61,6 +61,8 @@ final class NativeMapView { // Listener invoked to return a bitmap of the map private MapboxMap.SnapshotReadyCallback snapshotReadyCallback; + private static final int CENTER_XY_VALUE = -1; + // // Static methods // @@ -382,14 +384,23 @@ final class NativeMapView { if (isDestroyedOn("setZoom")) { return; } - setZoom(zoom, 0); + setZoom(zoom, CENTER_XY_VALUE, CENTER_XY_VALUE, 0); } - public void setZoom(double zoom, long duration) { + public void setZoom(double zoom, double cx, double cy, long duration) { if (isDestroyedOn("setZoom")) { return; } - nativeSetZoom(zoom, duration); + + if (cx != CENTER_XY_VALUE) { + cx = cx / pixelRatio; + } + + if (cy != CENTER_XY_VALUE) { + cy = cy / pixelRatio; + } + + nativeSetZoom(zoom, cx, cy, duration); } public double getZoom() { @@ -1019,7 +1030,7 @@ final class NativeMapView { private native double nativeGetScale(); - private native void nativeSetZoom(double zoom, long duration); + private native void nativeSetZoom(double zoom, double cx, double cy, long duration); private native double nativeGetZoom(); 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..2a81ad6752 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 @@ -182,13 +182,17 @@ final class Transform implements MapView.OnMapChangedListener { // 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) { + zoom(cameraPosition, zoomIn, x, y); } } + private void zoom(@NonNull CameraPosition cameraPosition, boolean zoomIn, float x, float y) { + int newZoom = (int) Math.round(cameraPosition.zoom + (zoomIn ? 1 : -1)); + mapView.setZoom(newZoom, x, y, MapboxConstants.ANIMATION_DURATION); + } + void setZoom(double zoom) { mapView.setZoom(zoom); } |