Add zoomDelta option to MapOptions

This commit is contained in:
Éric Lemoine
2012-09-27 15:48:04 +02:00
parent 4f116c2e5b
commit 0535a31bc6
4 changed files with 46 additions and 4 deletions

View File

@@ -136,6 +136,12 @@ olx.MapOptionsExtern.prototype.userProjection;
olx.MapOptionsExtern.prototype.zoom;
/**
* @type {number|undefined}
*/
olx.MapOptionsExtern.prototype.zoomDelta;
/**
* @type {number|undefined}
*/

View File

@@ -9,8 +9,15 @@ goog.require('ol.interaction.Interaction');
/**
* @constructor
* @extends {ol.interaction.Interaction}
* @param {number} delta The zoom delta applied on each double click.
*/
ol.interaction.DblClickZoom = function() {
ol.interaction.DblClickZoom = function(delta) {
/**
* @private
* @type {number}
*/
this.delta_ = delta;
goog.base(this);
};
goog.inherits(ol.interaction.DblClickZoom, ol.interaction.Interaction);
@@ -26,7 +33,8 @@ ol.interaction.DblClickZoom.prototype.handleMapBrowserEvent =
mapBrowserEvent.isMouseActionButton()) {
var map = mapBrowserEvent.map;
var anchor = mapBrowserEvent.getCoordinate();
var delta = mapBrowserEvent.browserEvent.shiftKey ? -4 : 4;
var delta = mapBrowserEvent.browserEvent.shiftKey ?
-this.delta_ : this.delta_;
map.zoom(delta, anchor);
mapBrowserEvent.preventDefault();
}

View File

@@ -75,6 +75,7 @@ ol.DEFAULT_RENDERER_HINTS = [
* shiftDragZoom: (boolean|undefined),
* userProjection: (ol.Projection|string|undefined),
* zoom: (number|undefined),
* zoomDelta: (number|undefined),
* zoomFactor: (number|undefined)}}
*/
ol.MapOptionsLiteral;
@@ -223,7 +224,9 @@ ol.MapOptions.createInteractions_ = function(mapOptionsLiteral) {
var doubleClickZoom = goog.isDef(mapOptionsLiteral.doubleClickZoom) ?
mapOptionsLiteral.doubleClickZoom : true;
if (doubleClickZoom) {
interactions.push(new ol.interaction.DblClickZoom());
var zoomDelta = goog.isDef(mapOptionsLiteral.zoomDelta) ?
mapOptionsLiteral.zoomDelta : 4;
interactions.push(new ol.interaction.DblClickZoom(zoomDelta));
}
var dragPan = goog.isDef(mapOptionsLiteral.dragPan) ?

View File

@@ -92,6 +92,31 @@ describe('ol.MapOptions', function() {
});
});
});
});
describe('create double click interaction', function() {
beforeEach(function() {
options.doubleClickZoom = true;
});
describe('default zoomDelta', function() {
it('create double click interaction with default delta', function() {
var interactions = ol.MapOptions.createInteractions_(options);
expect(interactions.getLength()).toEqual(1);
expect(interactions.getAt(0)).toBeA(ol.interaction.DblClickZoom);
expect(interactions.getAt(0).delta_).toEqual(4);
});
});
describe('set mouseWheelZoomDelta', function() {
it('create double click interaction with set delta', function() {
options.zoomDelta = 7;
var interactions = ol.MapOptions.createInteractions_(options);
expect(interactions.getLength()).toEqual(1);
expect(interactions.getAt(0)).toBeA(ol.interaction.DblClickZoom);
expect(interactions.getAt(0).delta_).toEqual(7);
});
});
});
});
});