我有存储在我的数据库中的图层样本,我试图在面板中显示这些图层的名称,每个图层都与一个复选框相关联。当我检查每个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;
答案 0 :(得分:0)
这是因为您要删除“新创建”功能 - 没有对现有图层的引用。 在 layer.addTo(map)之前给出一个图层私有属性,例如 layer._id = 1 。在else块中,让我们迭代所有图层并尝试通过id找到它。像这样:
map.eachLayer(function(layer){
if(layer._id == 1) map.removeLayer(layer)
})