Leastlet.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
}
}
.
Но это очень flaky.На 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