宣传单:每个标记上的自动打开弹出窗口

时间:2016-10-12 04:43:16

标签: javascript popup leaflet

我按照IvanSanchez's snakeIn在每条折线后绘制每个标记。

代码已被修改,例如

   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());

我一直在尝试使用Leaflet popup,我可以为每个标记绑定。 我的问题是如何在绘制标记时自动打开每个弹出窗口,然后在绘制下一个标记时自动关闭,等等......

1 个答案:

答案 0 :(得分:2)

在Leaflet中,每个图层(包括标记)都有add event,当它添加到地图时会触发。

在内部,Leaflet.Polyline.SnakeAnim的代码在蛇形动画运行时从LayerGroup中删除并添加图层;这意味着蜿蜒进入的图层将触发add事件。

此外,每次创建新图层时,运行蛇形动画的LayerGroup(或FeatureGroup)都会触发snake事件。但请注意,此事件不会引用刚刚蜿蜒的图层。

类似于:

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

你也说:

  

然后在绘制下一个标记时自动关闭

首先阅读L.Map.openPopup的文档,然后阅读:

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