2016-10-12 20 views
0

IvanSanchez's snakeInに従うと、各ポリラインの後に各マーカーを描画します。リーフレット:各マーカーの自動開くポップアップ

コードは、私は、各マーカーのためbindpopupできLeaflet popup、一緒にプレイしようとしている

var markers = [[63.5, 11], 
    [40.5, -3.5], 
    [51.5, -0.5], 
    [52.3, 4.75], 
    [39.5, -0.5]]; 

    var route = L.featureGroup().addTo(map); 

    var n = markers.length; 

    for (var i = 0; i < n-1; i++) { 
     var marker = new L.Marker(markers[i]); 
     var line = new L.polyline([markers[i],markers[i+1]]); 
     route.addLayer(marker); 
     route.addLayer(line); 
    }; 
    route.addLayer(new L.Marker(markers[n-1])); 

    map.fitBounds(route.getBounds()); 

のように変更されました。 私の質問は、マーカーを描いたときに各ポップアップを自動的に開き、次のマーカーが描画されると自動的に閉じられるようにする方法です...

答えて

1

リーフレットでは、 add eventがマップに追加されたときに発生します。

内部的に、Leaflet.Polyline.SnakeAnimのコードは、スネアアニメーションの実行時にレイヤーグループからレイヤーを削除して追加します。これは、スニークしているレイヤーがaddイベントを発生させることを意味します。

また、蛇行アニメーションを実行しているLayerGroup(またはFeatureGroup)はsnakeイベントに新しい層が中に蛇行されるたびに起動します。ただし、このイベントは単なる-蛇行-に層への参照を持っていないこと。

だから、のようなもの:また言う

marker1.on('add', function(){ 
    // Open popup for marker 1 
}); 

、それが自動的に閉じる次のマーカーが描画されるとき意志、

まずL.Map.openPopupのためのドキュメントを読んで、次に:

marker1.on('add', function(){ 
    map.openPopup(popupForMarker1); 
}); 
+0

---
VARマーカー=新しいL.Marker(LOC、{アイコン:allIcon})。 marker.on( 'add'、function(){ map.openPopup( "my content"); }); var line = new L.polyline([loc、nextLoc]); route.addLayer(marker); route.addLayer(line);
--- 他のマーカーを追加していないようですが、最初のマーカーだけが追加されてそこに貼り付けられます。ポップアップも表示されません。 – Tenz

+0

例を挙げることができますか?それは本当に私にとってはうまくいかず、SnakeIn機能が停止しました。 – Tenz

+0

本当にうまくいきません。私はあなたが言ったように努力してきました。関数内で各マーカーがスネーク上に描画されている場合は、ポップアップが表示されません。 – Tenz

関連する問題