Source: BKGWebMap/Control/MousePosition.js

/*
 * 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/MousePosition.js
 * @requires BKGWebMap/Control.js
 */

/**
 * @classdesc Erweiterte MousePosition Klasse. Sofern nicht anders angegeben, wird automatisch das Prefix in
 * Abhängigkeit der Kartenprojektion gesetzt. Dazu wird der Alias aus BKGWebMap.PROJECTION_ALIAS verwendet.
 *
 * @constructor BKGWebMap.Control.MousePosition
 * @param {object} options - Optionen für das Controlelement
 */
BKGWebMap.Control.MousePosition = OpenLayers.Class(OpenLayers.Control.MousePosition, {

  setMap: function(map) {
    if(this.prefix === null) {
      this.prefix = map.projection;
      var key = map.projection.toUpperCase();
      if(key in BKGWebMap.PROJECTION_ALIAS) {
        this.prefix = BKGWebMap.PROJECTION_ALIAS[key];
      }
      this.prefix += ': ';
    }
    OpenLayers.Control.MousePosition.prototype.setMap.apply(this, arguments);
  },

  CLASS_NAME: "BKGWebMap.Control.MousePosition"
});

/**
 * Fügt eine Koordinatenanzeige 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 Steuerelement (s. Konstruktor OpenLayers.Control.MousePosition).
 */
BKGWebMap.Control.FACTORIES['position'] = function(controls, config) {
  if (!config) return;

  config = (typeof config === 'boolean') ? {} : config;
  config = OpenLayers.Util.extend({separator: ' ', numDigits: 1, prefix: null, displayClass: 'olControlMousePosition'}, config);
  if (config.div && typeof config.div === 'string') {
    config.div = OpenLayers.Util.getElement(config.div);
  }

  controls.push(new BKGWebMap.Control.MousePosition(config));
};