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

Javascript 在添加图层时自动打开弹出窗口,javascript,leaflet,Javascript,Leaflet,我有一条多段线,当用户在“层控制”菜单中选择多段线层时,需要自动打开一个弹出窗口。 这种方法对我不起作用: HTML: 多段线图层 将多段线添加到地图后运行openPopup()。从您请求将图层添加到地图的那一刻起,到该图层实际位于地图上/准备打开其弹出窗口的那一刻,很可能会有延迟 您只需添加一个事件监听器(使用事件),该监听器将在将图层添加到地图时自动打开弹出窗口: layer.on(“添加”),函数(事件){ event.target.openPopup(); }); 演示:(使用图层控件

我有一条多段线,当用户在“层控制”菜单中选择多段线层时,需要自动打开一个弹出窗口。

这种方法对我不起作用:

HTML:

多段线图层

将多段线添加到地图后运行
openPopup()

从您请求将图层添加到地图的那一刻起,到该图层实际位于地图上/准备打开其弹出窗口的那一刻,很可能会有延迟

您只需添加一个事件监听器(使用事件),该监听器将在将图层添加到地图时自动打开弹出窗口:

layer.on(“添加”),函数(事件){
event.target.openPopup();
});

演示:(使用图层控件将图层添加到地图)

我尝试了:case“polyline”:切换图层(this.checked,polyline);polyline.openPopup();它在Chrome中工作,但在IE中突然关闭。我在console中也遇到一个错误:“必须在使用getCenter()之前向地图添加图层”。不幸的是,我使用的是一个自定义覆盖菜单,我需要用于此特定项目,以便于样式设置,因此需要像代码中所示那样扩展控件。另一方面,我可能只是设置bindTooltip函数的样式,因为该方法是有效的。无论是以编程方式(通过自定义控件)添加层还是使用层控件,都不应影响此解决方案。更新的演示:谢谢,gyhbs。不幸的是,IE仍然存在问题。所以,我做了一些研究,发现我必须添加以下内容:L.DomEvent.disableClickPropagation(container);这解决了我的问题!谢谢
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 ...
    }
});
<label><input id="polyline" type="checkbox" class="check">Polyline layer</label>