Как я могу сделать так, чтобы мой сайт с картой google использовал события mousewheel для панорамирования вместо масштабирования?
Я делаю мэшап с google maps (v3), чтобы показать, где находятся автобусы Бостона из данных gps в реальном времени. Google обычно использует прокрутку для масштабирования, но я думаю, что панорамирование имело бы больше смысла, тем более что на большинстве компьютеров (особенно Mac) есть прокрутка двумя пальцами, которая позволяет как горизонтальную, так и вертикальную прокрутку. Если бы я мог добраться до событий прокрутки, я мог бы вызвать панорамирование, но я не вижу, как их получить. Я нашел mousewheel jQuery плагин, но это только кажется, что обнаружить вертикальную прокрутку легко. Согласно mozilla , firefox post 3.5 дает событию свойство "ось", но я не могу найти ничего для других браузеров. Это слишком ново, чтобы быть хорошо поддержанным?
2 ответа:
Я уже использовал этот код раньше для обнаружения событий колесика мыши-возможно, с некоторой пользой. Отлично работает в IE6+ и FF1. 0 + - непроверенные с очень последними браузерами, хотя !
/** This is high-level function. * It must react to delta being more/less than zero. */ function handle(delta) { if (delta < 0) …; else …; } /** Event handler for mouse wheel event. */ function wheel(event){ var delta = 0; if (!event) /* For IE. */ event = window.event; if (event.wheelDelta) { /* IE/Opera. */ delta = event.wheelDelta/120; } else if (event.detail) { /** Mozilla case. */ /** In Mozilla, sign of delta is different than in IE. * Also, delta is multiple of 3. */ delta = -event.detail/3; } /** If delta is nonzero, handle it. * Basically, delta is now positive if wheel was scrolled up, * and negative, if wheel was scrolled down. */ if (delta) handle(delta); /** Prevent default actions caused by mouse wheel. * That might be ugly, but we handle scrolls somehow * anyway, so don't bother here.. */ if (event.preventDefault) event.preventDefault(); event.returnValue = false; } /** Initialization code. * If you use your own event management code, change it as required. */ if (window.addEventListener) /** DOMMouseScroll is for mozilla. */ window.addEventListener('DOMMouseScroll', wheel, false); /** IE/Opera. */ window.onmousewheel = document.onmousewheel = wheel;