【问题标题】:Disable mouse scroll wheel in Cesium在铯中禁用鼠标滚轮
【发布时间】:2016-12-04 18:44:31
【问题描述】:

我有一张通过 ol3-cesium 使用铯的地图。此地图不使用网站的全部空间。我正在尝试禁用滚轮缩放,以便我可以使用鼠标滚轮继续向上和向下滚动网页。

我可以禁用鼠标滚轮缩放:

map3d.getCesiumScene().screenSpaceCameraController.enableZoom = false;

但是,这并没有让我恢复正常的页面滚动。滚动事件似乎被 Cesium 捕获而不传播。

如何让 Cesium 忽略鼠标滚轮或将鼠标滚轮传播到浏览器,以便即使光标在地图顶部用户也可以滚动页面?

【问题讨论】:

    标签: javascript scroll mousewheel cesium


    【解决方案1】:

    这样的事情应该可以解决问题。 监听 cesium 容器中的 wheel 事件,当它发生时,只需滚动窗口即可。

    var pageStep = 25;
    document.getElementById('yout-cesium-container-id').addEventListener("wheel", function(event) {
        if (event.deltaY < 0) {
            window.scroll(0, window.pageYOffset - pageStep);
        } else {
            window.scroll(0, window.pageYOffset + pageStep);
        }
    });
    

    您仍然需要在 Cesium 中禁用放大和缩小功能。

    map3d.getCesiumScene().screenSpaceCameraController.enableZoom = false;
    

    【讨论】:

    • 这是一个很好的解决方法,谢谢。与浏览器的平滑滚动相比,它看起来有点不稳定,但在没有更原生的解决方案的情况下,它可以解决问题。
    • scrollBy() 似乎与浏览器默认情况下一样平滑滚动(尽管该页面说它目前在 IE 或 safari 上不可用)。我可以通过用 window.scrollBy({top:event.deltaY, behavior:'smooth'}); 替换此答案中的侦听器函数的主体来使其工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多