Клуб API Карт

update балуна в API 2.0

Пост в архиве.

Пытаюсь перейти с 1й версии на 2ю - не знаю как перерисовать балун. В 1й версии для этого был метод update(). Для чего это надо: при клике по метке выводится сообщение в балуне "Ждите...", параллельно идет ajax запрос, возвращающий данные, которые по размерам больше отображаемого балуна. Нужно его перерисовать чтобы он "подстроился" под размеры контента. Спасибо

7 комментариев

он сам себя проапдейтит.

нужно поменять для него поле в данных (properties).

и балун сам подхватит изменения

Судя по http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/map.Balloon.xml у него всего 1 поле events

Я так понял вы имели ввиду у метки эти данные поменять? У метки не могу т.к. ajax-ответ просто говорит "покажи такие-то данные в балуне", т.е нет прямой связи с меткой, я могу там просто вопрос абстрактный задать, например

Sergey Konstantinov
28 января 2016, 04:49

Если балун открывается на геообъекте, то достаточно сменить геообъекту balloonContent.

Если на карте - то через setData() задайте новые данные.

у меня 2й случай, т.е.ваш совет типа:

var b = Map.balloon.open(coord);
b.setData({contentBody: 'test'}) ;

работает, но мне нужно немного другое: балун уже открыт, причем неважно как, мне нужно просто обновить его содержимое. Хотелось бы такое:

Map.balloon.setData({contentBody: 'test'}) ;

но такого метода нет. Непонятно почему, ведь балун существует в одном энкземпляре, почему я не могу обратиться к нему без ссылки на него. Например методу isOpen() не нужно такое

Есть хотя бы способ узнать по каким гео-координатам открыт балун? я бы тогда закрыл его и открыл снова - по идее при открытии он бы подстроился под контент

Вы можете сохранить в переменной, в какой координате открывали балун. Нет смысла в апи хранить такую информацию.

Это понятно, что я могу "такскать" по всем обработчикам координаты балуна, только это лишняя сущность. Балун - это диалоговое окно по сути. По каким-то координатам его кто-то открывает, затем запрос идет куда-то и там уже не нужны координаты, ответ идет в диалоговое окно. Первый мой вариант был с модальным окном, кстати. Потом я перешел на балун раз есть такая поддержка в 1й версии.

 

В общем, пока остался на 1й версии. Может разработчики изменят свое мнение по поводу максимальной минимизации количества методов.