Клуб API Карт

Смена изображения метки по событию

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

Здравствуйте! Есть код:

var collection = new ymaps.GeoObjectCollection({}, {

    iconImageHref: 'image1.png',

    iconImageSize:[10, 10]

}

 

for(var key in placemarks){

    var placemark = new ymaps.Placemark([placemarks[key].point[1], placemarks[key].point[0]]

    placemark.events.add('mouseenter', function (e) {

        placemark.options.set('iconImageHref', 'image2.png');

    }

 

    collection.add(placemark);

}

 

map.geoObjects.add(collection);

 

Проблема в том что при наведении на любую метку, изображение меняется только у одной конкретной (не той на которую навели). Подскажите, пожалуйста, что я делаю не так?

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

дайте ссылку

Прошу прощения, поторопился с вопросом. В коде не хватало замыкания.

Вот пример который у меня заработал:

 

for(var key in placemarks){

    var placemark = new ymaps.Placemark([placemarks[key].point[1], placemarks[key].point[0]]);

 

    collection.add(placemark);

}

 

collection.each(function(ob){

    ob.events.add('mouseenter', function(){

        (function(obPlacemark){

            obPlacemark.options.set('iconImageHref', 'image2.png');

        })(ob);

    });

});

 

dvsMap.geoObjects.add(collection);

Единственное, не знаю как лучше, так или ob.events.add() добавить в цикл for(var key in placemarks).

 

наверное лучше 2 раза не итерироваться 

for(var key in placemarks){

    var placemark = new ymaps.Placemark([placemarks[key].point[1], placemarks[key].point[0]]);

 (function (p) {

    p.events.add('mouseenter', function (e) {

        p.options.set('iconImageHref', 'image2.png');

    });

}(placemark));

 

    collection.add(placemark);

}

Делаю так

var DriverCollection = new ymaps.GeoObjectCollection(null, {
iconImageHref: '../Images/courier.png',
iconImageSize: [30, 30], // размеры картинки
iconImageOffset: [-11, -30] // смещение картинки
});

 

var myPlacemark = new ymaps.Placemark(
// Координаты метки
[56.849722, 53.204727]);

 

 

 DriverCollection.add(myPlacemark);
mymap.geoObjects.add(DriverCollection);

Но почему-то не отображается иконка, в чем может быть дело?

Посмотри на вкладке сетевой активности есть ли запрос за картинкой

Не подскажите где это посмотреть, что-то не пойму. Смотрел через диспетчер задач, через TCPView, не пойму что и куда смотреть

Это надо смотреть в браузере

в хроме -> developer tools -> network

Все разобрался, спасибо! Через мозилу посмотрел - путь неправильно быд указан.