diff --git a/maps-app/src/main/java/com/google/maps/android/compose/MapsInLazyColumnActivity.kt b/maps-app/src/main/java/com/google/maps/android/compose/MapsInLazyColumnActivity.kt index 6e8c98a8..eb507a1b 100644 --- a/maps-app/src/main/java/com/google/maps/android/compose/MapsInLazyColumnActivity.kt +++ b/maps-app/src/main/java/com/google/maps/android/compose/MapsInLazyColumnActivity.kt @@ -152,7 +152,6 @@ fun MapsInLazyColumn( val cameraPositionStates = mapItems.associate { item -> item.id to rememberCameraPositionState( - key = item.id, init = { position = CameraPosition.fromLatLngZoom(item.location, item.zoom) } ) } diff --git a/maps-compose/src/main/java/com/google/maps/android/compose/CameraPositionState.kt b/maps-compose/src/main/java/com/google/maps/android/compose/CameraPositionState.kt index b5730a9a..e6e9096c 100644 --- a/maps-compose/src/main/java/com/google/maps/android/compose/CameraPositionState.kt +++ b/maps-compose/src/main/java/com/google/maps/android/compose/CameraPositionState.kt @@ -40,12 +40,35 @@ import java.lang.Integer.MAX_VALUE import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException +/** + * Creates and remembers a [CameraPositionState] using [rememberSaveable]. + * + * The camera position state is saved across configuration changes and process death, + * ensuring the map retains its last position. + * + * @param init A lambda that is called when the [CameraPositionState] is first created to + * configure its initial state, such as its position or zoom level. + */ +@Composable +public inline fun rememberCameraPositionState( + crossinline init: CameraPositionState.() -> Unit = {} +): CameraPositionState = rememberSaveable(saver = CameraPositionState.Saver) { + CameraPositionState().apply(init) +} + /** * Create and [rememberSaveable] a [CameraPositionState] using [CameraPositionState.Saver]. * [init] will be called when the [CameraPositionState] is first created to configure its * initial state. Remember that the camera state can be applied when the map has been * loaded. */ +@Deprecated( + message = "The 'key' parameter is deprecated. Please use the new `rememberCameraPositionState` function without a key.", + replaceWith = ReplaceWith( + "rememberCameraPositionState(init)", + "com.google.maps.android.compose.rememberCameraPositionState" + ) +) @Composable public inline fun rememberCameraPositionState( key: String? = null,