Как я могу сделать так, чтобы мой сайт с картой Google использовал события колесика мыши для панорамирования вместо масштабирования? - PullRequest
2 голосов
/ 24 декабря 2010

Я делаю мэшап с Google Maps (v3), чтобы показать, где автобусы Бостона по данным GPS в реальном времени.Google обычно использует прокрутку для масштабирования, но я думаю, что панорамирование будет иметь больше смысла, особенно если учесть, что на большем количестве компьютеров (особенно Mac) имеется прокрутка двумя пальцами, которая допускает как горизонтальную, так и вертикальную прокрутку.Если бы я мог получить на событиях прокрутки, я мог бы вызвать панорамирование, но я не вижу, как их получить.Я нашел плагин jquery mousewheel , но он, похоже, легко обнаруживает вертикальную прокрутку. Согласно mozilla , Firefox Post 3.5 придает событию свойство «axis», но я не могу найти ничего для других браузеров.Это слишком новое, чтобы его хорошо поддерживали?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Проверьте мой проект «Плавная прокрутка» на GitHub. Он призван сделать именно это возможным:

http://bentomas.github.com/smooth-scrolling/

0 голосов
/ 12 января 2011

Я использовал этот код раньше для обнаружения событий колесика мыши - возможно, для некоторого использования.Прекрасно работает в 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...