48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
goog.provide('ol.control.KeyboardZoom');
|
|
|
|
goog.require('goog.events.KeyCodes');
|
|
goog.require('goog.events.KeyHandler.EventType');
|
|
goog.require('ol.Control');
|
|
goog.require('ol.control.ZoomFunctionType');
|
|
|
|
|
|
|
|
/**
|
|
* @constructor
|
|
* @extends {ol.Control}
|
|
* @param {ol.control.ZoomFunctionType} zoomFunction Zoom function.
|
|
*/
|
|
ol.control.KeyboardZoom = function(zoomFunction) {
|
|
|
|
goog.base(this);
|
|
|
|
/**
|
|
* @private
|
|
* @type {ol.control.ZoomFunctionType}
|
|
*/
|
|
this.zoomFunction_ = zoomFunction;
|
|
|
|
};
|
|
goog.inherits(ol.control.KeyboardZoom, ol.Control);
|
|
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
ol.control.KeyboardZoom.prototype.handleMapBrowserEvent =
|
|
function(mapBrowserEvent) {
|
|
if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) {
|
|
var keyEvent = /** @type {goog.events.KeyEvent} */
|
|
mapBrowserEvent.browserEvent;
|
|
var charCode = keyEvent.charCode;
|
|
if (charCode == '+'.charCodeAt(0) || charCode == '-'.charCodeAt(0)) {
|
|
var map = mapBrowserEvent.map;
|
|
var delta = charCode == '+'.charCodeAt(0) ? 1 : -1;
|
|
var resolution = this.zoomFunction_(map.getResolution(), delta);
|
|
map.setResolution(resolution);
|
|
keyEvent.preventDefault();
|
|
mapBrowserEvent.preventDefault();
|
|
}
|
|
}
|
|
};
|