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

/**
 * @classdesc erweiterte OverViewMap, die Konfigurationen aus der Karte entnimmt.
 *
 * @constructor BKGWebMap.Control.OverViewMap
 * @param {object} options - Optionen für das Controlelement
 */
BKGWebMap.Control.OverviewMap = OpenLayers.Class(OpenLayers.Control.OverviewMap, {


    initialize: function(config) {
        OpenLayers.Control.OverviewMap.prototype.initialize.apply(this, arguments);
        this.displayClass = 'olControlOverviewMap';
    },

    setMap: function(map) {
        this.mapOptions.projection = map.projection;
        this.mapOptions.units = map.units;
        this.mapOptions.maxResolution = map.getMaxResolution();
        this.mapOptions.maxExtent = map.getMaxExtent();

        OpenLayers.Control.OverviewMap.prototype.setMap.apply(this, arguments);
    },

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

/**
 * Factory-Funktion zur Generierung eines Mesurement Steuerelement.
 * @param {Array<OpenLayers.Control>} controls - Liste der Steuerelemente, in die die neue erzeugten Steuerelemente
 *                                               eingefügt werden sollen.
 * @param {object} config - Konfiguration für Steuerelement (s. Konstruktor BKGWebMap.Control.OverviewMap).
 */
BKGWebMap.Control.FACTORIES['overviewMap'] = function(controls, config) {
    if (!config) return;

    config.size = config.size || new OpenLayers.Size(150,150);
    config.mapOptions = OpenLayers.Util.extend(null, config.mapOptions);

    config.mapOptions.layers = config.layers.map(BKGWebMap.Layer.create);
    delete config.layers;

    var map = new BKGWebMap.Control.OverviewMap(config);
    controls.push(map);
};