Używam pliku Leaflet.js do wyświetlenia na mapie. Teraz chcę usunąć dodane warstwy z mapy. Klikając na przycisk wejściowy #, wszystkie zaznaczone pola wyboru zostaną zmienione na niezaznaczone, a wszystkie odpowiednie warstwy zostaną usunięte z mapy.Leaflet.js: Jak usunąć wiele warstw z mapy
Aby usunąć warstwę z mapy, wymagany jest identyfikator warstwy. Ten identyfikator jest równy identyfikator odpowiedniego pola wyboru. Dlatego używam jQuery, aby uzyskać identyfikatory wszystkich zaznaczonych pól wyboru i zapisać ich wartość w obiekcie o nazwie someObj.idsChecked.
Kiedy próbuję użyć zapisanej wartości val usunąć jedną warstwę to nie działa natomiast console.log wyświetla wartość chcieliśmy. Tutaj na przykład: mapcat52.
Podczas wstawiania poprzedniego identyfikatora twardego zakodowanego w funkcję taką jak map.removeLayer (mapcat52) działa zgodnie z oczekiwaniami.
Gdzie jest błąd w moim kodzie lub moich myślach?
Każda pomoc jest doceniana.
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>
...
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);
});
});
To może pomóc: https://stackoverflow.com/questions/39186001/ how-to-close-all-popups –