Клуб API Карт

назначение событий на отдельный placemark api Яндекс.карт 2.0

Sergey Peshalov
11 июля 2012, 19:51

 

placemarks = []; //массив меток для добавления в кластер, а затем на карту

                            var myCustMap;

                           //aCity - название города

ymaps.geocode(aCity).then(function (res) {

                                myCustMap = new ymaps.Map('CustomerMap', {

                                    center: res.geoObjects.get(0).geometry.getCoordinates(),

                                    zoom : 12

                                    });

                

                            

                            cluster = new ymaps.Clusterer();

                            collection = new ymaps.GeoObjectCollection();

                            //myAddreses - массив адресов для меток

                            for (var key in myAddreses) {

                            

                                

                                //назначаем свойства метке; myIds - массив id меток(адресов); myImages - массив картинок для метки

                                var properties = {

                                    hintContent: myAddreses[key],

                                    id: myIds[key]

                                    };

                                var options = { balloonCloseButton: true,

                                iconImageHref: '/templates/search/img/'+myImages[key], // картинка иконки

                                iconImageSize: [37, 42], // размеры картинки

                                iconImageOffset: [-10, -42]

                                };

                               

                                //создаем саму метку с обьявленными ранее свойствами

                                var placemark = new ymaps.Placemark(myCoordinates[key],properties,options);

                               //добавляем событие по нажатию мышкой на метку

                                placemark.events.add('click', function () {

                                  

                                    var nfid=placemark.properties.get('id');

                                    alert(nfid);

                                    ShowFarmInfo(nfid);

                                    

                                    });

                                    

                                placemarks[key] = placemark;

                             

                            }

                            

                            cluster.options.set({

                                gridSize: 64

                                });

 

                            cluster.add(placemarks);

                            myCustMap.geoObjects.add(cluster);

                            

                                

                            

                                myCustMap.controls

                                    // Кнопка изменения масштаба

                                    //.add('zoomControl')

                                    // Список типов карты

                                    .add('typeSelector')

                                    // Кнопка изменения масштаба - компактный вариант

                                    // Расположим её справа

                                    .add('smallZoomControl', {left: 5, top: 35})

                                    // Стандартный набор кнопок

                                    .add('mapTools');

                            

                                });  

 

Код выше вцелом работает. Проблема только с обработкой нажатий мышкой на метки. var nfid=pl.properties.get('id'); - выводит id последней в кластере метки. Как сделать чтобы выводился id метки, по которой нажали?

 

ссылка на сайт: http://www.izaptek.ru/org/1.html

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

placemark.Events.Click(

Это какое-то ваше расширение? В API такого нет. 

это уже извращался - на самом деле 

placemark.events.add('click', function () {

                                  

                                    var nfid=placemark.properties.get('id');

                                    alert(nfid);

                                    ShowFarmInfo(nfid);

                                    

                                    });

в обработчике обращайтесь не к placemark, а event.get("target").
event приходит первым аргументом.

Спасибо - все получилось ) Сейчас другой проект веду - там этот-же код