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.

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.

2voto

bokor Punkte 1819

Ich habe dies gerade mit kmlLayer.setMap(null) versucht und es hat funktioniert. Nicht sicher, ob das mit normalen Markierungen funktionieren würde, aber scheint richtig zu funktionieren.

2voto

Will Punkte 21

Um alle Überlagerungen zu entfernen, einschließlich Polys, Markierungen usw.

einfach verwenden:

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}

Hier ist eine Funktion, die ich geschrieben habe, um dies in einer Kartenanwendung zu tun:

  function clear_Map() {
    directionsDisplay = new google.maps.DirectionsRenderer();
    //var chicago = new google.maps.LatLng(41.850033, -87.6500523);
    var myOptions = {
        zoom: 8,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        center: HamptonRoads
    }

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById("directionsPanel"));
}

1voto

Rock Star Punkte 95

Um alle Markierungen von der Karte zu entfernen, erstellen Sie Funktionen wie diese:

1.addMarker(location): Mit dieser Funktion wird die Markierung auf der Karte hinzugefügt.

2.clearMarkers(): diese Funktion entfernt alle Markierungen aus der Karte, nicht aus dem Array

3.setMapOnAll(map): Diese Funktion wird verwendet, um Informationen über Markierungen in einem Array hinzuzufügen.

4.deleteMarkers(): Diese Funktion löscht alle Markierungen im Array, indem sie Verweise auf sie entfernt.

// Adds 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 setMapOnAll(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() {
    setMapOnAll(null);
  }

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

1voto

Ogglas Punkte 48648

Dies ist die Methode, die Google selbst in mindestens einem Beispiel verwendet:

var markers = [];

// Clear out the old markers.
markers.forEach(function(marker) {
  marker.setMap(null);
});
markers = [];

Ein vollständiges Code-Beispiel finden Sie bei Google:

https://developers.google.com/maps/documentation/javascript/examples/places-searchbox

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