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

Flutter 应用中如何实现点击 GoogleMap 的 Marker 标记隐藏该标记

实现方案(基于官方google_maps_flutter包)

以下是可直接运行的实现逻辑:

  • 首先在State类中声明响应式的Marker集合,该集合需要和GoogleMap组件的markers属性绑定:
// 存储地图上所有标记的集合
Set<Marker> _mapMarkers = {};
  • 初始化Marker时给每个实例配置onTap回调,回调内修改对应Marker的visible属性后更新状态即可触发隐藏:
/// 初始化标记的示例方法
void _addSampleMarker() {
  const targetMarkerId = MarkerId("user_marker_001");
  _mapMarkers.add(
    Marker(
      markerId: targetMarkerId,
      position: const LatLng(31.2304, 121.4737), // 示例坐标,可替换为实际值
      // 核心点击回调逻辑
      onTap: () {
        // 生成隐藏状态的新Marker实例
        final hiddenMarker = _mapMarkers
            .firstWhere((marker) => marker.markerId == targetMarkerId)
            .copyWith(visibleParam: false);
        // 更新状态触发UI重绘
        setState(() {
          _mapMarkers.removeWhere((m) => m.markerId == targetMarkerId);
          _mapMarkers.add(hiddenMarker);
        });
      },
    ),
  );
}
  • 最后将标记集合绑定到GoogleMap组件:
GoogleMap(
  initialCameraPosition: const CameraPosition(target: LatLng(31.2304, 121.4737), zoom: 12),
  markers: _mapMarkers,
)

补充说明:如果你的需求是点击后彻底移除标记而非临时隐藏,直接在onTap回调的setState方法中移除对应Marker即可,不需要修改visible属性。

内容的提问来源于stack exchange,提问作者yvan Coyaud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:15:03