448 Stimmen

Google Maps API v3: Wie entfernt man alle Markierungen?

Wenn ich in Google Maps API v2 alle Kartenmarkierungen entfernen wollte, konnte ich das einfach tun:

map.clearOverlays();

Wie mache ich das in Google Maps API v3 ?

Die Betrachtung der Referenz-API Das ist mir unklar.

4voto

GregN Punkte 41

Die " set_map "Die in beiden Antworten genannte Funktion scheint in der Google Maps v3 API nicht mehr zu funktionieren.

Ich frage mich, was passiert ist

Aktualisierung:

Es scheint, dass Google seine API so geändert hat, dass " set_map " ist nicht " setMap ".

http://code.google.com/apis/maps/documentation/v3/reference.html

4voto

Freddie Punkte 115

Hier finden Sie ein Beispiel dafür, wie Sie Markierungen entfernen können:

https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es

// Add a marker to the map and push to the array.
function addMarker(location) {
  var marker = new google.maps.Marker({
    position: location,
    map: map
  });
  markers.push(marker);
}

// Sets the map on all markers in the array.
function setAllMap(map) {
  for (var i = 0; i < markers.length; i++) {
    markers[i].setMap(map);
   }
}

// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
  setAllMap(null);
}

// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
  clearMarkers();
  markers = [];
}

3voto

Mimo Punkte 54

Die sauberste Art, dies zu tun, besteht darin, über alle Merkmale der Karte zu iterieren. Markierungen (zusammen mit Polygonen, Polylinien, etc.) werden in der Datei Datenschicht der Karte.

function removeAllMarkers() {
  map.data.forEach((feature) => {
    feature.getGeometry().getType() === 'Point' ? map.data.remove(feature) : null
  });
}

Für den Fall, dass die Markierungen über Zeichnungsmanager ist es am besten, ein globales Array von Markern zu erstellen oder die Marker bei der Erstellung in die Datenschicht zu schieben, etwa so:

google.maps.event.addListener(drawingManager, 'overlaycomplete', (e) => {
    var newShape = e.overlay;
    newShape.type = e.type;

    if (newShape.type === 'marker') {
      var pos = newShape.getPosition()
      map.data.add({ geometry: new google.maps.Data.Point(pos) });

      // remove from drawing layer
      newShape.setMap(null);
    }
  });

Ich empfehle den zweiten Ansatz, da er es Ihnen ermöglicht, später andere Methoden der Klasse google.maps.data zu verwenden.

3voto

Craig Fruin Punkte 127

Ich fand die Verwendung der Markermanager-Bibliothek im Projekt google-maps-utility-library-v3 als den einfachsten Weg.

1. Einrichten des MarkerManagers

mgr = new MarkerManager(map);
google.maps.event.addListener(mgr, 'loaded', function () {
    loadMarkers();
});

2. Hinzufügen von Markierungen zum MarkerManager

function loadMarkers() {
  var marker = new google.maps.Marker({
            title: title,
            position: latlng,
            icon: icon
   });
   mgr.addMarker(marker);
   mgr.refresh();
 }

3. Um Markierungen zu löschen, müssen Sie nur die Funktion des MarkerMangers clearMarkers() Funktion

mgr.clearMarkers();

3voto

kolis29 Punkte 95

Sie können es auch so machen:

function clearMarkers(category){ 
  var i;       

  for (i = 0; i < markers.length; i++) {                          
    markers[i].setVisible(false);        
  }    
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X