[OpenLayers-Commits] r3148 - sandbox/ominiverdi/openlayers/lib/OpenLayers/Control
commits at openlayers.org
commits at openlayers.org
Sun May 13 11:52:52 EDT 2007
Author: ominiverdi
Date: 2007-05-13 11:52:49 -0400 (Sun, 13 May 2007)
New Revision: 3148
Modified:
sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js
Log:
WMSManager (ticket #687):
added:
WMS legend images per OL layer
Modified: sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js
===================================================================
--- sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js 2007-05-13 13:57:27 UTC (rev 3147)
+++ sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js 2007-05-13 15:52:49 UTC (rev 3148)
@@ -154,7 +154,41 @@
var baseLayer = layer.isBaseLayer;
if (baseLayer || layer.displayInLayerSwitcher) {
-
+
+ //GET LAYER INFOS from WMS array
+ // set gently layer Name
+ var layerName= null;
+
+ //create legend if exists
+ var legendImgs = document.createElement("div");
+ legendImgs.style.paddingLeft ='10px';
+ var aLayersName = layer.name.split(',');
+ for(j=0;j<aLayersName.length;j++){
+ var selectedLayer = aLayersName[j];
+ for(y=0;y<layer.aWMSLayers.length;y++){
+ var legendUrl = null;
+ var listedLayer = layer.aWMSLayers[y];
+ if(selectedLayer==listedLayer[0]) {
+ if(layerName)layerName = layerName + ', ' + listedLayer[1];//list of layer titles
+ else layerName = listedLayer[1];//list of layer titles
+ legendUrl = listedLayer[4];
+ //alert(legendUrl);
+ }
+ if(legendUrl){
+ var legendImg = document.createElement("img");
+ legendImg.src =legendUrl;
+ legendImgs.appendChild(legendImg);
+ var legendSpan = document.createElement("span");
+ legendSpan.innerHTML = listedLayer[1];//layer title;
+ legendImgs.appendChild(legendSpan);
+ var br = document.createElement("br");
+ legendImgs.appendChild(br);
+ }
+ }
+
+ }
+
+
if (!baseLayer) {
containsOverlays = true;
}
@@ -186,7 +220,8 @@
if (!baseLayer && !layer.inRange) {
labelSpan.style.color = "gray";
}
- labelSpan.innerHTML = layer.name;
+ //labelSpan.innerHTML = layer.name;
+ labelSpan.innerHTML = layerName;
labelSpan.style.verticalAlign = (baseLayer) ? "bottom" : "baseline";
OpenLayers.Event.observe(labelSpan, "click",
this.onInputClick.bindAsEventListener(inputElem));
@@ -262,10 +297,12 @@
if(startZ==1)return alert("this is already the top");
this.layer.map.raiseLayer(this.layer,1);
}
-
+
+
+
var groupArray = (baseLayer) ? this.baseLayerInputs
: this.dataLayerInputs;
groupArray.push(inputElem);
@@ -288,6 +325,7 @@
layerDiv.appendChild(aSwitchDown);
layerDiv.appendChild(aSwitchUp);
}
+ layerDiv.appendChild(legendImgs);
//append to group div
@@ -786,9 +824,17 @@
//Legend sta dentro Style
- var legendNode = this.findChildByName(aLayers[i],'LegendURL');
- if(legendNode) var LegendURL =(legendNode.textContent)? legendNode.textContent:legendNode.text;
- else var LegendURL = null;
+ var LegendURL = null;
+
+ var legendNode = aLayers[i].getElementsByTagName('LegendURL')[0];
+ if(legendNode) {
+ var OnlineResourceNode = this.findChildByName(legendNode,'OnlineResource');
+ if(OnlineResourceNode){
+ LegendURL = OnlineResourceNode.getAttribute('xlink:href');
+ //alert(LegendURL);
+ }
+
+ }
var bboxNode = this.findChildByName(aLayers[i],'BoundingBox');
@@ -1012,8 +1058,8 @@
else titleA.push(select2.options[i].text);
}
}
- if(layerA.length) var layer = layerA.join(',');
- else layer ="";
+ if(layerA.length) var layerName = layerA.join(',');
+ else layerName ="";
if(titleA.length) var title = titleA.join(', ');
else title = layer;
@@ -1021,7 +1067,7 @@
alert('no server selected. please select one.');
return;
}
- if(layer.length<1) {
+ if(layerName.length<1) {
alert('no layer selected. please select one.');
return;
}
@@ -1043,6 +1089,23 @@
*/
+ //get selected layers features
+ var aExtents = [];
+ var aLegendUrl = [];
+ var aWMSLayers = [];
+ for(i=0;i<layerA.length;i++){
+
+ for(j=0;j<this.WMSManager.aWMSLayers.length;j++){
+ var checkedLayer = layerA[i];
+ var listedLayer = this.WMSManager.aWMSLayers[j];
+ if(checkedLayer==listedLayer[0]) {
+ aExtents.push(listedLayer[3]);
+ aLegendUrl.push(listedLayer[4]);
+ aWMSLayers.push(listedLayer);
+ }
+ }
+ }
+ //alert(aLegendUrl);
//set base or overlay
var overlayButton = $('wmsLayerButton');
@@ -1065,15 +1128,18 @@
*/
if(overlayButton.checked){
- var layer = new OpenLayers.Layer.WMS( title,
- url, {layers: layer,format: "image/png",TRANSPARENT: "TRUE", EXCEPTIONS: exception} );
+ var layer = new OpenLayers.Layer.WMS( layerName,
+ url, {layers: layerName,format: "image/png",TRANSPARENT: "TRUE", EXCEPTIONS: exception} );
layer.isBaseLayer = false;
+ layer.aWMSLayers = aWMSLayers;
//layer.TRANSPARENT = true;
this.WMSManager.map.addLayer(layer);
} else {
- var layer = new OpenLayers.Layer.WMS( title,
- url, {layers: layer,format: "image/png", EXCEPTIONS: exception} );
+ var layer = new OpenLayers.Layer.WMS( layerName,
+ url, {layers: layerName,format: "image/png", EXCEPTIONS: exception} );
layer.isBaseLayer = true; //BaseLayer : Overlay
+
+ layer.aWMSLayers = aWMSLayers;
this.WMSManager.map.addLayer(layer);
this.WMSManager.map.setBaseLayer(layer, true);
this.WMSManager.map.events.triggerEvent("changebaselayer");
@@ -1081,19 +1147,8 @@
+
//set viewport - zoom to extent of current layer
- /*
- * need to set the exact extent of the layer and not
- * just the first extent of the getCapabilites response
- */
- var aExtents = [];
- for(i=0;i<layerA.length;i++){
- for(j=0;j<this.WMSManager.aWMSLayers.length;j++){
- var checkedLayer = layerA[i];
- var listedLayer = this.WMSManager.aWMSLayers[j];
- if(checkedLayer==listedLayer[0]) aExtents.push(listedLayer[3]);
- }
- }
//var ext = this.WMSManager.extent;
var bounds = null;
for(i=0;i<aExtents.length;i++){
More information about the Commits
mailing list