Flutter - 从 Google 地图小部件中删除标记
Flutter - Removing markers from Google Maps Widget
我正在构建一个 flutter 应用程序并使用 BLoC 进行状态管理,用户可以在其中 select 相机的当前位置,单击“确认”,然后将在该位置添加一个标记'dep'(出发地)的名称,然后他将能够添加另一个名为 'dest'(目的地)的标记。
用户还可以单击“return”并恢复到之前的状态,这意味着 id 必须删除他使用的最后一个标记。
这是我的 google 地图小部件:
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) 未删除,它将仅在我尝试 'add' 新的 'dep' 位置时更新,然后 'dep' 标记会将其位置更新为新位置。
我想通了,事情是,一切都运行良好,但是,地图没有被重建,因为当我产生负责地图更新的状态时,它没有被发送,因为 Equatable 会停止多次发送相同的状态,所以我只是从我的 MapState 中删除了 Equatable,因为我不需要它,现在一切正常!
我正在构建一个 flutter 应用程序并使用 BLoC 进行状态管理,用户可以在其中 select 相机的当前位置,单击“确认”,然后将在该位置添加一个标记'dep'(出发地)的名称,然后他将能够添加另一个名为 'dest'(目的地)的标记。 用户还可以单击“return”并恢复到之前的状态,这意味着 id 必须删除他使用的最后一个标记。
这是我的 google 地图小部件:
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) 未删除,它将仅在我尝试 'add' 新的 'dep' 位置时更新,然后 'dep' 标记会将其位置更新为新位置。
我想通了,事情是,一切都运行良好,但是,地图没有被重建,因为当我产生负责地图更新的状态时,它没有被发送,因为 Equatable 会停止多次发送相同的状态,所以我只是从我的 MapState 中删除了 Equatable,因为我不需要它,现在一切正常!