2

我正在用谷歌地图(v3)制作一个混搭,以显示波士顿的公共汽车来自实时 gps 数据的位置。Google 通常使用滚动来进行缩放,但我认为平移会更有意义,尤其是当更多的计算机(尤其是 Mac)具有双指滚动时,它允许水平和垂直滚动。如果我能获得滚动事件,我可以触发平移,但我看不到如何获得它们。我找到了mousewheel jquery 插件,但它似乎只能轻松检测到垂直滚动。 根据 mozilla,firefox post 3.5 为事件提供了“轴”属性,但我找不到其他浏览器的任何内容。这是否太新而无法得到很好的支持?

4

2 回答 2

2

在 GitHub 上查看我的“平滑滚动”项目。它旨在使这成为可能:

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

于 2011-04-11T20:44:58.407 回答
0

我以前用过这段代码来检测鼠标滚轮事件——也许有一些用处。在 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;
于 2011-01-12T18:03:46.460 回答