summaryrefslogtreecommitdiff
path: root/misc/openlayers/examples/accessible-click-control.js
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/examples/accessible-click-control.js')
-rw-r--r--misc/openlayers/examples/accessible-click-control.js199
1 files changed, 0 insertions, 199 deletions
diff --git a/misc/openlayers/examples/accessible-click-control.js b/misc/openlayers/examples/accessible-click-control.js
deleted file mode 100644
index 328e0da..0000000
--- a/misc/openlayers/examples/accessible-click-control.js
+++ /dev/null
@@ -1,199 +0,0 @@
-var map, navigationControl, queryControl;
-
-function init(){
- map = new OpenLayers.Map('map', {controls: []});
- var layer = new OpenLayers.Layer.WMS(
- "OpenLayers WMS",
- "http://vmap0.tiles.osgeo.org/wms/vmap0",
- {layers: 'basic'}
- );
- map.addLayers([layer]);
-
- navigationControl = new OpenLayers.Control.KeyboardDefaults({
- observeElement: 'map'
- });
- map.addControl(navigationControl);
-
- queryControl = new OpenLayers.Control.KeyboardClick({
- observeElement: 'map'
- });
- map.addControl(queryControl);
-
- map.zoomToMaxExtent();
-}
-
-/**
- * Class: OpenLayers.Control.KeyboardClick
- *
- * A custom control that (a) adds a vector point that can be moved using the
- * arrow keys of the keyboard, and (b) displays a browser alert window when the
- * RETURN key is pressed. The control can be activated/deactivated using the
- * "i" key. When activated the control deactivates any KeyboardDefaults control
- * in the map so that the map is not moved when the arrow keys are pressed.
- *
- * This control relies on the OpenLayers.Handler.KeyboardPoint custom handler.
- */
-OpenLayers.Control.KeyboardClick = OpenLayers.Class(OpenLayers.Control, {
- initialize: function(options) {
- OpenLayers.Control.prototype.initialize.apply(this, [options]);
- var observeElement = this.observeElement || document;
- this.handler = new OpenLayers.Handler.KeyboardPoint(this, {
- done: this.onClick,
- cancel: this.deactivate
- }, {
- observeElement: observeElement
- });
- OpenLayers.Event.observe(
- observeElement,
- "keydown",
- OpenLayers.Function.bindAsEventListener(
- function(evt) {
- if (evt.keyCode == 73) { // "i"
- if (this.active) {
- this.deactivate();
- } else {
- this.activate();
- }
- }
- },
- this
- )
- );
- },
-
- onClick: function(geometry) {
- alert("You clicked near " + geometry.x + " N, " +
- geometry.y + " E");
- },
-
- activate: function() {
- if(!OpenLayers.Control.prototype.activate.apply(this, arguments)) {
- return false;
- }
- // deactivate any KeyboardDefaults control
- var keyboardDefaults = this.map.getControlsByClass(
- 'OpenLayers.Control.KeyboardDefaults')[0];
- if (keyboardDefaults) {
- keyboardDefaults.deactivate();
- }
- return true;
- },
-
- deactivate: function() {
- if(!OpenLayers.Control.prototype.deactivate.apply(this, arguments)) {
- return false;
- }
- // reactivate any KeyboardDefaults control
- var keyboardDefaults = this.map.getControlsByClass(
- 'OpenLayers.Control.KeyboardDefaults')[0];
- if (keyboardDefaults) {
- keyboardDefaults.activate();
- }
- return true;
- }
-});
-
-/**
- * Class: OpenLayers.Handler.KeyboardPoint
- *
- * A custom handler that displays a vector point that can be moved
- * using the arrow keys of the keyboard.
- */
-OpenLayers.Handler.KeyboardPoint = OpenLayers.Class(OpenLayers.Handler, {
-
- KEY_EVENTS: ["keydown"],
-
-
- initialize: function(control, callbacks, options) {
- OpenLayers.Handler.prototype.initialize.apply(this, arguments);
- // cache the bound event listener method so it can be unobserved later
- this.eventListener = OpenLayers.Function.bindAsEventListener(
- this.handleKeyEvent, this
- );
- },
-
- activate: function() {
- if(!OpenLayers.Handler.prototype.activate.apply(this, arguments)) {
- return false;
- }
- this.layer = new OpenLayers.Layer.Vector(this.CLASS_NAME);
- this.map.addLayer(this.layer);
- this.observeElement = this.observeElement || document;
- for (var i=0, len=this.KEY_EVENTS.length; i<len; i++) {
- OpenLayers.Event.observe(
- this.observeElement, this.KEY_EVENTS[i], this.eventListener);
- }
- if(!this.point) {
- this.createFeature();
- }
- return true;
- },
-
- deactivate: function() {
- if (!OpenLayers.Handler.prototype.deactivate.apply(this, arguments)) {
- return false;
- }
- for (var i=0, len=this.KEY_EVENTS.length; i<len; i++) {
- OpenLayers.Event.stopObserving(
- this.observeElement, this.KEY_EVENTS[i], this.eventListener);
- }
- this.map.removeLayer(this.layer);
- this.destroyFeature();
- return true;
- },
-
- handleKeyEvent: function (evt) {
- switch(evt.keyCode) {
- case OpenLayers.Event.KEY_LEFT:
- this.modifyFeature(-3, 0);
- break;
- case OpenLayers.Event.KEY_RIGHT:
- this.modifyFeature(3, 0);
- break;
- case OpenLayers.Event.KEY_UP:
- this.modifyFeature(0, 3);
- break;
- case OpenLayers.Event.KEY_DOWN:
- this.modifyFeature(0, -3);
- break;
- case OpenLayers.Event.KEY_RETURN:
- this.callback('done', [this.point.geometry.clone()]);
- break;
- case OpenLayers.Event.KEY_ESC:
- this.callback('cancel');
- break;
- }
- },
-
- modifyFeature: function(lon, lat) {
- if(!this.point) {
- this.createFeature();
- }
- var resolution = this.map.getResolution();
- this.point.geometry.x = this.point.geometry.x + lon * resolution;
- this.point.geometry.y = this.point.geometry.y + lat * resolution;
- this.callback("modify", [this.point.geometry, this.point, false]);
- this.point.geometry.clearBounds();
- this.drawFeature();
- },
-
- createFeature: function() {
- var center = this.map.getCenter();
- var geometry = new OpenLayers.Geometry.Point(
- center.lon, center.lat
- );
- this.point = new OpenLayers.Feature.Vector(geometry);
- this.callback("create", [this.point.geometry, this.point]);
- this.point.geometry.clearBounds();
- this.layer.addFeatures([this.point], {silent: true});
- },
-
- destroyFeature: function() {
- this.layer.destroyFeatures([this.point]);
- this.point = null;
- },
-
- drawFeature: function() {
- this.layer.drawFeature(this.point, this.style);
- }
-});