Ich verwende Leaflet.js für eine Karte. Jetzt möchte ich zusätzliche Layer von der Karte entfernen. Wenn Sie auf die Schaltfläche # klicken, werden alle markierten Kontrollkästchen deaktiviert und alle entsprechenden Ebenen werden aus der Karte entfernt.Leaflet.js: So entfernen Sie mehrere Ebenen aus der Karte
Um eine Ebene aus der Karte zu entfernen, wird die ID der Ebene benötigt. Diese ID entspricht der ID des entsprechenden Kontrollkästchens. Deshalb benutze ich jQuery, um die IDs aller markierten Checkboxen zu erhalten und ihren Wert in einem Objekt zu speichern, hier someObj.idsChecked.
Wenn ich versuche, den gespeicherten Wert val zu verwenden, eine Schicht zu entfernen, es nicht während der den gewünschten Wert console.log Displays funktioniert. Hier zum Beispiel: mapcat52.
Beim Einfügen der vorherigen ID in die Funktion wie map.removeLayer (mapcat52) fest programmiert funktioniert es wie erwartet.
Wo ist der Fehler in meinem Code oder meine Gedanken?
Jede Hilfe wird sehr geschätzt.
Die HTML
<input type="button" id="selectnone" value="deselect all" />
<!-- checkboxes -->
<input id="mapcat52" type="checkbox" name="maplayer" class="maplayer">
<label for="mapcat52">Map Layer One</label>
<input id="mapcat53" type="checkbox" name="maplayer" class="maplayer">
<label for="mapcat53">Map Layer Two</label>
...
Die JS:
$('#selectnone').click(function() {
var someObj = {};
someObj.idsChecked = [];
$("input:checkbox").each(function() {
if ($(this).is(":checked")) {
someObj.idsChecked.push($(this).attr("id"));
}
}).attr('checked', false);
$.each(someObj.idsChecked,function(id, val) {
// displays the wanted value, e.g. "mapcat52" if checkbox with this id is checked
console.log(val);
// does not work: inserted value
map.removeLayer(val);
// works: hard coded value of the leaflet.js/input id
map.removeLayer(mapcat52);
});
});
Diese helfen könnten: https://stackoverflow.com/questions/39186001/ how-to-close-all-popups –