Javascript 同时打开几个弹出窗口

Javascript 同时打开几个弹出窗口,javascript,leaflet,Javascript,Leaflet,在jquery$.getJSON调用中,我创建了几个标记和弹出窗口,然后将弹出窗口绑定到标记: $.each(points, function(index, p) { var marker = L.marker(L.latLng(p.lat, p.lon), { title: p.text }); var popup = L.popup().setContent(p.text); marker.bindPopup(popup); } 我想在地图加载后打开标记上的所有弹出窗口(

在jquery$.getJSON调用中,我创建了几个标记和弹出窗口,然后将弹出窗口绑定到标记:

$.each(points, function(index, p) {
   var marker = L.marker(L.latLng(p.lat, p.lon), { title: p.text });
   var popup = L.popup().setContent(p.text);
   marker.bindPopup(popup);
}
我想在地图加载后打开标记上的所有弹出窗口(如果可能,请保持打开状态)。传单1.0文档说明:“使用Map.openPopup…或使用Map.addLayer打开任意多个。”

如果可能的话,我更喜欢使用“内置”解决方案,而不是我必须四处摆弄的解决方案(如中)。一个优点是这种方法可以通用,例如打开所有工具提示。这可能会帮助我更好地理解图层


我尝试了几种方法,包括图层组和功能组,但都没有效果。如何一次打开一组弹出窗口?

您可以使用包含所有弹出窗口的图层组。这样,您就拥有了弹出窗口的所有组控制功能

我在JSfidle()上复制了一个基本示例,但是您可以想象只从layerGroup中删除某些弹出窗口,而不是一次删除所有弹出窗口。以下是代码的关键部分:

var popup_layer = new L.layerGroup();

$.each(testData, function(index, p) {
   var marker = L.marker(L.latLng(p.lat, p.lon));
   marker.addTo(map);
   popup = new L.popup({offset:  new L.Point(0, -30)});
   popup.setLatLng(L.latLng(p.lat, p.lon));
   popup.setContent(p.text);
   popup.openPopup();
   popup_layer.addLayer(popup);
});

popup_layer.addTo(map);