Угловой Удалить Google map Маркеры - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь удалить все маркеры с карты при нажатии кнопки;

gmarkers = []; //define empty array for all markers

Добавить маркеры, показать карту:

addMarkersToMap(markers) { 
    for(let marker of markers) {
    var  position = new google.maps.LatLng(marker.latitude,   marker.longitude);
    var myMarker = new google.maps.Marker({
       position: position,
       title: marker.name
     });
     myMarker(this.map);
     this.gmarkers.push(marker); //push all markers to gmarkers array
   }
}

Удалить маркеры:

removeMarkers(){
  if (this.gmarkers) {
      for (let i in this.gmarkers) {
        this.gmarkers[i].setMap(null);
      }

      this.gmarkers = [];
   }
}

Также попробуйте с таким подходом удалить:

removeMarkers(){
    for(var i=0; i<this.gmarkers.length; i++){
      this.gmarkers[i].setMap(null);
    }
   this.gmarkers = [];
}

Я получил ошибку:

this.gmarkers [i] .setMap не является функцией

1 Ответ

0 голосов
/ 03 мая 2018

Попробуйте: используйте foreach вместо

removeMarkers(){
    this.gmarkers.foreach((marker)=>{
        marker.setMap(null);
        marker = null;
    })
   this.gmarkers = [];
}

И в вашем методе addMarkersToMap() вы нажимаете переменную marker, вместо этого вам нужно нажать myMarker внутри gmarkers Я думаю.

addMarkersToMap(markers) { 
    for(let marker of markers) {
    var  position = new google.maps.LatLng(marker.latitude,   marker.longitude);
    var myMarker = new google.maps.Marker({
       position: position,
       title: marker.name
     });
     myMarker(this.map);
     //replace marker with myMarker
     this.gmarkers.push(myMarker); //push all markers to gmarkers array
   }
}
...