MarkerComposable 内容(Google 地图)不会在 Compose 中重新组合

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

我使用 MarkerComposable 创建了自己的标记,因为我想在单击图标时添加动画。我希望单击时所选标记变大。我可以想到两种选择:要么将图像更改为更大的图像(我选择了这个),要么使用修改器。但令我惊讶的是,当我运行代码时,我发现只有 MarkerComposable 被重构,而 Image 没有被重构。无论我点击标记多少次,图像都不会改变。

我尝试过更改一些内容,但无法重新组合图像可组合项。而且我还没有找到太多关于 MarkerComposable 的文档。

您知道是什么原因造成的吗?或者当我点击标记时有什么替代方法可以改变它?

提前谢谢您!

@Composable
private fun MyMarker(
    location: Location,
    onPinClick: () -> Unit,
) {
    val markerState = rememberMarkerState(
        position = location.toLatLng(),
    )
    var iconSelected by rememberSaveable { mutableStateOf(false) }
    
    MarkerComposable(
        state = markerState,
        title = if (iconSelected) "true" else "false", // recompose
        onClick = { _ ->
            iconSelected = !iconSelected
            false
        },
    )
    {
    Image(
        painter = painterResource( // not recompose
            if (iconSelected) {
                R.drawable.low_availability_selected_pin
            } else {
                R.drawable.high_availability_fav_pin
            },
        ),
        contentDescription = null,
    }
}
android kotlin google-maps android-jetpack-compose google-maps-markers
1个回答
0
投票

刚刚发现需要设置MarkerComposable的keys参数,不然不会重新渲染

MarkerComposable(
    keys = <THIS NEEDS TO CHANGE TO RE-RENDER>
    state = markerState,
    title = if (iconSelected) "true" else "false", // recompose
    onClick = { _ ->
        iconSelected = !iconSelected
        false
    },
)
© www.soinside.com 2019 - 2024. All rights reserved.