我已添加Google Maps for Flutter 我知道如何添加标记,因为示例中明确给出了标记
MarkerOptions _options = new MarkerOptions(
position: LatLng(
driver_lat,
driver_lng,
),
infoWindowText:
const InfoWindowText('An interesting location', '*'));
Marker marker = new Marker('1', _options);
//Adding Marker
googleMapController.addMarker(_options);
我正在删除如下标记:
googleMapController.removeMarker(marker);
要添加标记,它将MarkerOptions对象作为参数,但是要删除标记,它要求将Marker对象作为参数,而我删除的标记代码不起作用。 我收到以下错误
Failed assertion: line 201 pos 12: '_markers[marker._id] == marker': is not true.
答案 0 :(得分:2)
使用clearMarkers()
。它将清除地图中的所有标记。因此,尝试googleMapController.clearMarkers();
答案 1 :(得分:1)
有两种方法,一种是通过clearMarkers()
方法
mapController.clearMarkers();
另一种方法是定位mapController.markers
返回的每个标记
mapController.markers.forEach((marker){
mapController.removeMarker(marker);
});
答案 2 :(得分:0)
我自己遇到过google_maps_library
这个问题,而这个问题'_markers[marker._id] == marker': is not true.
的主要原因是所有GoogleMapsController
方法都返回Future
的事实,所以这个错误是一个并发问题,因为方法cals为async
。
添加/删除标记的正确方法是:
_testRemoveMarker() async {
Marker marker = await _mapController.addMarker(...markerOption..);
_mapController.removeMarker(marker);
}
_clearMarkersAndRead() async {
_mapController.clearMarkers().then((_) {
//TODO: add makrers as you whish;
});
}
因此,如果您对标记的添加/删除/更新进行了任何操作,则应确保先前涉及标记的操作已完成。
答案 3 :(得分:0)
2020年答案:
.clearMarkers()已被弃用,因为现在每个Marker都是存储在地图中的Widget。清除现在Google地图上所有标记的正确方法是将标记地图的状态设置为空地图。
例如
...
onPressed: () {
setState(() {
gMapMarkers = {};
});
}
....