【问题标题】:Animate Compose GoogleMap to a Specified Location将 Google 地图制作成动画到特定位置
【发布时间】:2022-08-16 12:22:35
【问题描述】:

我正在开发一个简单的地图应用程序,我正在尝试使 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
                )

            }

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

googleMap.animateCamera(CameraUpdateFactory.newCameraPosition), 1000, null)

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

我查看了Compose for the Maps SDKMaps Compose Library 的文档,但我仍然卡住了。

请让我知道是否有办法在 Compose GoogleMap 中为相机设置动画

    标签: android google-maps android-jetpack-compose google-maps-compose


    【解决方案1】:

    如果在您的 Composable 组合时它是一个且唯一的一次动画,请使用 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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-15
      • 2017-10-12
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多