2017-08-29 70 views
0

我有我的數據庫中存儲的圖層樣本,我試圖在面板中顯示此圖層的名稱,每個圖層都與一個複選框相關聯。當我檢查每個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> 
 
?>

回答

0

這是因爲要卸下「新建「功能 - 沒有對現有圖層的引用。 之前layer.addTo(地圖)給出層私有屬性,例如layer._id = 1。在else塊中,讓我們迭代所有圖層並嘗試通過id找到它。事情是這樣的:

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

我會盡力的,謝謝@Sebastian舒爾茨 – nermiiine

+0

我面臨的一個問題,我無法弄清楚如何動態地創建此ID,因爲層添加到動態映射當每個複選框被選中,我不知道如何更改每個圖層的圖層ID。你能幫我嗎? – nermiiine

+0

我還沒有找到解決我的問題 – nermiiine