使用复选框打开和关闭图层

时间:2017-08-29 17:20:31

标签: leaflet

我有存储在我的数据库中的图层样本,我试图在面板中显示这些图层的名称,每个图层都与一个复选框相关联。当我检查每个checkbow时,我想在地图上添加其对应的图层,并在未选中复选框时将其从地图中删除。我的问题是我无法从地图中删除图层。 这是我的php和jquery代码段:

** jquery文件**



$.get( $("#myForm5").attr("action"),
$("#myForm5 :input").serializeArray(),
function(data) {
 $("#Liste").html(data);
                      $('input[id^="DisplayCheckbox"]').on('change', function() 
{
 var CoordItem =  $(this).parents("div.parent").find("li#Lis  te").text();
 var content = $(this).val();
 var DataItem = $(this).parents("div.parent").find("li#ListeData").text();
var array = DataItem.split(',');

var dataDomaine = $.parseJSON(CoordItem);
var geojsonFeature = 
 {
    "type": "Feature",
    "properties": {
    "name": content,
     },
     "geometry": {
       "type": dataDomaine.type,
       "coordinates":dataDomaine.coordinates
     }
 };
 var layer = L.geoJson(geojsonFeature);
                    if($(this).is(":checked"))
 {
   layer.addTo(map);
   map.fitBounds(layer.getBounds());
 
 }else
 {    
                                              map.removeLayer(layer); 
                               
 
 });//end change checkbox

});//end get function




php文件



<?php
......
echo '<ul>'
echo '<div id="' . $row2['nom'] . '" class="col-sm-10 parent"><li class="Liste" id="idListe">' . $row2['nom'] . '</li>
<div class="checkbox DisplayLayer">
<label><input type="checkbox" name="id" id="DisplayCheckbox" value="' . $row2['nom'] . '"></label></div>
 <li id="ListeData" name="id" style="display:none;">' . $tostring. '</li>';
.......
echo '<li id="ListeGeom" name="id" style="display:none;">' . $row3[0]. '</li></div><br/>';

echo '</ul>
?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

这是因为您要删除“新创建”功能 - 没有对现有图层的引用。 在 layer.addTo(map)之前给出一个图层私有属性,例如 layer._id = 1 。在else块中,让我们迭代所有图层并尝试通过id找到它。像这样:

map.eachLayer(function(layer){
    if(layer._id == 1) map.removeLayer(layer)
})