Клуб API Карт

Динамические балуны

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

Хочется сделать возможность загрузки содержимого балунов (при клике) через Ajax.

С новыми балунами проблем вроде бы не вижу, а вот как быть с метками, которые грузятся через YandexML?

Примерный алгоритм:

В поле Description для метки я передаю некоторый ID. Далее при клике по этой метке, появляется балун. В нем надпись "Загружаю..", которая потом заменится на контент загруженный по аяксу. ID передается в запросе на контент.

Основная проблема: как отловить событе нажатия на метку?

1 комментарий
Вам необходимо навесить обработчики на добавленные метки на событие BalloonOpen.

YMapsML, добавленный на карту представляет из себя YMaps.GeoObjectCollection.

Соответственно можно сделать примерно вот так:
var ml = new YMaps.YMapsML('http://api.yandex.ru/maps/ymapsml/examples/parentstyleobject.xml');
map.addOverlay(ml);

YMaps.Events.observe(ml, ml.Events.Load, function () {
    this.get(0).forEach(function (obj) {
        YMaps.Events.observe(obj, obj.Events.BalloonOpen, function () {
            obj.setBalloonContent('Загружаю...');
            YMaps.jQuery.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function (data) {
                YMaps.jQuery.each(data.items, function (i,item) {
                    obj.setBalloonContent("");
                    return false;
                });
            });
        });
    });
});