颤振 - 如何删除谷歌地图中的标记?



我希望能够通过模态删除标记,我已经尝试了clearMarkers()removeMarkers()但它们似乎不再起作用了。

我也试过这个

颤振 - 如何删除单个google_maps_flutter ^0.5.21 标记?

但是当我单击删除标记时,它给了我:Bad state: No element

_handleTap(LatLng point) async {
if (_markers.isEmpty) {
FirebaseUser users = await FirebaseAuth.instance.currentUser();
Firestore.instance
.collection("markers")
.document(users.uid)
.setData({
"coordinates": point.toString(),
});
setState(() {
_markers.add(Marker(
markerId: MarkerId(point.toString()),
position: point,
onTap: () {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return Container(
child: new Wrap(
children: <Widget>[
new ListTile(
leading: new Icon(Icons.delete),
title: new Text('Remove marker'),
onTap: () =>
{
_markers.remove(_markers.firstWhere((Marker marker) => marker.markerId.value == point))
}
),
],
),
);
});
},

你需要在 _markers.remove(( 之后调用这个 setState((。

_handleTap(LatLng point) async {
if (_markers.isEmpty) {
FirebaseUser users = await FirebaseAuth.instance.currentUser();
Firestore.instance
.collection("markers")
.document(users.uid)
.setData({
"coordinates": point.toString(),
});
setState(() {
_markers.add(Marker(
markerId: MarkerId(point.toString()),
position: point,
onTap: () {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return Container(
child: new Wrap(
children: <Widget>[
new ListTile(
leading: new Icon(Icons.delete),
title: new Text('Remove marker'),
onTap: () =>
{
_markers.remove(_markers.firstWhere((Marker marker) => marker.markerId.value == point))
}
),
],
),
);
});
},

这种方式对我有用;

MarkerId id = MarkerId("Pickup");
//markers[id] = {} as Marker; clear all markers
markers.removeWhere((key, value) => key == id); //clear a specific marker

最新更新