Клуб API Карт

[API 2.0]

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

Добрый день всем!

 

Помогите решить следующую проблему:

на карту вывожу несколько Placemark, при клике по которым нужно:

  1. Открыть Ballon со стандартным текстом "Идет загрузка" - это я могу :)
  2. Узнать, по какому именно Placemark был щелчок, и сделать соответствующий ajax запрос. У каждого Placemark должен быть ID - число, указывающее к какой странице я буду делать запрос.
  3. В Ballon вместо стандартного текста поместить результат ajax запроса.

 

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

Вот мой код:

var placemark = new ymaps.Placemark(мои координаты,{balloonContent: 'Загрузка...'},{});

placemark.events.add("click", function (e) {мой обработчик, который пока только показывает Ballon});

myMap.geoObjects.add(placemark);

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

id пишете в properties и передаете в конструктор плейсмарка

в обработчике клика достаете id из properties и передаете его в запрос за данными

когда данные будут получены - обновляете у балуна метки properties.set('balloonContent', 'Новое значение плученное с сервера');

всё

Идею понял, а вот реализацию не очень :)

Раньше было все написано на 1 версии API, перевести на 2-ю ни как не получается...

 - пишу id в properties: new ymaps.Placemark(мои координаты,{balloonContent: 'Загрузка...', placeID: myPlaceId},{}) ;

 - и как достать id из properties в обработчике клика? я нашел в примерах только такое "доставание" координат в обработчике: e.get("coordPosition"). Хотел по аналогии написать e.get("placeID") , но само собой, нитут то было!

var pl = new ymaps.Placemark([_lat_, _lng_], {

    balloonContent : 'Загрузка...',

    objId : 1

}, {});

 

pl.events.add('click', function (e) {

     var id = e.get('target') // плейсмарк на котором кликнули

          .properties.get('objId');

});

 

Мы хотим в ближайшее время сделать пример как раз для вашего кейса

ибо он очень распространен

Оу, спасибо, все работает!

Ну и напоследок может ткнете меня в место, где я могу найти пример для замены этого кода из API первой версии:

var ps = new YMaps.Style();

ps.iconStyle = new YMaps.IconStyle();

ps.iconStyle.href = "myimage.png";

ps.iconStyle.size = new YMaps.Point(32, 37);

ps.iconStyle.offset = new YMaps.Point(-16, -35);

 

тут я пеперопределяю стиль для отображения Placemark.

Как и обещал, мы опубликовали пример на эту тему