##leaflet の独自タイルレイヤーの表示方法で悩んでいます。
- 下記のようなコードにすると、一度imgレイヤーを消してから、再度imgレイヤーを加えるように
なるのですが、例えば、時間を進むボタンなどを押して、このfunctionを呼び出すと、その度
に一度レイヤーが消えるのでチカチカして見づらいです。
javascript
1function addlayer(basetime,ft,valid,elem,l1,l2){ 2 ft = ('00' + ft ).slice( -2 ); 3 if (ft == 0 ){ft="00"}; 4 5 var imgdir = "/home/test/img/"+elem; 6 var jsondir = "/home/test/parse/json"; 7 8 //l1 = 1 (geojsom 表示) 9 //l2 = 1 (img表示) 10 11 // imgLayerの初期化 12 if (img != 0 ){ 13 map.removeLayer(img); 14 } 15 16 //imgタイルの追加 17 if (l2 == 1){ 18 img = L.tileLayer(imgdir+"/"+basetime+"/"+ft+"/{z}/{x}/{y}.png",{ 19 maxZoom: 8, 20 opacity:0.5, 21 }).addTo(map); 22 23 } 24 if (l1 == 1){ 25 //geojson の読み込み(同期) 26 $.getJSON(jsondir+"/"+valid+".json", function(data) { 27 // geoJSONLayerの初期化 28 if (geojson != 0){ 29 map.removeLayer(geojson); 30 } 31 geojson = L.geoJSON(data, { 32 onEachFeature:function (feature, layer) { 33 var name = feature.properties.area_en; 34 name = name.charAt(0).toUpperCase() + name.slice(1); 35 layer.bindPopup( 36 "CMAID:"+feature.properties.localid+"("+name+")</br>"+elem+":"+feature.properties[elem]/10 37 )}, 38 pointToLayer: function (feature, latlng) { 39 40 41 return new L.circleMarker(latlng, 42 {radius: 8, 43 fillOpacity: 0.8, 44 color: 'black', 45 fillColor: getColor(feature.properties[elem]/10,elem), 46 weight: 0,}); 47 } 48 }); 49 geojson.addTo(map); 50 }); 51 }else{ 52 //geoJSONLayerの初期化 53 if (geojson != 0){ 54 map.removeLayer(geojson); 55 } 56 } 57}
- tilelayerのpngが全てloadされた時に、layerを消すもしくは再描画する、みたいにするといいのだと
は思いますが、公式のdocを見てもうまくやり方がわかりません。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/20 00:35
2018/04/20 02:02
2018/04/20 04:44 編集
2018/04/20 04:47
2018/05/29 08:01
2018/05/29 08:16
2018/05/29 08:20
2018/05/29 08:31