From 06fb5c4733aa9e0eea49b598bb14acfacdcaa166 Mon Sep 17 00:00:00 2001 From: Thanh Dang Trong <48285462+thanhdang198@users.noreply.github.com> Date: Fri, 22 Nov 2024 05:14:49 +0700 Subject: [PATCH] feat: add `getZoom` and `setZoom` function support for Android Auto (#3037) Co-authored-by: thanhdt1998 --- .../org/maplibre/android/maps/MapLibreMap.java | 18 ++++++++++++++++++ .../maplibre/android/maps/MapLibreMapTest.kt | 16 ++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/MapLibreMap.java b/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/MapLibreMap.java index 2074b1524..04d758d68 100644 --- a/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/MapLibreMap.java +++ b/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/MapLibreMap.java @@ -759,6 +759,24 @@ public final class MapLibreMap { nativeMapView.moveBy(x, y, duration); } + /** + * Returns the current zoom level. + */ + public double getZoom() { + return nativeMapView.getZoom(); + } + + /** + * Zooms the camera to the specified level. + * @param zoom The zoom level to which the camera should move. + * @param focalPoint The point around which to zoom. + * @param duration The duration for the zoom animation + */ + public void setZoom(double zoom, @NonNull PointF focalPoint, long duration ) { + notifyDeveloperAnimationListeners(); + nativeMapView.setZoom(zoom, focalPoint, duration); + } + // // Reset North // diff --git a/platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/maps/MapLibreMapTest.kt b/platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/maps/MapLibreMapTest.kt index 631064935..a84cb1542 100644 --- a/platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/maps/MapLibreMapTest.kt +++ b/platform/android/MapLibreAndroid/src/test/java/org/maplibre/android/maps/MapLibreMapTest.kt @@ -1,6 +1,7 @@ package org.maplibre.android.maps import android.content.Context +import android.graphics.PointF import org.maplibre.android.MapLibreInjector import org.maplibre.android.camera.CameraPosition import org.maplibre.android.camera.CameraUpdateFactory @@ -244,4 +245,19 @@ class MapLibreMapTest { maplibreMap.onFinishLoadingStyle() verify(exactly = 1) { onStyleLoadedListener.onStyleLoaded(style) } } + + @Test + fun testGetZoom() { + maplibreMap.zoom + verify { nativeMapView.zoom } + assertEquals(maplibreMap.zoom, 0.0, 0.0) + } + + @Test + fun testSetZoom() { + val target = PointF(100f, 100f) + maplibreMap.setZoom(2.0, target, 0) + verify { developerAnimationListener.onDeveloperAnimationStarted() } + verify { nativeMapView.setZoom(2.0, target, 0) } + } }