Клуб API Карт

метки и YMapsML

graykun
13 июня 2010, 16:06

 всем привет)

объясните, пожалуйста, как менять цвет меток при наведении, загруженных через YMapsML.

Так обрабатывается только первый объект группы:

var ml = new YMaps.YMapsML('http://graykun.narod2.ru/news/intro.xml');
        YMaps.Events.observe(ml, ml.Events.Load, function (ml) {
            ml.get(0).forEach(function (item) {     // Создание списка групп
                YMaps.Events.observe(item.get(0), item.get(0).Events.MouseEnter, function (obj) {
                    obj.setStyle("default#redSmallPoint");
                });
                YMaps.Events.observe(item.get(0), item.get(0).Events.MouseLeave, function (obj) {
                    obj.setStyle();
                });
                addMenuItem(item, map, YMaps.jQuery("#menu"));
            });
        }); ........

 

И как это скажется на производительности... при 500-1000 метках

http://graykun.narod2.ru/map

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

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


 



        YMaps.Events.observe(ml, ml.Events.Load, function (ml) {
            ml.get(0).forEach(function (item) {     // Создание списка групп


//перебор              item.get(0).forEach(function (obj) {///// создание списка меток
                    YMaps.Events.observe(obj, obj.Events.MouseEnter, function () {
                        obj.setStyle("default#redSmallPoint");
                    });
                });
                addMenuItem(item, map, YMaps.jQuery("#menu"));
            });
        });

но тогда метки и меню вообще не показыватся..


вопрс открыт)


 

Попробуйте так:


var ml = new YMaps.YMapsML('http://graykun.narod2.ru/news/intro.xml');
YMaps.Events.observe(ml, ml.Events.Load, function (ml) {
    ml.filter(function (item) {
        
        YMaps.Events.observe(item, item.Events.MouseEnter, function (obj) {
            obj.setStyle("default#redSmallPoint");
        });
        
        YMaps.Events.observe(item, item.Events.MouseLeave, function (obj) {
            obj.setStyle();
        });
        
        // Добавляем только метки на карту
        if (item instanceof YMaps.Placemark) {
            map.addOverlay(item);
        }
    });
});

большое спасибо. фильтр работает.


а зачем проверка того, что объект item является меткой?



        // Добавляем только метки на карту
        if (item  instanceof YMaps.Placemark) {
            map.addOverlay(item);
         }

Группа тоже может быть добавлена на карту, с помощью вышеуказанной проверки добавляются на карту только метки.