2017-07-27 14 views
0

Leaflet.minicharts.jsプラグインでpiechartを作成しました。 チャートを追加するのに問題ありません。 しかし、私はもはやそれを取り除くことができません。 map.removeLayer(chart[i])で各グラフを個別に削除しようとしました。 また、すべてのチャートをレイヤーグループにまとめて、map.removeLayer(LayerGroup)という関数とlayergorup.clearLayers()という関数を使用しました。関数map.hasLayer(layer)を呼び出すと、falseが返されます。だから、すべて期待どおり。しかし、地図はまだ地図上に表示されています。 ここでは、ボタンクリックで削除しようとするbarchartの簡単な例を示します。リーフレットのミニチャレットを削除

<html> 
<head> 
    <title>Leaflet Test</title> 
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" 
    integrity="sha512-wcw6ts8Anuw10Mzh9Ytw4pylW8+NAD4ch3lqm9lzAsTxg0GFeJgoAtxuCLREZSC5lUXdVyo/7yfsqFjQ4S+aKw==" 
    crossorigin=""/> 
    <script src="https://unpkg.com/[email protected]/dist/leaflet.js" 
    integrity="sha512-mNqn2Wg7tSToJhvHcqfzLMU6J4mkOImSPTxVZAdo+lcPlk+GhZmYgACEe0x35K7YzW1zJ7XyJV/TT1MrdXvMcA==" 
    crossorigin=""></script> 
    <script src="https://unpkg.com/leaflet.minichart/dist/leaflet.minichart.min.js" charset="utf-8"></script> 
</head> 
<body> 
    <!-- CSS --> 
    <style type="text/css"> 
     #mapid { height: 480px; } 
     #butt {color:black;position: absolute;padding:2em;top:50%; left:50%;} 
    </style> 

    <div id="mapid"></div> 
    <button id="butt" onclick="vanish();">Remove Chart!</button> 
    <script type="text/javascript"> 
     var map = L.map('mapid').setView([50, 9], 14); 
     var tiles = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { 
      attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors', 
     }).addTo(map); 

     var center = [50, 9]; 
     function fakeData() {   
      return [Math.random(), Math.random(), Math.random()]; 
     }   

     var myBarChart = L.minichart(center, {data: fakeData()}); 
     map.addLayer(myBarChart); 


     function vanish(e) { 
      console.log(map.hasLayer(myBarChart)); 
      map.removeLayer(myBarChart); 
      console.log(map.hasLayer(myBarChart)); 
     } 

    </script> 

</body> 
</html> 

答えて

0

私は同じ問題を抱えていました。私がしたのは、レイヤーグループに "_chart"プロパティを持つレイヤーが含まれているかどうかを調べるためにレイヤーグループをループすることができる関数を書いたことです。その場合は、そのレイヤーを削除します。ループは、そのプロパティを持つすべてのレイヤーが削除されるまで続きます。ここに私が書いたコードがあります。

for(var i = 0; i<Object.keys(lyrGrp._layers).length;i++){ 

    if(lyrGrp._layers[Object.keys(lyrGrp._layers)[i]]._chart) 
     { 
     lyrGrp._layers[Object.keys(lyrGrp._layers)[i]]._chart.remove() 
     } 

} 

希望します。

関連する問題