diff --git a/lib/OpenLayers/Control/KeyboardDefaults.js b/lib/OpenLayers/Control/KeyboardDefaults.js index 7bf00817e5..183fde4c9e 100644 --- a/lib/OpenLayers/Control/KeyboardDefaults.js +++ b/lib/OpenLayers/Control/KeyboardDefaults.js @@ -1,60 +1,59 @@ // @require: OpenLayers/Control.js +/** + * @class + */ OpenLayers.Control.KeyboardDefaults = Class.create(); OpenLayers.Control.KeyboardDefaults.prototype = Object.extend( new OpenLayers.Control(), { + /** + * @constructor + */ initialize: function() { OpenLayers.Control.prototype.initialize.apply(this, arguments); }, + /** + * + */ draw: function() { - Event.observe(document, 'keypress', this.defaultKeyDown.bind(this.map)); + Event.observe(document, + 'keypress', + this.defaultKeyDown.bind(this.map)); }, /** * @param {Event} evt */ defaultKeyDown: function (evt) { - var i = 0; + + var resolution = this.getResolution(); + var center = this.getCenter(); + + var newCenter = center.copyOf(); + 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); + newCenter.add( -(resolution * 50), 0); 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); + newCenter.add( (resolution * 50), 0); 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); + newCenter.add( 0, (resolution * 50)); 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); + newCenter.add( 0, -(resolution * 50)); break; } - } - + + if (!newCenter.equals(center)) { + this.setCenter(newCenter); + Event.stop(evt); + } + }, + + /** @final @type String */ + CLASS_NAME: "OpenLayers.Control.KeyboardDefaults" });