删除google_maps_flutter中的标记

时间:2018-11-03 14:39:45

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

我已添加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.

4 个答案:

答案 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 = {};
                    });
                  }
                ....