Клуб API Карт

Всплывающее окно при клике на ссылку в балуне.

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

Создаю все метки и стили с помощью YMapsML-файла.

Вот код шаблона в балуне:

 

        <Template gml:id="balloonTemplate">
            <text><![CDATA[
            <div class="baloon_block" style="font-size:12px;">
                        <div style="color:#ff0303;font-weight:bold">$[name]</div>                        
                        <div>Адрес: $[metaDataProperty.AnyMetaData.adres|не задан]</div>
                        <div>Телефон: $[metaDataProperty.AnyMetaData.telefon|не задан]</div>      
                        <div>Категория: $[metaDataProperty.AnyMetaData.category|не задан]</div>        
                        <div><a rel="ajax" href="http://site.ru/detal/$[metaDataProperty.AnyMetaData.url]/">Посмотреть</a></div>   
                    </div>]]></text>
        </Template>

 
Хочу сделать,чтобы по клику по ссылке открывалось всплывающее окно, в которое бы загружалась подробная информация. Но событие click не срабатывает. Ни по клику на ссылку, ни по клику по балуну.

 

 $("div.baloon_block").click(function(){
alert ("Сработал click на baloon");
});
$("#.baloon_block a[rel='ajax']").click(function(){
alert ("Сработал click на ссылку");
});

 

API как-то перехватывают события в области карты? Как мне лучше сделать вывод подробной информации. Очень не хотелось бы открывать её в одтельном окне.

Покопался в документации, понял что надо копать в сторону events. Попытался отловить клик по балуну:

    myMap.geoObject.Balloon.events.add('click', function () {

         alert ("baloon");
});

Всё равно ничего не выходит. Подскажите, как отловить клик по элементу внутри балуна.

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

когда вы навешиваете click балуна еще нет в DOM-дереве

попробуйте использовать live

спасибо, как же я сам до это упустил!

Подскажите, пожалуйста, ещё один момент.

Создаю метки из YMapsML-файла. Их описываю так:

<GeoObject>
<gml:name>pointIdgml:name>
<gml:description>descriptiongml:description>
<gml:metaDataProperty>
<AnyMetaData>
<adres>Адресadres>
AnyMetaData>
gml:metaDataProperty>
<gml:Point>
<gml:pos>37.8264 55.7378gml:pos>
gml:Point>
GeoObject>

В поле Id меняется, таким образом описывается много меток.
Пытаюсь открыть балун конкретной метки, например, метки point304

вот


function open_baloon(param) {
param.balloon.open();
}

Но балун не открывается. Как мне правильно обратиться к метке, зная её имя, и открыть балун?


Судя по вашему коду Вы у строки 'point304' вызываете поле

balloon?

 

YmapsML при получении преобразуется в геоколлекцию.

Вам надо перебрать ее элементы и найти нужный и открывать балун у него

Спасибо!

Вот так всё получилось:

function open_baloon(param) {
   
    myCollection.each(function (item) {
        item.each(function (obj) {
        var name = obj.properties.get('name');
       
        if (name==param) {obj.balloon.open();}
       
        });
   
});