Клуб API Карт

Стилизация балуна

small_butterfly_long_long_as_long_as_i_can_do_it_here
12 мая 2012, 12:00

Есть стандартный балун:

Как из него в API 2.x сделать вот такой?

Сейчас это решено переопределением стилей CSS для всех элементов, но это очень ненадежное решение, потому что постоянно ломается расположение элементов. Есть ли возможность стилизовать балун, но сохранить возможность создания кнопки "закрыть" и футера? Если переопределятть balloonLayout, то кнопка "закрыть" перестает работать, а другие лэйауты управляют только содержимым балуна и остаются элементы стандартного балуна (например скругленные уголки и tail)

3 комментария
Подписаться на комментарии к посту

Чтобы заработала кнопка "закрыть", нужно слушать клики на этой кнопке, и по клику закрывать балун.

В лейаут балуна геообъекта передается dataSet, и одним из полей в этом наборе данных будет сам геообъект. Через него и можно получить доступ к балуну и дать ему команду закрыться.

small_butterfly_long_long_as_long_as_i_can_do_it_here
12 мая 2012, 18:04

dataSet передается только в debug-режиме. 

Если, конечно, это тот dataSet

build: function () {

            this.constructor.superclass.build.call(this);

            var balloon = this._dataSet.geoObject.balloon; //this._dataSet == undefined в release версии

            $('.balloon_close').on('click', function() {

                balloon.close();

            });

        }

Вы можете его получить через метод getData(), он описан в документации.

 var balloon = this.getData().geoObject.balloon;