Клуб API Карт

Автоматическая генерация меток на карте и генерация контента в балуне

parafail
24 апреля 2014, 03:18

На самом деле, мой вопрос немного о другом: 

Столкнулся с такой проблемой - необходимо генерировать(создавать) метки на карте. 

Координаты метки и доп. информация берется из БД. Это я сделал, с этим проблем нет. 

Но вот проблема появилась при изменении контента когда открывается балун.

Теперь чуть по подробней:

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

Раньше для каждой метки я создавал отдельную переменную и с обновление контента проблем не возникало. Теперь у меня метки автоматически генерируются и возникла проблема с обновлением в каждой метки информации. 

 

 

       function createPlaceMark(obj){ // функция для создания меток

          for (var i = 0; i <= obj.length - 1; i++) {

            myPlacearkArray[myPlacearkArray.length] = new ymaps.Placemark([obj[i].coordX,obj[i].coordY], { 

              iconContent: "Узнать погоду",

              balloonContentHeader:  obj[i].cityText.toString(),

              balloonContentBody: "<a>идет загрузка погоды на сегодня</a>",

              balloonContentFooter: 'много html кода'

            },{preset: "twirl#blueStretchyIcon"});

          

            myMap.geoObjects.add(myPlacearkArray[i]);

          }    

          return myPlacearkArray; //на это не оброщайте внимание       

        }

 

 

 

//Создавалась метка вручную

myPlacemarkNSK = new ymaps.Placemark([55.05385417, 82.88576487], { 

            iconContent: "Узнать погоду",

            balloonContentHeader: "Новосибирск",

            balloonContentBody: "<a>погода на сегодня</a>",

            balloonContentFooter: '<input type="button" onclick="pogoda(\'nsk\',\'current\')" value="Сегодня"> <input type="button" onclick="pogoda(\'nsk\',\'w3day\')" value="На 3 дня"> <input type="button" onclick="pogoda(\'nsk\',\'w10day\')" value="На 10 дней">'

        },{preset: "twirl#blueStretchyIcon"});

 

//И вот так вот обновлялся в ней контент при открытии (я просто взял пример из документации и чуть чуть переделал для себя) 

myPlacemarkNSK.events.add('balloonopen', function (e) {

          OpenPlacemark(myPlacemarkNSK,'nsk','current');

        });

 

Вопрос: Как мне реализовать вот это "myPlacemarkNSK.events.add('balloonopen..........." при автоматической генерации меток? 

Пробовал в цикле for (который создает метки) добавлять myPlacearkArray[i].events.add('balloonopen', function (e) {

          OpenPlacemark(myPlacearkArray[i], obj[i].cityName.toString(),obj[i].whtView.toString();

        });

На что JS естственно ругался. 

P.S. Помогите Христа ради =)

3 комментария
Подписаться на комментарии к посту

можно же слушать balloonopen на коллекции.

но я бы слушал клик.

myMap.geoObjects.events.add('click', function (e) {

    console.log(e.get('target'));  // метка, на которой был клик

});

Спасибо бабушка-бэтмен =)

А не подскажешь, можно ли в метку добавлять свои свойства? 

Мне для обновления информации в балуне надо передавать еще два параметра

Все, спасибо, разобрался=) И еще раз большее спасибо за помощь =)