Есть список элементов по которому формируются метки на карте, метки могут быть разного вида(метка со стилем из стандартного набора option.presetStorage, метка с кастомным цветом, метка с изображением(спрайт), тянущаяся метка с текстом). Сделал изменение стиля каждого вида метки при наведении на нее. Как задать метке другой стиль при клике на нее(стиль "активной" метки(без наведений)), так чтобы стиль других меток возвращался в свое первичное состояние(с наведениями)?
var list = $('#farmacy-list'),
elem = list.find('.elem'),
collection = new ymaps.GeoObjectCollection();
elem.each(function() {
var _t = $(this),
type = _t.data('placemark'),
name = _t.data('name'),
coords = _t.data('coords');
switch (type) {
case 'pin':
var placemark = new ymaps.Placemark(coords, {}, {
preset: 'islands#darkGreenIcon'
});
placemark.events
.add('mouseenter', function(e) {
e.get('target').options.set({
preset: 'islands#greenIcon'
});
})
.add('mouseleave', function(e) {
e.get('target').options.set({
preset: 'islands#darkGreenIcon'
});
});
break;
case 'promo':
var placemark = new ymaps.Placemark(coords, {}, {
preset: 'islands#icon',
iconColor: '#eb9b17'
});
placemark.events
.add('mouseenter', function(e) {
e.get('target').options.set({
iconColor: '#ffa91a'
});
})
.add('mouseleave', function(e) {
e.get('target').options.set({
iconColor: '#eb9b17'
});
});
break;
case 'mini':
var placemark = new ymaps.Placemark(coords, {}, {
iconLayout: 'default#image',
iconImageClipRect: [[0,0], [21,21]],
iconImageHref: 'img/pin_mini.png',
iconImageSize: [21, 21],
iconImageOffset: [-10, -10]
});
placemark.events
.add('mouseenter', function(e) {
e.get('target').options.set({
iconImageClipRect: [[0,21], [21,42]]
});
})
.add('mouseleave', function(e) {
e.get('target').options.set({
iconImageClipRect: [[0,0], [21,21]]
});
});
break;
case 'pin-text':
var placemark = new ymaps.Placemark(coords, {
iconContent: name
}, {
preset: 'islands#darkGreenStretchyIcon'
});
placemark.events
.add('mouseenter', function(e) {
e.get('target').options.set({
preset: 'islands#greenStretchyIcon'
});
})
.add('mouseleave', function(e) {
e.get('target').options.set({
preset: 'islands#darkGreenStretchyIcon'
});
});
break;
}
collection.add(placemark);
});
map.geoObjects.add(collection);
map.setBounds(map.geoObjects.getBounds());