Add ol.control.KeyboardPan

This commit is contained in:
Tom Payne
2012-07-22 13:32:32 +02:00
parent 463084ab3e
commit ce0866dac4
2 changed files with 49 additions and 1 deletions

View File

@@ -1,4 +1,3 @@
// FIXME add keyboard pan
// FIXME add snap-to-pixel pan strategy
// FIXME add rotation control

View 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();
}
}
};