Клуб API Карт

Модуль для работы с баллунами объектов objectManager

whiterabbitpushkin
5 февраля 2015, 15:24

Добрый день,

Не работает методы open и close для баллунов объектов.

 

objectManager.objects.balloon.open(idObject);

 

Проблему вижу в подключенных модулях, а точнее не подключенных.

Подключая карту таким образом

<script src="http://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>

все хорошо, но когда выбираю модули

<script src="http://api-maps.yandex.ru/2.1/?lang=ru_RU&load=Map,geocode,ObjectManager,map.GeoObjects,templateLayoutFactory,option.presetStorage,objectManager.Balloon" type="text/javascript"></script>

методы open и close не работают.

Какие модули требуется подключить для работы этих 

10 комментариев
Всеволод Шмыров
27 января 2016, 23:10
Добрый день. Чтобы работали балуны нужно подключить аддоны "objectManager.addon.objectsBalloon" и "objectManager.addon.clustersBalloon". Из документации они пропали по ошибке - в ближайшее время  мы это поправим. В это случае не нужно отдельно подключать "objectManager.Balloon".
whiterabbitpushkin
27 января 2016, 23:10

Спасибо за ответ!

whiterabbitpushkin
27 января 2016, 23:10

У меня еще один вопрос по баллунам!

Как отследить событие закрытия баллуна?

У балунов кластера есть метод close, а objectManager есть что-то похожее?

В документации есть событие userclose , в каких случаях оно срабатывает? Если пользователь щелкнул на крестик у баллуна - это считается пользовательским закрытием баллуна? А если я применим метод закрытия баллуна

objectManager.objects.balloon.close(idObject);

на событие щелчка по объекту objectManager, при открытом баллуне - это считается пользовательским закрытием баллуна?

Пробовал написать так

// Функция закрытия баллуна

function ballonClose() {

    var idObject = e.get('objectId');

    console.log(idObject)

}

// Событие закрытия баллуна

objectManager.objects.balloon.events.add('userclose', ballonClose);

А браузер никак не откликается...

Всеволод Шмыров
27 января 2016, 23:10
Слушаете событие "close". "userclose" - это только лишь закрытие балуна по кнопке. Документацию в этом месте тоже поправим.
whiterabbitpushkin
27 января 2016, 23:10

Я пробовал)

Браузер в консоле ничего не выводит, из этого я сделал вывод, что "close" не отбрабатывает...

Для баллунов обработка события так подключается?

// Событие закрытия баллуна

objectManager.objects.balloon.events.add('userclose', ballonClose);

Может нужные еще какие-то методы требуется подключить?

Всеволод Шмыров
27 января 2016, 23:10
Хм. Должно работать. А балун сам закрывается или происходит "переход" между выбранными элементами? Ну то есть, просто контент меняется в балуне.
Всеволод Шмыров
27 января 2016, 23:10
Вообще я проверил в песочнице - работает
    objectManager.objects.balloon.events.add('close', function (e) {
       debugger;
    });

можете скинуть ссылку на ошибку?
whiterabbitpushkin
27 января 2016, 23:10

Балун закрывается, я его закрываю через

objectManager.objects.balloon.close(idObject);

Хм...очень странно!

Ваш способ работает, а если делать вот так

// Функция закрытия баллуна

function ballonClose() {

    var idObject = e.get('objectId');

    console.log(idObject)

}

// Событие закрытия баллуна

objectManager.objects.balloon.events.add('close', ballonClose);

то не работает!

Всеволод Шмыров
27 января 2016, 23:10
Вы потеряли переменную "e" в callback
whiterabbitpushkin
27 января 2016, 23:10

Простите меня за потраченное время и невнимательность)

Спасибо!