将 GoogleMap 动画组合到指定位置

Fan*_*dez 3 android google-maps android-jetpack-compose google-maps-compose

我正在开发一个简单的地图应用程序,我正在尝试使GoogleMap可组合的缩放动画 持续时间超过 1000 毫秒。

到目前为止我有这个代码:

Column( ... ) {

                val destinationLatLng = LatLng(destination.lat, destination.lng)
                
                val cameraPositionState = rememberCameraPositionState {
                    position = CameraPosition.fromLatLngZoom(destinationLatLng, 15f)

                }

                GoogleMap(
                        modifier = Modifier.fillMaxSize(),
                        cameraPositionState = cameraPositionState
                        //stuck on animating this
                )

            }
Run Code Online (Sandbox Code Playgroud)

在旧的 GoogleMap 视图中,我可以使用此示例代码为相机设置动画。

googleMap.animateCamera(CameraUpdateFactory.newCameraPosition), 1000, null)
Run Code Online (Sandbox Code Playgroud)

但是,在 Compose 中,我无法重新设计它来实现放大动画。

我已经查看了Maps SDKMaps Compose 库的 Compose文档,但我仍然陷入困境。

请告诉我是否有办法在 Compose GoogleMap 中为相机设置动画

MS2*_*099 10

如果在组合可组合项时它是一次且仅有一次动画,请使用 LaunchEffect(key1 = true),如下面的代码所示。

val initialZoom = 6f
val finalZoom = 15f
val destinationLatLng = LatLng(destination.lat, destination.lng)

val cameraPositionState = rememberCameraPositionState {
    position = CameraPosition.fromLatLngZoom(destinationLatLng, initialZoom)
}

LaunchedEffect(key1 = true) {
    cameraPositionState.animate(
        update = CameraUpdateFactory.newCameraPosition(
            CameraPosition(destinationLatLng, finalZoom, 0f, 0f)
        ),
        durationMs = 1000
    )
}

GoogleMap(
    modifier = Modifier.fillMaxSize(),
    cameraPositionState = cameraPositionState
)
Run Code Online (Sandbox Code Playgroud)