【问题标题】:Flutter - Removing markers from Google Maps WidgetFlutter - 从谷歌地图小部件中删除标记
【发布时间】: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”标记会将其位置更新为新位置。

【问题讨论】:

    标签: flutter google-maps-markers flutter-bloc


    【解决方案1】:

    我想通了,事情是,一切都运行良好,但是,地图没有被重建,因为当我产生负责地图更新的状态时,它没有被发送,因为 Equatable 会停止多次发送相同的状态,所以我只是从我的 MapState 中删除了 Equatable,因为我不需要它,现在一切正常!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-02
      • 2013-04-10
      • 2015-04-09
      • 2012-10-17
      • 2013-09-29
      • 2015-06-05
      • 1970-01-01
      • 2018-10-13
      相关资源
      最近更新 更多