使用Leaflet单击复选框时,无法动态地将图层添加到图层组

时间:2017-02-22 11:10:24

标签: leaflet

我的问题是我无法删除每个复选框的图层,我已经发布了此问题,遗憾的是我没有得到任何答案。我现在尝试使用图层组,我为每个单击的复选框添加了图层组,但是当我尝试删除每个图层时,它会移除最后一个图层,所以我注意到图层没有添加到图层组。换句话说,如何动态地向图层组添加图层 每次点击给定的复选框时如何添加图层?你能帮我解决一下这个问题吗?任何帮助表示赞赏。这是一段代码:

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;
&#13;
&#13;

外部jquery文件:

&#13;
&#13;
$.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;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

在我看来,关于该问题的上一个问题answer对于您在此处发布的代码仍然有效:您似乎有一个范围问题(实际上,有几个问题)它们)。

更具体地说,您的layerGrp变量全局使用,并在$.removePoly(声明layerGrp=L.layerGroup([poly]))内重新分配。因此,您将失去对添加到addLayer地图中的先前图层的引用,并且您无法再将其删除。

您的代码过于复杂,难以理解它的作用。

简化后,我相信您将能够解决您的问题。