закрыть balloon yandexmap
Всем привет, пытаюсь закрыть по событию клика по метке балун, но он совсем не хочет закрываться. Если я оставлю setTimeout(function () { myMap.balloon.close(); }, 3000); то все нормально отрабатывает, но мне не подходит через таймаут, еще если использовать команду myMap.balloon.events.close(); , то свою задачу она выполнит, но браузер будет говорить про ошибку placemark_layout.js:6718 Uncaught TypeError: myMap.balloon.events.close is not a function. Что я делаю не так? https://jsfiddle.net/bgrm497t/
InstDriverCollection.events.add('click', function (e) {
// setTimeout(function () { myMap.balloon.close(); }, 3000);
myMap.balloon.close();
})
Ответы (1 шт):
Для того, чтобы по клику на метку балун закрывался, нужно отказаться от стандартного поведения балуна и управлять балуном самостоятельно.
Для этого добавляем в опции метки флаги:
preset: 'islands#blueCircleDotIcon', // чтобы метка не загораживалась балуном
openBalloonOnClick: false // чтобы балун не открывался самостоятельно
и добавляем обработку события:
mark.events.add('click', function (e) {
let balloon = myMap.balloon;
if (balloon.isOpen()) {
balloon.close();
} else {
let data = mark.properties.get('balloonContent');
let coords = mark.geometry.getCoordinates();
balloon.open(coords,data);
}
})
Ещё перед закрытием балуна можно добавить проверку, что балун имеет те же координаты и содержимое, что и метка.