Flutter - 从谷歌地图小部件中删除标记
Posted
技术标签:
【中文标题】Flutter - 从谷歌地图小部件中删除标记【英文标题】:Flutter - Removing markers from Google Maps Widget 【发布时间】:2021-07-31 18:46:51 【问题描述】:我正在构建一个颤振应用程序并使用 BLoC 进行状态管理,用户可以在其中选择相机的当前位置,单击“确认”,然后会在该位置添加一个名为“dep”的标记(出发),然后他将能够添加另一个名为“dest”(目的地)的标记。 用户还可以点击“返回”并恢复到以前的状态,这意味着 id 必须删除他使用的最后一个标记。
这是我的谷歌地图小部件:
GoogleMap(
zoomControlsEnabled: false,
zoomGesturesEnabled: true,
myLocationEnabled: false,
mapType: MapType.normal,
initialCameraPosition: state.cameraPosition,
markers: mapBloc.markers,
onMapCreated: _onMapCreated,
onCameraMove: _onCameraMove,
),
这是我用来删除标记的代码(根据当前状态,markerID 将是“dep”或“dest”):
void removeMarker(String markerID)
markers.remove(markers.firstWhere((Marker marker) => marker.markerId.value == markerID));
此屏幕截图来自将“dep”和“dest”都添加到地图后设置的标记:
此屏幕截图来自从地图中删除“dep”和“dest”后设置的标记:
问题是,当我删除两个标记时,第二个(dest)从地图中成功删除(在执行地图更新功能后),但第一个(dep)没有被删除,它只会当我尝试“添加”一个新的“dep”位置时更新,然后“dep”标记会将其位置更新为新位置。
【问题讨论】:
【参考方案1】:我想通了,事情是,一切都运行良好,但是,地图没有被重建,因为当我产生负责地图更新的状态时,它没有被发送,因为 Equatable 会停止多次发送相同的状态,所以我只是从我的 MapState 中删除了 Equatable,因为我不需要它,现在一切正常!
【讨论】:
以上是关于Flutter - 从谷歌地图小部件中删除标记的主要内容,如果未能解决你的问题,请参考以下文章