You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Maps MarkerComposable标记位置未随重组更新问题咨询

问题分析与解决方案

可能原因及对应解决方法:

  1. LatLng对象的相等性判断问题
    如果你的LatLng不是数据类,或者没有正确实现equals()和hashCode()方法,直接将position作为keys数组元素时,重组框架可能无法识别position已变更(因为仅判断引用相等而非值相等)。

    • 解决:将keys改为基于经纬度的基本类型组合,确保变更能被正确检测:
      keys = arrayOf(position.latitude, position.longitude)
      
  2. rememberMarkerState的初始化逻辑问题
    rememberMarkerState的position参数只是初始值,当重组发生但key未变化时,不会自动更新state的位置。即使你设置了key,若经纬度拼接的字符串存在精度问题(比如Double转字符串的格式差异),也可能导致key未正确触发state重建。

    • 更可靠的方式是主动监听position变化并更新state:
      val markerState = rememberMarkerState(position = position)
      // 当position变更时,更新标记位置
      LaunchedEffect(position) {
          markerState.position = position
      }
      
      MarkerComposable(
          keys = arrayOf(position.latitude, position.longitude),
          state = markerState
      ) {
          content()
      }
      
  3. 库版本兼容性问题
    若使用的是Google Maps Compose库,旧版本可能存在标记位置不更新的已知bug。建议升级到最新稳定版,确保修复了相关问题。


内容的提问来源于stack exchange,提问作者Mehdi Satei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:22:08