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.
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.
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
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 = [];
}
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.
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();
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.