Клуб API Карт

Как проксировать события колесика мыши mousewheel с какого-нибудь DOM элемента на карту?

dmitryklerik
13 июня 2012, 22:48

Подскажите плз как сделать так, чтобы зумилась карта при вращении колесика мыши на расположенном отдельно от карты div-е.

 

С обработкой колесика вроде все ясно: http://learn.javascript.ru/mousewheel

но что делать с картой как-то совсем непонятно.

 

ps Зачем все это нужно: делаю драг элементов снаружи на карту, и хочу чтобы во время перетаскивания можно было ресайзить карту (аналогично тому как это работает у обьекта Placemark)

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

Через публично доступный функционал - никак.

Кажется, что это очень минорный кейс :)

Почему минорный?

Таким способом очень удобно создавать пользовательские контролы

Способ есть, но есть вероятность что он когда либо перестанет работать.

 function toMap (event) {                    event = event || window.event;

                    var etype = event.type;
                    if (etype == 'mousewheel' || etype == 'DOMMouseScroll') {
                        etype = 'wheel';
                    }

                    var domEvent = new ;

                    var bullet = new yandex2.MapEvent({
                        type: etype,
                        target: api,
                        domEvent: new yandex2.DomEvent(event.originalEvent)
                    }, api);

                    api.events.fire(etype, bullet);
                }

При условии что toMap это обратотчик на jQuery, а api - экземпляр карты.

Спасибо, отлично работает!

 

Только в jQuery нет обработчика  mousewheel , поэтому использовал код: 

 

if (elem.addEventListener) {
elem.addEventListener("mousewheel", toMap, false);
elem.addEventListener("DOMMouseScroll", toMap, false);
} else {
elem.attachEvent("onmousewheel", toMap);

 

А почему этот способ может пропасть, ведь используются стандартные функции api из документации?

Нет, этот способ не пропадёт, всё честно :)