Add ol.control.KeyboardPan
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
// FIXME add keyboard pan
|
||||
// FIXME add snap-to-pixel pan strategy
|
||||
// FIXME add rotation control
|
||||
|
||||
|
||||
49
src/ol/control/keyboardpan.js
Normal file
49
src/ol/control/keyboardpan.js
Normal file
@@ -0,0 +1,49 @@
|
||||
goog.provide('ol.control.KeyboardPan');
|
||||
|
||||
goog.require('goog.events.KeyCodes');
|
||||
goog.require('goog.events.KeyHandler.EventType');
|
||||
goog.require('ol.Control');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {ol.Control}
|
||||
*/
|
||||
ol.control.KeyboardPan = function() {
|
||||
goog.base(this);
|
||||
};
|
||||
goog.inherits(ol.control.KeyboardPan, ol.Control);
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.control.KeyboardPan.prototype.handleMapBrowserEvent =
|
||||
function(mapBrowserEvent) {
|
||||
if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) {
|
||||
var keyEvent = /** @type {goog.events.KeyEvent} */
|
||||
mapBrowserEvent.browserEvent;
|
||||
var keyCode = keyEvent.keyCode;
|
||||
if (keyCode == goog.events.KeyCodes.DOWN ||
|
||||
keyCode == goog.events.KeyCodes.LEFT ||
|
||||
keyCode == goog.events.KeyCodes.RIGHT ||
|
||||
keyCode == goog.events.KeyCodes.UP) {
|
||||
var map = mapBrowserEvent.map;
|
||||
var center = map.getCenter().clone();
|
||||
var delta = 16 * map.getResolution();
|
||||
if (keyCode == goog.events.KeyCodes.DOWN) {
|
||||
center.y -= delta;
|
||||
} else if (keyCode == goog.events.KeyCodes.LEFT) {
|
||||
center.x -= delta;
|
||||
} else if (keyCode == goog.events.KeyCodes.RIGHT) {
|
||||
center.x += delta;
|
||||
} else if (keyCode == goog.events.KeyCodes.UP) {
|
||||
center.y += delta;
|
||||
}
|
||||
map.setCenter(center);
|
||||
keyEvent.preventDefault();
|
||||
mapBrowserEvent.preventDefault();
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user