首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

OpenLayers 2 註冊鼠標滾輪事件的正確方法

     編輯:程式設計綜合問答

問題

map.events.register("mousewheel", null, function(){}) 無效,無法捕獲滾輪事件。

原因

OpenLayers 2 中滾輪事件名稱區分大小寫,且部分瀏覽器使用 DOMMouseScroll(Firefox 早期版本)。

解決方案


// 兼容寫法:同時註冊 mousewheel 和 DOMMouseScroll
map.events.register("mousewheel", map, onMouseWheel);
map.events.register("DOMMouseScroll", map, onMouseWheel); // Firefox 兼容

function onMouseWheel(evt) {
    var delta = evt.wheelDelta ? evt.wheelDelta/120 : -evt.detail/3;
    if (delta > 0) {
        map.zoomIn();  // 向上滾動放大
    } else {
        map.zoomOut(); // 向下滾動縮小
    }
    OpenLayers.Event.stop(evt); // 阻止頁面默認滾動
}

關鍵點

  • 事件類型用 "mousewheel"(非 "mousewheel" 全小寫)。
  • 第二個參數傳 map 作為 this 上下文,便於訪問地圖對象。
  • 使用 OpenLayers.Event.stop(evt) 阻止事件冒泡與默認行為。

現代替代方案

OpenLayers 2 已停止維護,新項目建議使用 OpenLayers 6+ (ol),事件綁定更簡潔:

map.on('wheel', function(evt) {
    // evt 是原生 WheelEvent
});
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved