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

Android Studio中Kotlin Compose下为Google Maps标记添加OnClick监听

在Compose中为Google Maps Marker添加点击监听的实现方法

方法一:单个Marker绑定专属点击事件

直接在Marker组件的onClick参数中编写点击逻辑,返回true表示消费当前点击事件,阻止事件继续传递:

// 定义相机初始状态(示例)
val cameraPositionState = rememberCameraPositionState {
    position = CameraPosition.fromLatLngZoom(LatLng(37.7749, -122.4194), 12f)
}
// 获取Compose上下文
val context = LocalContext.current

GoogleMap(
    modifier = Modifier.fillMaxSize(),
    cameraPositionState = cameraPositionState
) {
    Marker(
        position = LatLng(37.7749, -122.4194),
        title = "野生皮卡丘",
        onClick = {
            // 这里编写点击后的逻辑,比如弹窗提示、跳转详情页等
            Toast.makeText(context, "发现皮卡丘!", Toast.LENGTH_SHORT).show()
            true
        }
    )
}

方法二:全局统一处理所有Marker点击

如果需要批量处理多个Marker的点击事件,可以在GoogleMap组件上设置onMarkerClick回调,通过marker对象获取对应标记的信息:

// 模拟精灵标记数据列表
val pokemonMarkerList = listOf(
    Pair(LatLng(37.7749, -122.4194), "皮卡丘"),
    Pair(LatLng(37.7895, -122.4010), "小火龙"),
    Pair(LatLng(37.7652, -122.4341), "妙蛙种子")
)
val cameraPositionState = rememberCameraPositionState {
    position = CameraPosition.fromLatLngZoom(LatLng(37.7749, -122.4194), 12f)
}
val context = LocalContext.current

GoogleMap(
    modifier = Modifier.fillMaxSize(),
    cameraPositionState = cameraPositionState,
    onMarkerClick = { marker ->
        val pokemonName = marker.title ?: "未知精灵"
        Toast.makeText(context, "点击了$pokemonName", Toast.LENGTH_SHORT).show()
        true
    }
) {
    // 循环批量创建Marker
    pokemonMarkerList.forEach { (latLng, name) ->
        Marker(
            position = latLng,
            title = name
        )
    }
}

依赖版本说明

确保项目已正确集成Google Maps Compose相关依赖,建议使用最新稳定版:

implementation "com.google.maps.android:maps-compose:2.11.4"
implementation "com.google.android.gms:play-services-maps:18.2.0"

内容的提问来源于stack exchange,提问作者oéoéoéeuuuh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:10:43