根据主题,如何检查标记是否打开弹出窗口?
例如
var m = new L.marker([2,1]).addTo(map).bindPopup('test');
点击标记显然会打开弹出窗口。
是否有任何功能,例如:
if(m.popupOpen() == true) {
// do somehting
}
我尝试了以下内容:
m.on('click', function(e) {
if(m._map.hasLayer(m._popup)) {
// Do something
}
}
但它非常脆弱。在Chrome上,它将在Android浏览器上运行,如果在第二次点击时触发,那么它就不是真的可靠了。
有没有标准的方法呢?
由于
答案 0 :(得分:10)
你可以对L.Marker中包含的_popup对象的_isOpen属性进行快速而脏的检查:
var map = L.map('map').setView(L.latLng(0, 0), 0);
var marker = L.marker(L.latLng(0, 0)).addTo(map);
marker.bindPopup("Popup!");
var popup = marker.getPopup(); // returns marker._popup
console.log(popup._isOpen); // false
marker.openPopup();
console.log(popup._isOpen); // true
marker.closePopup();
console.log(popup._isOpen); // false
编辑:v1.0.0 L.Popup有一个isOpen
方法: