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