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