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
相关产品推荐
相关产品推荐

