Tôi đang sử dụng Leaflet.js cho bản đồ. Bây giờ tôi muốn xóa các lớp đã thêm khỏi bản đồ. Bằng cách nhấp vào đầu vào #, tất cả các hộp kiểm đã chọn sẽ được thay đổi thành không được chọn và tất cả các lớp tương ứng sẽ bị xóa khỏi bản đồ.Leaflet.js: Cách xóa nhiều lớp khỏi bản đồ
Để xóa lớp khỏi bản đồ, cần phải có id của lớp. Id này bằng id của hộp kiểm tương ứng. Đó là lý do tại sao tôi sử dụng jQuery để lấy các id của tất cả các hộp kiểm được chọn và lưu trữ giá trị của chúng trong một đối tượng, ở đây được gọi là someObj.idsChecked.
Khi tôi cố gắng sử dụng các giá trị được lưu trữ val để loại bỏ một lớp nó không hoạt động trong khi console.log hiển thị giá trị truy nã. Ví dụ: mapcat52.
Trong khi chèn id trước đó được mã hóa cứng vào hàm như map.removeLayer (mapcat52), nó hoạt động như mong đợi.
Lỗi trong mã hoặc suy nghĩ của tôi ở đâu?
Bất kỳ trợ giúp nào được đánh giá cao.
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>
...
Các 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);
});
});
này có thể giúp: https://stackoverflow.com/questions/39186001/ Làm thế nào để đóng tất cả các cửa sổ bật lên –