تحقق leaflet.js مما إذا كانت العلامة بها نافذة منبثقة مفتوحة
-
26-12-2019 - |
سؤال
وفقًا للموضوع، كيف يمكنني التحقق مما إذا كانت العلامة بها نافذة منبثقة مفتوحة؟
على سبيل المثال.
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 إذا سيتم تشغيله عند النقرة الثانية، لذا فهو غير موثوق به حقًا.
هل هناك أي طريقة قياسية للقيام بذلك؟
شكرًا
المحلول
يمكنك إجراء فحص سريع وقذر على خاصية _isOpen للكائن _popup الموجود داخل L.Marker:
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
طريقة:
لا تنتمي إلى StackOverflow