Add mouseWheelZoomDelta option to MapOptions
This commit is contained in:
@@ -70,6 +70,12 @@ olx.MapOptionsExtern.prototype.maxResolution;
|
||||
olx.MapOptionsExtern.prototype.mouseWheelZoom;
|
||||
|
||||
|
||||
/**
|
||||
* @type {number|undefined}
|
||||
*/
|
||||
olx.MapOptionsExtern.prototype.mouseWheelZoomDelta;
|
||||
|
||||
|
||||
/**
|
||||
* @type {number|undefined}
|
||||
*/
|
||||
|
||||
@@ -9,8 +9,15 @@ goog.require('ol.MapBrowserEvent');
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {ol.interaction.Interaction}
|
||||
* @param {number} delta The zoom delta applied on each mousewheel.
|
||||
*/
|
||||
ol.interaction.MouseWheelZoom = function() {
|
||||
ol.interaction.MouseWheelZoom = function(delta) {
|
||||
/**
|
||||
* @private
|
||||
* @type {number}
|
||||
*/
|
||||
this.delta_ = delta;
|
||||
|
||||
goog.base(this);
|
||||
};
|
||||
goog.inherits(ol.interaction.MouseWheelZoom, ol.interaction.Interaction);
|
||||
@@ -28,12 +35,8 @@ ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent =
|
||||
mapBrowserEvent.browserEvent;
|
||||
goog.asserts.assert(mouseWheelEvent instanceof goog.events.MouseWheelEvent);
|
||||
var anchor = mapBrowserEvent.getCoordinate();
|
||||
var oldResolution = map.getResolution();
|
||||
var factor = Math.exp(Math.log(2) / 4);
|
||||
if (mouseWheelEvent.deltaY < 0) {
|
||||
factor = 1 / factor;
|
||||
}
|
||||
map.zoomToResolution(oldResolution * factor, anchor);
|
||||
var delta = mouseWheelEvent.deltaY < 0 ? this.delta_ : -this.delta_;
|
||||
map.zoom(delta, anchor);
|
||||
mapBrowserEvent.preventDefault();
|
||||
mouseWheelEvent.preventDefault();
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ ol.DEFAULT_RENDERER_HINTS = [
|
||||
* layers: (ol.Collection|undefined),
|
||||
* maxResolution: (number|undefined),
|
||||
* mouseWheelZoom: (boolean|undefined),
|
||||
* mouseWheelZoomDelta: (number|undefined),
|
||||
* numZoomLevels: (number|undefined),
|
||||
* projection: (ol.Projection|string|undefined),
|
||||
* renderer: (ol.RendererHint|undefined),
|
||||
@@ -241,7 +242,10 @@ ol.MapOptions.createInteractions_ = function(mapOptionsLiteral) {
|
||||
var mouseWheelZoom = goog.isDef(mapOptionsLiteral.mouseWheelZoom) ?
|
||||
mapOptionsLiteral.mouseWheelZoom : true;
|
||||
if (mouseWheelZoom) {
|
||||
interactions.push(new ol.interaction.MouseWheelZoom());
|
||||
var mouseWheelZoomDelta =
|
||||
goog.isDef(mapOptionsLiteral.mouseWheelZoomDelta) ?
|
||||
mapOptionsLiteral.mouseWheelZoomDelta : 1;
|
||||
interactions.push(new ol.interaction.MouseWheelZoom(mouseWheelZoomDelta));
|
||||
}
|
||||
|
||||
var shiftDragZoom = goog.isDef(mapOptionsLiteral.shiftDragZoom) ?
|
||||
|
||||
@@ -51,4 +51,47 @@ describe('ol.MapOptions', function() {
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
describe('create interactions', function() {
|
||||
|
||||
var options;
|
||||
|
||||
beforeEach(function() {
|
||||
options = {
|
||||
rotate: false,
|
||||
doubleClickZoom: false,
|
||||
dragPan: false,
|
||||
keyboard: false,
|
||||
mouseWheelZoom: false,
|
||||
shiftDragZoom: false
|
||||
};
|
||||
});
|
||||
|
||||
describe('create mousewheel interaction', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
options.mouseWheelZoom = true;
|
||||
});
|
||||
|
||||
describe('default mouseWheelZoomDelta', function() {
|
||||
it('create mousewheel interaction with default delta', function() {
|
||||
var interactions = ol.MapOptions.createInteractions_(options);
|
||||
expect(interactions.getLength()).toEqual(1);
|
||||
expect(interactions.getAt(0)).toBeA(ol.interaction.MouseWheelZoom);
|
||||
expect(interactions.getAt(0).delta_).toEqual(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('set mouseWheelZoomDelta', function() {
|
||||
it('create mousewheel interaction with default delta', function() {
|
||||
options.mouseWheelZoomDelta = 7;
|
||||
var interactions = ol.MapOptions.createInteractions_(options);
|
||||
expect(interactions.getLength()).toEqual(1);
|
||||
expect(interactions.getAt(0)).toBeA(ol.interaction.MouseWheelZoom);
|
||||
expect(interactions.getAt(0).delta_).toEqual(7);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user