diff --git a/src/ol/base/createmap.js b/src/ol/base/createmap.js index 9638897381..a909ff0a37 100644 --- a/src/ol/base/createmap.js +++ b/src/ol/base/createmap.js @@ -91,7 +91,7 @@ ol.createMap = function(target, opt_values, opt_rendererHints) { var controls = new ol.Collection(); controls.push(new ol.control.DblClickZoom(constraints)); controls.push(new ol.control.DragPan(constraints)); - controls.push(new ol.control.KeyboardPan(constraints)); + controls.push(new ol.control.KeyboardPan(constraints, 16)); controls.push(new ol.control.KeyboardZoom(constraints)); controls.push(new ol.control.MouseWheelZoom(constraints)); controls.push(new ol.control.ShiftDragRotateAndZoom(constraints)); diff --git a/src/ol/control/keyboardpan.js b/src/ol/control/keyboardpan.js index 469a71eda7..b222519c31 100644 --- a/src/ol/control/keyboardpan.js +++ b/src/ol/control/keyboardpan.js @@ -11,9 +11,18 @@ goog.require('ol.control.Constraints'); * @constructor * @extends {ol.Control} * @param {ol.control.Constraints} constraints Constraints. + * @param {number} pixelDelta Pixel delta. */ -ol.control.KeyboardPan = function(constraints) { +ol.control.KeyboardPan = function(constraints, pixelDelta) { + goog.base(this, constraints); + + /** + * @private + * @type {number} + */ + this.pixelDelta_ = pixelDelta; + }; goog.inherits(ol.control.KeyboardPan, ol.Control); @@ -34,15 +43,16 @@ ol.control.KeyboardPan.prototype.handleMapBrowserEvent = var map = mapBrowserEvent.map; var resolution = map.getResolution(); var delta; + var mapUnitsDelta = resolution * this.pixelDelta_; if (keyCode == goog.events.KeyCodes.DOWN) { - delta = new ol.Coordinate(0, -16 * resolution); + delta = new ol.Coordinate(0, -mapUnitsDelta); } else if (keyCode == goog.events.KeyCodes.LEFT) { - delta = new ol.Coordinate(-16 * resolution, 0); + delta = new ol.Coordinate(-mapUnitsDelta, 0); } else if (keyCode == goog.events.KeyCodes.RIGHT) { - delta = new ol.Coordinate(16 * resolution, 0); + delta = new ol.Coordinate(mapUnitsDelta, 0); } else { goog.asserts.assert(keyCode == goog.events.KeyCodes.UP); - delta = new ol.Coordinate(0, 16 * resolution); + delta = new ol.Coordinate(0, mapUnitsDelta); } this.pan(map, delta); keyEvent.preventDefault();