Клуб API Карт

Клик по метке на карте, у которой есть событие mousedown

fishus
19 февраля 2013, 18:47

Суть такова: у карты есть событие mousedown, на карту нанесены метки. Хочу, чтобы при клике по метке открывался балун, и не срабатывало событие mousedown на карте. mousewheel при наведении на метку работать должен (зумирование масштаба карты).

У маркера можно сделать interactivityModel: 'default#opaque', но тогда перестает работать mousewheel.
Пробую делать interactivityModel: 'default#geoObject' и в событии не распространять mousedown, но событие mousedown карты вызывается _перед_ событием маркера! (почему?!)

Вопрос: как же при наведении на маркер разрешить wheel и запретить пробрасывать mousedown?

Вот кусок кода, показывающий суть дела: 

// создаем карту
this.map = new ymaps.Map(element, {
    center: [this.settings.lat, this.settings.lng],
    zoom: this.settings.zoom,
    behaviors: ['scrollZoom']
});
// добавляем событие mousedown
this.map.events.add('mousedown', function(event){console.info('map-mousedown')}, this);

// добавляем маркеры
var myPlacemark = new ymaps.Placemark([marker.lat, marker.lng], {
    balloonContentHeader: '<div style="color:#ff0303;font-weight:bold">'+marker.name+'</div>',
    balloonContentBody: '<strong>Адрес:</strong> '+marker.address,
    id : marker.id
}, {
    interactivityModel: 'default#geoObject',
    iconImageHref: '/img/ymap_point_blue.png',
    iconImageSize: [15,15],
    iconImageOffset: [-8,-8]
});
myPlacemark.events.add('mousedown', function(event){
    console.info('mark-mousedown');
    event.stopImmediatePropagation();
    event.stopPropagation();
    event.preventDefault();
}, this);

При клике на маркере получаю такой вывод в консоли:

map-mousedown
mark-mousedown 

 

2 комментария
Подписаться на комментарии к посту
pm.options.set('interactivityModel', 'default#opaque');
pm.events.add('wheel', function (e) {
    map.events.fire('wheel', e);
});

Стандартное поведение карты behaviors: "scrollZoom" при таком решении не работает.