/*
* Copyright (c) 2013 Bundesamt für Kartographie und Geodäsie.
* See license.txt in the BKG WebMap distribution or repository for the
* full text of the license.
*
* Author: Dirk Thalheim
*/
/**
* @requires OpenLayers/BaseTypes/Class.js
* @requires OpenLayers/Control/Permalink.js
* @requires BKGWebMap/Control.js
*/
/**
* @classdesc Permalink-Element mit erweiterterten Möglichkeiten zur Konfiguration der Anzeige.
*
* Ein Permalink-Element generiert einen Link/URL auf die aktuelle Kartenansicht (Center-Koordinate, Zoomlevel und
* ausgewählte Layer.
*
* @constructor BKGWebMap.Control.Permalink
* @param {object} options - Optionen für das Controlelement
*/
BKGWebMap.Control.Permalink = OpenLayers.Class(OpenLayers.Control.Permalink, {
/**
* Linktext
* @memberOf BKGWebMap.Control.Permalink
*/
label: "Karten-Link",
/**
* Tooltip
* @memberOf BKGWebMap.Control.Permalink
*/
title: "Link für aktuellen Kartenausschnitt",
initialize:function(options) {
options = options || {};
var element = options.element || null;
var base = options.base || null;
OpenLayers.Control.Permalink.prototype.initialize.apply(this, [element, base, options]);
},
/**
* Erzeugt das HTML-Element und Kontainer für den Permalink
*
* @memberOf BKGWebMap.Control.Permalink
* @return {HTMLElement} Kontainer für Permalink
*/
draw: function() {
OpenLayers.Control.prototype.draw.apply(this, arguments);
if (!this.element && !this.anchor) {
this.element = document.createElement("a");
this.element.innerHTML = this.label;
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;
},
CLASS_NAME: "BKGWebMap.Control.Permalink"
});
/**
* Factory-Funktion zur Generierung eines PermaLink Steuerelement.
* @param {Array<OpenLayers.Control>} controls - Liste der Steuerelemente, in die die neue erzeugten Steuerelemente
* eingefügt werden sollen.
* @param {boolean} enabled
*/
BKGWebMap.Control.FACTORIES['permaLink'] = function(controls, enabled) {
if (!enabled) return;
controls.push(new BKGWebMap.Control.Permalink());
};