Удалить маркер в google_maps_flutter - PullRequest
0 голосов
/ 03 ноября 2018

Я добавил Карты Google для флаттера я знаю, как добавить маркер, как это четко указано в примерах

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.

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Я сам сталкивался с этой проблемой с 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;
   });
}

Итак, если вы выполняете какие-либо операции с маркерами добавления / удаления / обновления, вы должны быть уверены, что предыдущая операция с маркерами была завершена.

0 голосов
/ 21 февраля 2019

Есть два способа сделать это, один через clearMarkers() Метод

mapController.clearMarkers();

Еще один - нацеливание на каждый маркер, возвращаемый mapController.markers

mapController.markers.forEach((marker){
      mapController.removeMarker(marker);
});
0 голосов
/ 06 декабря 2018

Используйте clearMarkers(). Это очистит все маркеры на вашей карте. Так что попробуйте googleMapController.clearMarkers();

...