我有一个简单的 MarkerComposable 本身
MarkerComposable(
keys = arrayOf(position), // position is LatLng
state = rememberMarkerState(
key = position.latitude.toString() + position.longitude.toString(),
position = position
),
) {
content()
}
当位置更改时,即使我可以看到发生了重组,标记的位置也不会在地图上更新。我什至将位置设置为按键(如here所述)。这意味着当位置改变时,键也会改变,并且标记的位置应该更新。但事实并非如此。
还有什么我错过的吗?
我发现其实是因为
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()
}