MarkerComposable(Google 地图)即使由于关键更改而发生重组也不会更新标记的位置

问题描述 投票:0回答:1

我有一个简单的 MarkerComposable 本身

MarkerComposable(
        keys = arrayOf(position), // position is LatLng
        state = rememberMarkerState(
            key = position.latitude.toString() + position.longitude.toString(),
            position = position
        ),

    ) {
        content()
    }

当位置更改时,即使我可以看到发生了重组,标记的位置也不会在地图上更新。我什至将位置设置为按键(如here所述)。这意味着当位置改变时,键也会改变,并且标记的位置应该更新。但事实并非如此。

还有什么我错过的吗?

android google-maps android-jetpack-compose
1个回答
0
投票

我发现其实是因为

rememberMarkerState
。 有一篇关于它的详细文章这里。 但简而言之,这解决了问题

@Composable
    private fun rememberUpdatedMarkerState(newPosition: LatLng): MarkerState =
        remember { MarkerState(position = newPosition) }
            .apply { position = newPosition }

val state = rememberUpdatedMarkerState(position)
MarkerComposable(
    keys = keys,
    state = state,
) {
    content()
}
© www.soinside.com 2019 - 2024. All rights reserved.