From 8c871c4d31775df5e93a67f5da33a2bedfacf2b2 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Wed, 16 Feb 2022 09:41:56 -0800 Subject: [PATCH] feat: Pass Location to onMyLocationClick (#39) Change-Id: Ie01e9fc386316dcbe2bbeb87fc47ec024956fea0 --- .../maps/android/compose/MapSampleActivity.kt | 26 +++++++++++++++---- .../google/maps/android/compose/GoogleMap.kt | 3 ++- .../maps/android/compose/MapClickListeners.kt | 3 ++- .../google/maps/android/compose/MapUpdater.kt | 2 +- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/google/maps/android/compose/MapSampleActivity.kt b/app/src/main/java/com/google/maps/android/compose/MapSampleActivity.kt index 0a79a801b..afde47747 100644 --- a/app/src/main/java/com/google/maps/android/compose/MapSampleActivity.kt +++ b/app/src/main/java/com/google/maps/android/compose/MapSampleActivity.kt @@ -104,7 +104,11 @@ private fun GoogleMapView(modifier: Modifier, onMapLoaded: () -> Unit) { var mapProperties by remember { mutableStateOf(MapProperties(mapType = MapType.NORMAL)) } - var uiSettings by remember { mutableStateOf(MapUiSettings(compassEnabled = false)) } + var uiSettings by remember { + mutableStateOf( + MapUiSettings(compassEnabled = false) + ) + } var shouldAnimateZoom by remember { mutableStateOf(true) } var ticker by remember { mutableStateOf(0) } @@ -115,7 +119,12 @@ private fun GoogleMapView(modifier: Modifier, onMapLoaded: () -> Unit) { uiSettings = uiSettings, onMapLoaded = onMapLoaded, googleMapOptionsFactory = { - GoogleMapOptions().camera(CameraPosition.fromLatLngZoom(singapore, 11f)) + GoogleMapOptions().camera( + CameraPosition.fromLatLngZoom( + singapore, + 11f + ) + ) }, onPOIClick = { Log.d(TAG, "POI clicked: ${it.name}") @@ -233,11 +242,17 @@ private fun ZoomControls( Column(verticalArrangement = Arrangement.Center) { Row(horizontalArrangement = Arrangement.Center) { Text(text = "Camera Animations On?") - Switch(isCameraAnimationChecked, onCheckedChange = onCameraAnimationCheckedChange) + Switch( + isCameraAnimationChecked, + onCheckedChange = onCameraAnimationCheckedChange + ) } Row(horizontalArrangement = Arrangement.Center) { Text(text = "Zoom Controls On?") - Switch(isZoomControlsEnabledChecked, onCheckedChange = onZoomControlsCheckedChange) + Switch( + isZoomControlsEnabledChecked, + onCheckedChange = onZoomControlsCheckedChange + ) } } } @@ -264,7 +279,8 @@ private fun DebugView(cameraPositionState: CameraPositionState) { .fillMaxWidth(), verticalArrangement = Arrangement.Center ) { - val moving = if (cameraPositionState.isMoving) "moving" else "not moving" + val moving = + if (cameraPositionState.isMoving) "moving" else "not moving" Text(text = "Camera is $moving") Text(text = "Camera position is ${cameraPositionState.position}") } diff --git a/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt b/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt index 1dc64dc0a..7f0a2bcb2 100644 --- a/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt +++ b/maps-compose/src/main/java/com/google/maps/android/compose/GoogleMap.kt @@ -17,6 +17,7 @@ package com.google.maps.android.compose import android.content.ComponentCallbacks import android.content.Context import android.content.res.Configuration +import android.location.Location import android.os.Bundle import android.view.ViewGroup import android.widget.FrameLayout @@ -81,7 +82,7 @@ fun GoogleMap( onMapLongClick: (LatLng) -> Unit = {}, onMapLoaded: () -> Unit = {}, onMyLocationButtonClick: () -> Boolean = { false }, - onMyLocationClick: () -> Unit = {}, + onMyLocationClick: (Location) -> Unit = {}, onPOIClick: (PointOfInterest) -> Unit = {}, contentPadding: PaddingValues = NoPadding, content: (@Composable () -> Unit)? = null, diff --git a/maps-compose/src/main/java/com/google/maps/android/compose/MapClickListeners.kt b/maps-compose/src/main/java/com/google/maps/android/compose/MapClickListeners.kt index 8dd7aa076..fea55144a 100644 --- a/maps-compose/src/main/java/com/google/maps/android/compose/MapClickListeners.kt +++ b/maps-compose/src/main/java/com/google/maps/android/compose/MapClickListeners.kt @@ -1,5 +1,6 @@ package com.google.maps.android.compose +import android.location.Location import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue @@ -38,6 +39,6 @@ internal class MapClickListeners { var onMapLongClick: (LatLng) -> Unit by mutableStateOf({}) var onMapLoaded: () -> Unit by mutableStateOf({}) var onMyLocationButtonClick: () -> Boolean by mutableStateOf({ false }) - var onMyLocationClick: () -> Unit by mutableStateOf({}) + var onMyLocationClick: (Location) -> Unit by mutableStateOf({}) var onPOIClick: (PointOfInterest) -> Unit by mutableStateOf({}) } diff --git a/maps-compose/src/main/java/com/google/maps/android/compose/MapUpdater.kt b/maps-compose/src/main/java/com/google/maps/android/compose/MapUpdater.kt index 6ff86a882..eb5942f53 100644 --- a/maps-compose/src/main/java/com/google/maps/android/compose/MapUpdater.kt +++ b/maps-compose/src/main/java/com/google/maps/android/compose/MapUpdater.kt @@ -64,7 +64,7 @@ internal class MapPropertiesNode( map.setOnMapLongClickListener { clickListeners.onMapLongClick(it) } map.setOnMapLoadedCallback { clickListeners.onMapLoaded() } map.setOnMyLocationButtonClickListener { clickListeners.onMyLocationButtonClick() } - map.setOnMyLocationClickListener { clickListeners.onMyLocationClick() } + map.setOnMyLocationClickListener { clickListeners.onMyLocationClick(it) } map.setOnPoiClickListener { clickListeners.onPOIClick(it) } map.setOnIndoorStateChangeListener(object : GoogleMap.OnIndoorStateChangeListener { override fun onIndoorBuildingFocused() {