2017-02-16 1 views
0

私は問題を抱えていますが、私はそれを2日以内に解決しようとしていますので、postgresデータベースからデータを取得します。チェックボックスをクリックすると、指定したチェックボックスをクリックすると、リーフレットを使用して地図上に対応するレイヤーが表示されます。私の目的は、このレイヤーを動的に作成して、指定されたチェックボックスをオフにしたときに各レイヤーを削除できるようにすることです。各チェックボックスをクリックすると、関連する要素の座標をデータベースから検索してマップに表示できますが、チェックボックスをオンにすると、このチェックボックスの対応するレイヤではなく最後のレイヤが常に削除されます。私は明らかに希望します。どんな助けもありがとうございます。あなたは以下の私のコードを見つけます:リーフレットを使用して各チェックボックスに関連付けられたレイヤーを削除することはできません

をPHPファイルのスニペット:

while ($row = pg_fetch_array($result)) 
 
       { 
 
        echo '<div id="' . $row['nom'] . '" class="col-sm-10"><li class="Liste">' . $row['nom'] . '</li>  
 
        <div class="checkbox chk"> 
 
        <label><input type="checkbox" name="id" id="DisplayCheckbox" value="' . $row['nom'] . '"></label> 
 
        </div>'; 
 

 
        $variable=$row2['nom']; 
 
        if($result) 
 
       { 
 
        $query2 = "SELECT st_asgeojson(st_transform(geom,4326)) from domaine where nom='$variable'"; 
 
        $result2 = pg_query($query2); 
 
        while ($row2 = pg_fetch_array($result2)) 
 
        { 
 
         echo '<li class="Liste" name="id" style="display:none;">' . $row2[0]. '</li></div><br/>'; 
 
        
 
        } 
 
        
 
       } 
 
       } 
 
       echo '</ul>'   
 
     } 
 

 
?> 
 
<script type="text/javascript"> 
 

 
$(document).ready(function(){ 
 
$('input[id^="DisplayCheckbox"]').on('click',function() 
 
{ 
 
    parent = $(this).val(); 
 
    Item = $(this).parents('#' + parent).find("li.Liste").text(); 
 
    
 
      
 
      if($(this).is(":checked")) 
 
       
 
      $.drawCategory(geoItem); 
 
      else 
 
       
 
      $.removeItem(CategoryItem); 
 
     
 
}); 
 
}); 
 
</script>

外部jqueryのファイル:

$.drawCategory = function(data) 
 
{ 
 
     dataCategory = $.parseJSON(data); 
 
       
 
       
 
       var geojsonFeature = 
 
       { 
 
         "type": "FeatureCollection", 
 
         "features": [{ 
 
         "type": "Feature", 
 
         "geometry": { 
 
            "type": dataCategory.type, 
 
            "coordinates": dataCategory.coordinates 
 
           } 
 
         }] 
 
       }; 
 

 
       
 
       Item=L.geoJson(geojsonFeature).addTo(map); 
 
       map.fitBounds(Item.getBounds()); 
 
       
 
}; 
 

 
$.removeItem = function() 
 
{  
 
     
 
     map.removeLayer(Item); 
 
     
 
     
 
};

+0

コード内の角括弧と中括弧が一致せず、構文エラーが発生します。それをもう一度確認してください。 – IvanSanchez

+0

それは終わりましたが、コードを実行したときに構文エラーが発生しないので、入力エラーです。 @IvanSanchezあなたは私の問題を解決するための任意のアイデアを持っていますか? – nermiiine

答えて

1

このチェックボックスでは、常に最新のレイヤーが削除され、対応するレイヤーは削除されません。あなたのコードが削除される層のためのちょうどの参照を使用し、その参照は、あなたはそれがあることを期待しどこの外側の変数のスコープであるため、おそらくです

また、コードは不正です。

$.removeItem(CategoryItem); 

しかしCategoryItemはそのスコープで使用できない、さらにその関数の定義は、任意の引数を取りません:

$.removeItem = function() 

あなたのコードやドキュメントをきれいに(のように関数呼び出しがありますコードの形式)は、関数のインプット、エフェクト、アウトプットを示します。根本的な問題は、自分のコードが何をするのかを制御できないことです。

+0

私はこの問題を解決しようとし、問題が解決したかどうかを教えてくれます。どうもありがとうございます。 – nermiiine

+0

これを修正するのを手助けできますか?ブロックされています。 – nermiiine

関連する問題