summaryrefslogtreecommitdiff
path: root/misc/openlayers/lib/OpenLayers/Control/Permalink.js
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/lib/OpenLayers/Control/Permalink.js')
-rw-r--r--misc/openlayers/lib/OpenLayers/Control/Permalink.js257
1 files changed, 0 insertions, 257 deletions
diff --git a/misc/openlayers/lib/OpenLayers/Control/Permalink.js b/misc/openlayers/lib/OpenLayers/Control/Permalink.js
deleted file mode 100644
index 3d5d7a2..0000000
--- a/misc/openlayers/lib/OpenLayers/Control/Permalink.js
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for
- * full list of contributors). Published under the 2-clause BSD license.
- * See license.txt in the OpenLayers distribution or repository for the
- * full text of the license. */
-
-
-/**
- * @requires OpenLayers/Control.js
- * @requires OpenLayers/Control/ArgParser.js
- * @requires OpenLayers/Lang.js
- */
-
-/**
- * Class: OpenLayers.Control.Permalink
- * The Permalink control is hyperlink that will return the user to the
- * current map view. By default it is drawn in the lower right corner of the
- * map. The href is updated as the map is zoomed, panned and whilst layers
- * are switched.
- *
- * Inherits from:
- * - <OpenLayers.Control>
- */
-OpenLayers.Control.Permalink = OpenLayers.Class(OpenLayers.Control, {
-
- /**
- * APIProperty: argParserClass
- * {Class} The ArgParser control class (not instance) to use with this
- * control.
- */
- argParserClass: OpenLayers.Control.ArgParser,
-
- /**
- * Property: element
- * {DOMElement}
- */
- element: null,
-
- /**
- * APIProperty: anchor
- * {Boolean} This option changes 3 things:
- * the character '#' is used in place of the character '?',
- * the window.href is updated if no element is provided.
- * When this option is set to true it's not recommend to provide
- * a base without provide an element.
- */
- anchor: false,
-
- /**
- * APIProperty: base
- * {String}
- */
- base: '',
-
- /**
- * APIProperty: displayProjection
- * {<OpenLayers.Projection>} Requires proj4js support. Projection used
- * when creating the coordinates in the link. This will reproject the
- * map coordinates into display coordinates. If you are using this
- * functionality, the permalink which is last added to the map will
- * determine the coordinate type which is read from the URL, which
- * means you should not add permalinks with different
- * displayProjections to the same map.
- */
- displayProjection: null,
-
- /**
- * Constructor: OpenLayers.Control.Permalink
- *
- * Parameters:
- * element - {DOMElement}
- * base - {String}
- * options - {Object} options to the control.
- *
- * Or for anchor:
- * options - {Object} options to the control.
- */
- initialize: function(element, base, options) {
- if (element !== null && typeof element == 'object' && !OpenLayers.Util.isElement(element)) {
- options = element;
- this.base = document.location.href;
- OpenLayers.Control.prototype.initialize.apply(this, [options]);
- if (this.element != null) {
- this.element = OpenLayers.Util.getElement(this.element);
- }
- }
- else {
- OpenLayers.Control.prototype.initialize.apply(this, [options]);
- this.element = OpenLayers.Util.getElement(element);
- this.base = base || document.location.href;
- }
- },
-
- /**
- * APIMethod: destroy
- */
- destroy: function() {
- if (this.element && this.element.parentNode == this.div) {
- this.div.removeChild(this.element);
- this.element = null;
- }
- if (this.map) {
- this.map.events.unregister('moveend', this, this.updateLink);
- }
-
- OpenLayers.Control.prototype.destroy.apply(this, arguments);
- },
-
- /**
- * Method: setMap
- * Set the map property for the control.
- *
- * Parameters:
- * map - {<OpenLayers.Map>}
- */
- setMap: function(map) {
- OpenLayers.Control.prototype.setMap.apply(this, arguments);
-
- //make sure we have an arg parser attached
- for(var i=0, len=this.map.controls.length; i<len; i++) {
- var control = this.map.controls[i];
- if (control.CLASS_NAME == this.argParserClass.CLASS_NAME) {
-
- // If a permalink is added to the map, and an ArgParser already
- // exists, we override the displayProjection to be the one
- // on the permalink.
- if (control.displayProjection != this.displayProjection) {
- this.displayProjection = control.displayProjection;
- }
-
- break;
- }
- }
- if (i == this.map.controls.length) {
- this.map.addControl(new this.argParserClass(
- { 'displayProjection': this.displayProjection }));
- }
-
- },
-
- /**
- * Method: draw
- *
- * Returns:
- * {DOMElement}
- */
- draw: function() {
- OpenLayers.Control.prototype.draw.apply(this, arguments);
-
- if (!this.element && !this.anchor) {
- this.element = document.createElement("a");
- this.element.innerHTML = OpenLayers.i18n("Permalink");
- this.element.href="";
- this.div.appendChild(this.element);
- }
- this.map.events.on({
- 'moveend': this.updateLink,
- 'changelayer': this.updateLink,
- 'changebaselayer': this.updateLink,
- scope: this
- });
-
- // Make it so there is at least a link even though the map may not have
- // moved yet.
- this.updateLink();
-
- return this.div;
- },
-
- /**
- * Method: updateLink
- */
- updateLink: function() {
- var separator = this.anchor ? '#' : '?';
- var href = this.base;
- var anchor = null;
- if (href.indexOf("#") != -1 && this.anchor == false) {
- anchor = href.substring( href.indexOf("#"), href.length);
- }
- if (href.indexOf(separator) != -1) {
- href = href.substring( 0, href.indexOf(separator) );
- }
- var splits = href.split("#");
- href = splits[0] + separator+ OpenLayers.Util.getParameterString(this.createParams());
- if (anchor) {
- href += anchor;
- }
- if (this.anchor && !this.element) {
- window.location.href = href;
- }
- else {
- this.element.href = href;
- }
- },
-
- /**
- * APIMethod: createParams
- * Creates the parameters that need to be encoded into the permalink url.
- *
- * Parameters:
- * center - {<OpenLayers.LonLat>} center to encode in the permalink.
- * Defaults to the current map center.
- * zoom - {Integer} zoom level to encode in the permalink. Defaults to the
- * current map zoom level.
- * layers - {Array(<OpenLayers.Layer>)} layers to encode in the permalink.
- * Defaults to the current map layers.
- *
- * Returns:
- * {Object} Hash of parameters that will be url-encoded into the
- * permalink.
- */
- createParams: function(center, zoom, layers) {
- center = center || this.map.getCenter();
-
- var params = OpenLayers.Util.getParameters(this.base);
-
- // If there's still no center, map is not initialized yet.
- // Break out of this function, and simply return the params from the
- // base link.
- if (center) {
-
- //zoom
- params.zoom = zoom || this.map.getZoom();
-
- //lon,lat
- var lat = center.lat;
- var lon = center.lon;
-
- if (this.displayProjection) {
- var mapPosition = OpenLayers.Projection.transform(
- { x: lon, y: lat },
- this.map.getProjectionObject(),
- this.displayProjection );
- lon = mapPosition.x;
- lat = mapPosition.y;
- }
- params.lat = Math.round(lat*100000)/100000;
- params.lon = Math.round(lon*100000)/100000;
-
- //layers
- layers = layers || this.map.layers;
- params.layers = '';
- for (var i=0, len=layers.length; i<len; i++) {
- var layer = layers[i];
-
- if (layer.isBaseLayer) {
- params.layers += (layer == this.map.baseLayer) ? "B" : "0";
- } else {
- params.layers += (layer.getVisibility()) ? "T" : "F";
- }
- }
- }
-
- return params;
- },
-
- CLASS_NAME: "OpenLayers.Control.Permalink"
-});