Угловой 6 Удалить все маркеры с карты Google - PullRequest
0 голосов
/ 27 января 2019
<div #gmap class="map"></div>

for (let marker of this.markersDisplay) {
          let markerColor = (marker.MarkerType == MarkerType.Ok) ? "green" : (marker.MarkerType == MarkerType.Warning) ? "yellow" : "red";
          let markerClick = new google.maps.Marker(
            {
              position: new google.maps.LatLng(marker.Latitude, marker.Longitude),
              map: this.map,
              title: marker.Title,
              visible: marker.Visible,
              clickable: marker.Clickable,
              icon: 'http://maps.google.com/mapfiles/ms/icons/' + markerColor + '-dot.png',
            });
          markerClick.addListener('click', () => { this.MarkerClick(marker); });
        }
      }

Мне нужно отфильтровать маркеры на карте. Перед добавлением нового хочу убрать все маркеры с карты. Как это сделать?

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Как убрать все сразу?

Ты не можешь. Вставьте каждый объект Marker в массив:

// Create empty markers array    
var markers = [];

for (let marker of this.markersDisplay) {
  let markerColor = (marker.MarkerType == MarkerType.Ok) ? "green" : (marker.MarkerType == MarkerType.Warning) ? "yellow" : "red";
  let markerClick = new google.maps.Marker({
    position: new google.maps.LatLng(marker.Latitude, marker.Longitude),
    map: this.map,
    title: marker.Title,
    visible: marker.Visible,
    clickable: marker.Clickable,
    icon: 'http://maps.google.com/mapfiles/ms/icons/' + markerColor + '-dot.png',
  });
  markerClick.addListener('click', () => {
    this.MarkerClick(marker);
  });

  // Push marker to markers array
  markers.push(markerClick);
}

Позже, когда вы захотите удалить их все, переберите массив и вызовите setMap(null) для каждого маркера:

for (var i=0; i<markers.length; i++) {

  markers[i].setMap(null);
}
0 голосов
/ 27 января 2019

вы можете попробовать запустить foreach на маркерах и затем установить:

marker.setMap(null);
marker = null;
...