diff --git a/src/ol.js b/src/ol.js index 548bd95579..d22946802e 100644 --- a/src/ol.js +++ b/src/ol.js @@ -8,6 +8,7 @@ goog.require('ol.control.Zoom'); goog.require('ol.event.Events'); goog.require('ol.event.Scroll'); goog.require('ol.handler.Drag'); +goog.require('ol.handler.MouseWheel'); goog.require("ol.map"); goog.require("ol.loc"); goog.require("ol.feature"); diff --git a/src/ol/handler/MouseWheel.js b/src/ol/handler/MouseWheel.js new file mode 100644 index 0000000000..ac0a3e4682 --- /dev/null +++ b/src/ol/handler/MouseWheel.js @@ -0,0 +1,37 @@ +/** + * @fileoverview Map Mouse Wheel Handler. + * + * Provides a class for listening to mousewheel events on a DOM element + * and re-dispatching to a map instance. + */ + +goog.provide('ol.handler.MouseWheel'); + +goog.require('goog.Disposable'); +goog.require('goog.events.MouseWheelHandler'); + + +/** + * @constructor + * @extends {goog.Disposable} + * @param {ol.Map} map The map instance. + * @param {Element} elt The element we listen to mousewheel on. + */ +ol.handler.MouseWheel = function(map, elt) { + goog.base(this); + + var handler = new goog.events.MouseWheelHandler(elt); + this.registerDisposable(handler); + + var handleMouseWheel = function(e) { + e.position = goog.style.getRelativePosition(e, elt); + e.type = 'mousewheel'; + goog.events.dispatchEvent(map, e); + }; + + goog.events.listen(handler, + goog.events.MouseWheelHandler.EventType.MOUSEWHEEL, + handleMouseWheel); + +}; +goog.inherits(ol.handler.MouseWheel, goog.Disposable);