我正在使用 Leaflet.js 作为地图。现在我想从地图中删除添加的图层。通过单击输入#button,所有选中的复选框都应更改为未选中,并且应从地图中删除所有相应的图层。
要从地图中删除图层,需要图层的 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);
});
});