OverviewMap.js
Summary
No overview generated for 'OverviewMap.js'
mapbuilder.loadScript(baseDir+"/util/openlayers/OpenLayers.js");
mapbuilder.loadScript(baseDir+"/widget/WidgetBase.js");
function OverviewMap(widgetNode, model) {
WidgetBase.apply(this,new Array(widgetNode, model));
var widthNode = widgetNode.selectSingleNode("mb:width");
if (widthNode) {
this.width = new Number(widthNode.firstChild.nodeValue);
}
var heightNode = widgetNode.selectSingleNode("mb:height");
if (heightNode) {
this.height = new Number(heightNode.firstChild.nodeValue);
}
var minRatio = widgetNode.selectSingleNode("mb:minRatio");
if (minRatio) {
this.minRatio = new Number(minRatio.firstChild.nodeValue);
}
var maxRatio = widgetNode.selectSingleNode("mb:maxRatio");
if (maxRatio) {
this.maxRatio = new Number(maxRatio.firstChild.nodeValue);
}
var layersNode = widgetNode.selectSingleNode("mb:layers");
if (layersNode) {
this.layerNames = new Array();
var layers = layersNode.childNodes;
for (var i = 0; i < layers.length; i++) {
if (layers[i].firstChild) {
this.layerNames.push(layers[i].firstChild.nodeValue);
}
}
}
this.model.addListener("refresh", this.addOverviewMap, this);
}
OverviewMap.prototype.addOverviewMap = function(objRef) {
if (objRef.model && objRef.model.map) {
var map = objRef.model.map;
this.control = null
var options = {
div: document.getElementById(objRef.htmlTagId),
layers: new Array()
};
if (objRef.minRatio) options.minRatio = objRef.minRatio;
if (objRef.maxRatio) options.maxRatio = objRef.maxRatio;
var showBaseLayer = true;
var baseLayer = null;
if (map.baseLayer) {
baseLayer = objRef.getClonedLayer(map.baseLayer)
options.layers.push(baseLayer);
}
if (objRef.layerNames) {
showBaseLayer = false;
for (var i = 0; i < objRef.layerNames.length; i++) {
for (var j = 0; j < map.layers.length; j++) {
if (objRef.layerNames[i] == map.layers[j].params.LAYERS) {
if (map.layers[j] == map.baseLayer) {
showBaseLayer = true;
} else {
options.layers.push(objRef.getClonedLayer(map.layers[j]));
}
}
}
}
}
var extent = map.getExtent();
if (objRef.width && objRef.height) {
options.size = new OpenLayers.Size(objRef.width, objRef.height);
}
else if (objRef.width) {
options.size = new OpenLayers.Size(
objRef.width,
objRef.width * extent.getHeight() / extent.getWidth());
}
else if (objRef.height) {
options.size = new OpenLayers.Size(
objRef.height * extent.getWidth() / extent.getHeight(),
objRef.height);
}
objRef.control = new OpenLayers.Control.OverviewMap(options);
objRef.control.mapOptions = {theme: null};
map.addControl(objRef.control);
for (var i in options.layers) {
options.layers[i].setVisibility(true);
}
if (baseLayer) {
baseLayer.setVisibility(showBaseLayer);
}
}
}
OverviewMap.prototype.getClonedLayer = function(layer) {
if (layer == null) {
return null;
}
if (layer instanceof OpenLayers.Layer.WMS) {
var layerOptions = {
units: layer.units,
projection: layer.projection,
maxExtent: layer.maxExtent,
maxResolution: "auto",
ratio: 1,
singleTile: true,
isBaseLayer: layer.isBaseLayer
};
return new OpenLayers.Layer.WMS(layer.name,
layer.url, {layers: layer.params.LAYERS, format: layer.params.FORMAT, transparent: "TRUE"}, layerOptions);
}
else {
var clonedLayer = layer.clone();
clonedLayer.setVisibility(true);
return clonedLayer;
}
}
Documentation generated by
JSDoc on Tue Aug 21 08:12:28 2007