the mousewheel handler zooms the map by default

This commit is contained in:
Éric Lemoine
2012-07-11 17:35:50 +02:00
parent 357d08df99
commit ae5cdc75b4

View File

@@ -1,8 +1,10 @@
/**
* @fileoverview Map Mouse Wheel Handler.
* @fileoverview Mouse Wheel Handler.
*
* Provides a class for listening to mousewheel events on a DOM element
* and re-dispatching to a map instance.
*
* The default behabior is zooming the map.
*/
goog.provide('ol.handler.MouseWheel');
@@ -34,7 +36,39 @@ ol.handler.MouseWheel = function(map, elt) {
goog.events.listen(handler,
goog.events.MouseWheelHandler.EventType.MOUSEWHEEL,
handleMouseWheel);
this.handleMouseWheel, false, this);
};
goog.inherits(ol.handler.MouseWheel, goog.Disposable);
/**
* @param {goog.events.MouseWheelEvent} e
*/
ol.handler.MouseWheel.prototype.handleMouseWheel = function(e) {
e.position = goog.style.getRelativePosition(e, this.elt_);
e.type = 'mousewheel';
var rt = goog.events.dispatchEvent(this.map_, e);
if (rt) {
this.defaultBehavior(e);
}
};
/**
* @param {goog.events.MouseWheelEvent} e
*/
ol.handler.MouseWheel.prototype.defaultBehavior = function(e) {
var me = this;
if (e.deltaY === 0 || me.zoomBlocked_) {
return;
}
me.zoomBlocked_ = window.setTimeout(function() {
me.zoomBlocked_ = null;
}, 200);
var map = me.map_,
step = e.deltaY / Math.abs(e.deltaY);
map.setZoom(map.getZoom() - step, e.position);
// We don't want the page to scroll.
e.preventDefault();
};