diff --git a/lib/OpenLayers.js b/lib/OpenLayers.js index a3a2ce26a9..6d218eb031 100644 --- a/lib/OpenLayers.js +++ b/lib/OpenLayers.js @@ -55,6 +55,7 @@ catch(e){ "OpenLayers/Layer/WFS.js", "OpenLayers/Control.js", "OpenLayers/Control/MouseDefaults.js", + "OpenLayers/Control/KeyboardDefaults.js", "OpenLayers/Control/PanZoom.js", "OpenLayers/Control/PanZoomBar.js", "OpenLayers/Control/LayerSwitcher.js" diff --git a/lib/OpenLayers/Control/KeyboardDefaults.js b/lib/OpenLayers/Control/KeyboardDefaults.js new file mode 100644 index 0000000000..c59c32d1ab --- /dev/null +++ b/lib/OpenLayers/Control/KeyboardDefaults.js @@ -0,0 +1,58 @@ +OpenLayers.Control.KeyboardDefaults = Class.create(); +OpenLayers.Control.KeyboardDefaults.prototype = + Object.extend( new OpenLayers.Control(), { + + initialize: function() { + OpenLayers.Control.prototype.initialize.apply(this, arguments); + }, + + draw: function() { + Event.observe(document, 'keypress', this.defaultKeyDown.bind(this.map)); + }, + + /** + * @param {Event} evt + */ + defaultKeyDown: function (evt) { + var i = 0; + switch(evt.keyCode) { + case Event.KEY_LEFT: + var resolution = this.getResolution(); + var center = this.getCenter(); + this.setCenter( + new OpenLayers.LonLat(center.lon - (resolution * 50), + center.lat) + ); + Event.stop(evt); + break; + case Event.KEY_RIGHT: + var resolution = this.getResolution(); + var center = this.getCenter(); + this.setCenter( + new OpenLayers.LonLat(center.lon + (resolution * 50), + center.lat) + ); + Event.stop(evt); + break; + case Event.KEY_UP: + var resolution = this.getResolution(); + var center = this.getCenter(); + this.setCenter( + new OpenLayers.LonLat(center.lon, + center.lat + (resolution * 50)) + ); + Event.stop(evt); + break; + case Event.KEY_DOWN: + var resolution = this.getResolution(); + var center = this.getCenter(); + this.setCenter( + new OpenLayers.LonLat(center.lon, + center.lat - (resolution * 50)) + ); + Event.stop(evt); + break; + } + } + +});