Клуб API Карт

кнопка с onclick в балуне от метки

youlikes-adm2
14 мая 2016, 23:05

есть карта, гружу метки средствами хмл. в дескрипшн пытаюсь засунуть кнопку, при клике на которую у меня бы что-то случалось в функции seepost. например,  alert('ok');

код метки:

<ymaps:GeoObject>
 <gml:description>

 <button type="button" onclick="seepost(12);"> Посмотреть пост</button>'

</gml:description>
</ymaps:GeoObject> 

но после загрузки хмл в карту - события onclick="seepost(12);" куда-то пропадают.

как реализовать кнопку с онкликом в балуне?

спасибо!

7 комментариев
Подписаться на комментарии к посту
https://tech.yandex.ru/maps/doc/ymapsml/1.x/guide/concepts/templates-docpage/

Таблица 1. Ограничения на использование HTML в шаблонах



Можно реализовать свой макет через ymaps.templateLayoutFactory
обработчики событий можно навешивать в методе build макета
спасибо, понял. понял что всё сложно)
у меня такая задача: есть карта, на карте метки. при клике на метку (в идеале при клике на всплывший после клика балун или кнопку в балуне) нужно грузить информацию соответствующую этой метке аяксом и вставлять в указанное место на сайте. я всё умею, кроме:
подскажите, пожалуйста, как сделать чтобы при клике на метку (в идеале - на балун) - срабатывало alert('gml:name')? про события читал, но почему-то всё ругается на "Uncaught TypeError: Cannot read property 'observe' of undefined", да и как отличить клик по карте от клика от метки я тоже совсем не понял. 
заранее спасибо!
youlikes-adm2,



Можно слушать "balloonopen"


http://jsfiddle.net/Ly6t5stt/
спасибо! практически то, что нужно. остался один момент.
 нужно к каждой метке прикрепить уникальное числовое значение (id), а при открытии балуна передавать это значение в нужную функцию. в связи с чем у меня есть два вопроса:
1) куда лучше записать айди в хмл описании метки? в метадату? 
2) как правильно этот айди прочитать? пока места для айди не нашлось, пишу его в описание:
 myMap.geoObjects.events.add('balloonopen', function (e) {
var targ = e.get('target');
var descr = targ['description']; // как записать это правильно?
console.log(descr);
});


буду рад примерам по обоим вопросам!
youlikes-adm2,


1) Лучше записать в данные метки (properties) 
new ymaps.Placemark(_coords_, {id: 'myId'})


получить в событии так:
e.get('target').properties.get('id')
Обязательно с onclick?
Может как-то так?


<div class="seepost" data-id="12">


$("div.seepost").click(function(){
 seepost($(this).data('id'));
});

я Вас понял, спасибо! сделал в хмл так:


<ymaps:GeoObject>
<gml:description>
<div class="mappost" data-id="12">текст</div>
</gml:description>
<gml:Point>
<gml:pos>координаты</gml:pos>
</gml:Point>
<ymaps:style>иконка</ymaps:style>
</ymaps:GeoObject> 


в страницу добавил скрипт:


$('div.mappost').click(function(){
alert('работает!');
seepost($(this).data('id'),'');
});


но при клике ничего не происходит. что я делаю не так?