Клуб API Карт

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

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

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

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

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

3 комментария

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

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

small_butterfly_long_long_as_long_as_i_can_do_it_here
28 января 2016, 04:46

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;