From 28ee7a243f11cac96ad718f7668335c00fe53990 Mon Sep 17 00:00:00 2001 From: kaytran2992 Date: Wed, 19 Mar 2025 16:32:06 +0700 Subject: [PATCH] Public functions for case user integrate with existing map --- .../components/compose/maps/W3WMapManager.kt | 4 +-- .../maps/providers/googlemap/W3WGoogleMap.kt | 2 +- .../providers/googlemap/W3WGoogleMapDrawer.kt | 2 +- .../maps/providers/mapbox/W3WMapBox.kt | 2 +- .../maps/providers/mapbox/W3WMapBoxDrawers.kt | 2 +- .../maps/state/camera/W3WCameraState.kt | 2 +- .../maps/state/camera/W3WGoogleCameraState.kt | 26 ++++++++++--------- .../maps/state/camera/W3WMapboxCameraState.kt | 2 +- 8 files changed, 22 insertions(+), 20 deletions(-) diff --git a/lib-compose/src/main/java/com/what3words/components/compose/maps/W3WMapManager.kt b/lib-compose/src/main/java/com/what3words/components/compose/maps/W3WMapManager.kt index 94e3a45c..162f251a 100644 --- a/lib-compose/src/main/java/com/what3words/components/compose/maps/W3WMapManager.kt +++ b/lib-compose/src/main/java/com/what3words/components/compose/maps/W3WMapManager.kt @@ -379,7 +379,7 @@ class W3WMapManager( * * @param newCameraState The new camera state to set. */ - internal suspend fun updateCameraState(newCameraState: W3WCameraState<*>) = withContext(IO) { + suspend fun updateCameraState(newCameraState: W3WCameraState<*>) = withContext(IO) { _mapState.update { it.copy( cameraState = newCameraState, @@ -1846,7 +1846,7 @@ class W3WMapManager( * * @param textDataSource The text data source implementation to use for API calls. */ - internal fun setTextDataSource(textDataSource: W3WTextDataSource) { + fun setTextDataSource(textDataSource: W3WTextDataSource) { this.textDataSource = textDataSource } diff --git a/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/googlemap/W3WGoogleMap.kt b/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/googlemap/W3WGoogleMap.kt index f5379a51..394753e8 100644 --- a/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/googlemap/W3WGoogleMap.kt +++ b/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/googlemap/W3WGoogleMap.kt @@ -159,7 +159,7 @@ fun W3WGoogleMap( * @param gridLinesConfig Configuration for the grid lines, including scale factor * @param onCameraBoundUpdate Callback that receives the calculated grid bounds and visible bounds */ -private suspend fun updateCameraBound( +suspend fun updateCameraBound( projection: Projection, gridLinesConfig: W3WMapDefaults.GridLinesConfig, onCameraBoundUpdate: (gridBound: W3WRectangle, visibleBound: W3WRectangle) -> Unit diff --git a/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/googlemap/W3WGoogleMapDrawer.kt b/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/googlemap/W3WGoogleMapDrawer.kt index 4176c76d..bbc69d54 100644 --- a/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/googlemap/W3WGoogleMapDrawer.kt +++ b/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/googlemap/W3WGoogleMapDrawer.kt @@ -375,7 +375,7 @@ fun W3WGoogleMapDrawMarkers( ) { val drawZoomIn = remember(zoomLevel) { derivedStateOf { - zoomLevel > zoomSwitchLevel && zoomLevel >= MIN_SUPPORT_GRID_ZOOM_LEVEL_GOOGLE + zoomLevel >= zoomSwitchLevel && zoomLevel >= MIN_SUPPORT_GRID_ZOOM_LEVEL_GOOGLE } } diff --git a/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/mapbox/W3WMapBox.kt b/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/mapbox/W3WMapBox.kt index 12c65c30..928a9006 100644 --- a/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/mapbox/W3WMapBox.kt +++ b/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/mapbox/W3WMapBox.kt @@ -270,7 +270,7 @@ fun W3WMapBox( * The grid bound is scaled according to the configuration, while the visible bound * represents the actual visible area on the map. */ -private fun updateGridBound( +fun updateGridBound( mapboxMap: MapboxMap, gridLinesConfig: W3WMapDefaults.GridLinesConfig, onCameraBoundUpdate: (gridBound: W3WRectangle, visibleBound: W3WRectangle) -> Unit, diff --git a/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/mapbox/W3WMapBoxDrawers.kt b/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/mapbox/W3WMapBoxDrawers.kt index 9d19a7f2..bfe9c377 100644 --- a/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/mapbox/W3WMapBoxDrawers.kt +++ b/lib-compose/src/main/java/com/what3words/components/compose/maps/providers/mapbox/W3WMapBoxDrawers.kt @@ -285,7 +285,7 @@ fun W3WMapBoxDrawMarkers( ) { val drawZoomIn = remember(zoomLevel) { derivedStateOf { - zoomLevel > zoomSwitchLevel && zoomLevel >= MIN_SUPPORT_GRID_ZOOM_LEVEL_MAP_BOX + zoomLevel >= zoomSwitchLevel && zoomLevel >= MIN_SUPPORT_GRID_ZOOM_LEVEL_MAP_BOX } } diff --git a/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WCameraState.kt b/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WCameraState.kt index b38de588..284c996b 100644 --- a/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WCameraState.kt +++ b/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WCameraState.kt @@ -18,7 +18,7 @@ import com.what3words.core.types.geometry.W3WRectangle @Immutable interface W3WCameraState { - val cameraState: T + var cameraState: T var gridBound: W3WRectangle? diff --git a/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WGoogleCameraState.kt b/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WGoogleCameraState.kt index 838d915e..cb2f5bee 100644 --- a/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WGoogleCameraState.kt +++ b/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WGoogleCameraState.kt @@ -35,7 +35,7 @@ class W3WGoogleCameraState(initialCameraState: CameraPositionState) : const val MY_LOCATION_ZOOM = 20f } - override val cameraState: CameraPositionState by mutableStateOf(initialCameraState) + override var cameraState: CameraPositionState by mutableStateOf(initialCameraState) override var gridBound: W3WRectangle? by mutableStateOf(null) @@ -74,18 +74,20 @@ class W3WGoogleCameraState(initialCameraState: CameraPositionState) : override suspend fun moveToPosition( listLatLng: List, ) { - val latLngBounds = LatLngBounds.Builder() - listLatLng.forEach { - latLngBounds.include(LatLng(it.lat, it.lng)) - } + if (listLatLng.isNotEmpty()) { + val latLngBounds = LatLngBounds.Builder() + listLatLng.forEach { + latLngBounds.include(LatLng(it.lat, it.lng)) + } - withContext(Main) { - cameraState.animate( - update = - CameraUpdateFactory.newLatLngBounds( - latLngBounds.build(), 10 - ) - ) + withContext(Main) { + cameraState.animate( + update = + CameraUpdateFactory.newLatLngBounds( + latLngBounds.build(), 10 + ) + ) + } } } diff --git a/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WMapboxCameraState.kt b/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WMapboxCameraState.kt index 4b2dbbf0..1822545c 100644 --- a/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WMapboxCameraState.kt +++ b/lib-compose/src/main/java/com/what3words/components/compose/maps/state/camera/W3WMapboxCameraState.kt @@ -32,7 +32,7 @@ class W3WMapboxCameraState(initialCameraState: MapViewportState) : const val MY_LOCATION_ZOOM = 20.0 } - override val cameraState: MapViewportState by mutableStateOf(initialCameraState) + override var cameraState: MapViewportState by mutableStateOf(initialCameraState) override var gridBound: W3WRectangle? by mutableStateOf(null)