我的问题是我无法删除每个复选框的图层,我已经发布了此问题,遗憾的是我没有得到任何答案。我现在尝试使用图层组,我为每个单击的复选框添加了图层组,但是当我尝试删除每个图层时,它会移除最后一个图层,所以我注意到图层没有添加到图层组。换句话说,如何动态地向图层组添加图层 每次点击给定的复选框时如何添加图层?你能帮我解决一下这个问题吗?任何帮助表示赞赏。这是一段代码:
php文件:
<script type="text/javascript">
$(document).ready(function(){
$('input[id^="DisplayCheckbox"]').on('click',function()
{
parent = $(this).val();
Coord = $(this).parents('#' + parent).find("li.Liste").text();
window.valChk = $(this).val();
if($(this).is(":checked"))
{
valChk = $(this).val();
$.drawPoly(Coord);
}else
{
$.removePoly(valChk);
}
});
});
</script>
&#13;
外部jquery文件:
$.drawPoly = function(data)
{
data = $.parseJSON(data);
var geojsonFeature =
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": data.type,
"coordinates": data.coordinates
}
}]
};
window.poly=L.geoJson(geojsonFeature);
poly.id = valChk;
layerGrp=L.layerGroup([poly]);
addLayer(valChk);
};
function addLayer(id){
layerGrp.eachLayer(function (layer) {
if(layer.id == id){
layerGrp.addLayer(layer).addTo(map);
map.fitBounds(layer.getBounds());
console.log(layer._leaflet_id);
}
});
}
$.removePoly = function(id)
{
layerGrp=L.layerGroup([poly]);
layerGrp.eachLayer(function (layer) {
if(layer.id == id)
{
console.log(layer._leaflet_id);
layerGrp.removeLayer(layer);
}
});
};
&#13;
答案 0 :(得分:0)
在我看来,关于该问题的上一个问题answer对于您在此处发布的代码仍然有效:您似乎有一个范围问题(实际上,有几个问题)它们)。
更具体地说,您的layerGrp
变量全局使用,并在$.removePoly
(声明layerGrp=L.layerGroup([poly])
)内重新分配。因此,您将失去对添加到addLayer
地图中的先前图层的引用,并且您无法再将其删除。
您的代码过于复杂,难以理解它的作用。
简化后,我相信您将能够解决您的问题。