在图层添加上自动打开弹出窗口

时间:2016-10-11 12:11:48

标签: javascript leaflet

当用户在图层控制菜单中选择折线图层时,我有一条需要弹出窗口的折线。

  

这种方法对我不起作用:

var polyline = L.geoJson(myData).bindPopup("<h1>Some Text goes here</h1>").openPopup();

如何进行自动弹出?

这是我当前的设置:

var polyline = L.geoJson(myData).bindPopup("<h1>Some Text goes here</h1>");

var overlaysMenuCtrl = L.Control.extend({ ... blah blah... });

map.addControl(new overlaysMenuCtrl)());

我扩展了控件并添加了一个自定义函数来检查用户打开/关闭的图层:

function toggleLayer(checked, layer){
    if(checked){
        map.addLayer(layer);
    } else {
        map.removeLayer(layer);
    }
}

$(".check").change(function(){
    var layerClicked = $(this).attr("id");
//Turn layers on and off based on the ID of the radio checked
   switch(layerClicked){
    case "polyline": toggleLayer(this.checked, polyline);
    break;
    ...and other layers ...
    }
});

HTML:

<label><input id="polyline" type="checkbox" class="check">Polyline layer</label>

2 个答案:

答案 0 :(得分:1)

从您请求将图层添加到地图的那一刻起,以及该图层实际上在地图上/准备好打开其弹出窗口之间,可能会有一段延迟。

您可以简单地添加一个事件监听器(使用"add"事件),只要将图层添加到地图中,该事件监听器就会自动打开弹出窗口:

layer.on("add", function (event) {
  event.target.openPopup();
});

演示:https://jsfiddle.net/3v7hd2vx/101/(使用图层控件将图层添加到地图中)

答案 1 :(得分:0)

后,将折线添加到地图中,然后运行openPopup()