/*
* Copyright (c) 2013 Bundesamt by 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.js
* @requires BKGWebMap/Control.js
*/
/**
* @classdesc Klasse für Kontrollelement zur Darstellung des aktuellen Zoomlevels
*
* @constructor BKGWebMap.Control.ZoomLevel
* @param {object} options - Optionen für das Controlelement
**/
BKGWebMap.Control.ZoomLevel = OpenLayers.Class(OpenLayers.Control, {
/**
* Offset für Zoomlevel
*
* @memberOf BKGWebMap.Control.ZoomLevel
* @type int
*/
offset: 0,
initialize:function(options) {
OpenLayers.Control.prototype.initialize.apply(this, [options]);
},
/**
* Zuweisung der Karte. Hier wird sich zusätzlich auf den ZoomEvent registriert.
* @memberOf BKGWebMap.Control.ZoomLevel
* @param {OpenLayers.Map} map - interaktive Karte
*/
setMap: function(map) {
OpenLayers.Control.prototype.setMap.apply(this, arguments);
this.map.events.on({
zoomend: this.updateZoom,
scope: this
});
},
draw: function(px) {
var div = OpenLayers.Control.prototype.draw.apply(this, arguments);
this.updateZoom();
return div;
},
/**
* Aktualisiert die Zoomlevelanzeige.
* @memberOf BKGWebMap.Control.ZoomLevel
*/
updateZoom: function() {
this.div.innerHTML = "Zoomlevel " + (this.map.getZoom() + this.offset);
},
CLASS_NAME: "BKGWebMap.Control.ZoomLevel"
});
/**
* Fügt die ZoomLevel anzeige der Control-Liste hinzu.
* @param {Array<OpenLayers.Control>} controls - Liste der Steuerelemente, in die die neue erzeugten Steuerelemente
* eingefügt werden sollen.
* @param {object} config - Konfiguration für das ZoomLevel-Steuerelement (s. Konstruktor BKGWebMap.Control.ZoomLevel).
*/
BKGWebMap.Control.FACTORIES['zoomLevel'] = function(controls, config) {
if (!config) return;
config = (typeof config === 'boolean') ? {} : config;
controls.push(new BKGWebMap.Control.ZoomLevel(config));
};