我正在使用Leaflet.js作爲地圖。現在我想從地圖中刪除添加的圖層。通過點擊輸入#按鈕,所有選中的複選框將被更改爲未選中,並且所有相應的圖層將從地圖中移除。Leaflet.js:如何從地圖中刪除多個圖層
要從地圖中刪除圖層,需要圖層的ID。此ID等於相應複選框的ID。這就是爲什麼我使用jQuery獲取所有選中的複選框的ID並將其值存儲在一個對象中,這裏稱爲 someObj.idsChecked。
當我嘗試使用儲值 VAL去除一層這是行不通的,而的console.log顯示想要的值。這裏例如:mapcat52。
雖然將以前的ID硬編碼插入到像 map.removeLayer(mapcat52)這樣的函數中,但它按預期工作。
我的代碼或我的想法中的錯誤在哪裏?
任何幫助非常感謝。
的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);
});
});
這可能幫助:https://stackoverflow.com/questions/39186001/ how-to-close-all-popups –