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

如何个性化定制Android Compose版Google Maps组件?

基于Android Compose的Google Maps SDK UI定制问题

我正在开发一个基于Android Compose和Google Maps SDK的项目,需要对地图的所有UI进行定制,包括:

  • 修改标记样式
  • 移除默认地点标记
  • 更改字体样式
  • 自定义定位按钮

我了解旧版Google Maps库可实现这些功能,但不清楚新版Compose库的操作方法。查阅了Google官方文档,但内容十分匮乏,目前仅找到使用旧库的解决方案,可新库使用起来更便捷,不想退回去用旧库。

以下是我在Composable中实现GoogleMap的代码:

@Composable
fun DiscoverContent(
  mapState: MapState,
  setupClusterManager: (Context, GoogleMap) -> ZoneClusterManager,
  calculateZoneViewCenter: () -> LatLngBounds,
  onClusterClicked: (ZoneClusterItem) -> Unit
) {

  val context = LocalContext.current
  val mapProperties = MapProperties(isMyLocationEnabled = mapState.lastKnownLocation != null)
  val cameraPositionState = rememberCameraPositionState()

  GoogleMap(
    modifier = Modifier.fillMaxSize(),
    properties = mapProperties,
    cameraPositionState = cameraPositionState,
    uiSettings = MapUiSettings()
  ) {

    val scope = rememberCoroutineScope()
    MapEffect(mapState.clusterItems) { map ->
      if (mapState.clusterItems.isNotEmpty()) {
        val clusterManager = setupClusterManager(context, map)
        map.setOnCameraIdleListener(clusterManager)
        map.setOnMarkerClickListener(clusterManager)
        clusterManager.setOnClusterClickListener { cluster ->
          val clusterItem = cluster.items.firstOrNull()
          clusterItem?.let { onClusterClicked(it) }
          true
        }
        map.setOnMapLoadedCallback {
          if (mapState.clusterItems.isNotEmpty()) {
            scope.launch {
              cameraPositionState.animate(
                update = CameraUpdateFactory.newLatLngBounds(
                  calculateZoneViewCenter(),
                  MAP_PADDING
                )
              )
            }
          }
        }
      }
    }
  } 

当前地图显示效果截图:当前地图外观

内容的提问来源于stack exchange,提问作者Adria Fernandez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:05:08