From 334fb4c2edc06f3e7ba9164fa1e6e2b3a9ceb180 Mon Sep 17 00:00:00 2001 From: crschmidt Date: Sat, 20 May 2006 19:59:50 +0000 Subject: [PATCH] Add start of a KeyboardDefaults class. This works, but because Keyboard events apparently always happen on the document level, I haven't yet figured out how to have them only happen when you're 'focused' on the map, so these are currently off by default. To test them, map.addControl(new OpenLayers.Control.KeyboardDefaults()); in your HTML file. git-svn-id: http://svn.openlayers.org/trunk/openlayers@214 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers.js | 1 + lib/OpenLayers/Control/KeyboardDefaults.js | 58 ++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 lib/OpenLayers/Control/KeyboardDefaults.js 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; + } + } + +});