Клуб API Карт

Расширяемый Balloon

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

Ещё раз здравствуй, уважаеме сообщество. Сегодня новый день и новая задача. Проблема возникла в следующем. Понадобилось мне сделать внутри балуна раскрывающийся див, наподобии аккордиона.

Сначала пытался использовать $('.balloonClass').bind('click',function(){ %здесь код по раскрытию и сворачиванию дива% }); код по неведомым мною причинам не отображался, потом пытался реализовать эту задачу напрямую навесив onclick на анкер внутри балуна, но тоже без результатно.

Так вот непосредственно вопрос: данную задачу можно реализовать средствами JS или это реализовывается только через Yandex map API?

 

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

Это делается средствами JavaScript.


Необходимо, чтобы при щелчке на ссылку отображалась дополнительная информация в балуне?

Именно. пытался сделать через изменения css стиля Display для элемента div внутри балуна, но js по каким-то причинам не срабатывал.

Делаем небольшой макет:

function MyLayout (context, map, owner) {
    var layout = YMaps.jQuery(
        '' + (context.name || "") + '\
        \
            подробнее\
            ' + (context.description || "") + '\
        '
    )
        .find(".more")
            .bind("click", function () {
                YMaps.jQuery(this).css("display", "none");
                layout.find(".description").css("display", "");
                context.getBalloon().update();
                return false;
            })
        .end();

    this.onAddToParent = function (parentNode) {
        layout.appendTo(parentNode);
    };

    this.onRemoveFromParent = function () {
        layout.remove();
    };

    this.update = function () {}
}

И используем его:

var placemark = new YMaps.Placemark(map.getCenter(), {
    style : {
        balloonContentStyle : {
            template : new YMaps.LayoutTemplate(MyLayout)
        }
    }
});
placemark.name = "Имя объекта";
placemark.description = "Описание объекта
Описание объекта";
map.addOverlay(placemark);

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

Великолепно! Спасибо огромное=)

И ещё, каким образом можно на PlaceMark навесить событие "OpenBalloon"? При создании объекта PlaceMark?