[OpenLayers-Commits] r3114 - in sandbox/ominiverdi/openlayers: examples lib lib/OpenLayers/Control theme/default
commits at openlayers.org
commits at openlayers.org
Thu May 3 05:48:52 EDT 2007
Author: ominiverdi
Date: 2007-05-03 05:48:51 -0400 (Thu, 03 May 2007)
New Revision: 3114
Added:
sandbox/ominiverdi/openlayers/examples/wms_manager.html
sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js
Modified:
sandbox/ominiverdi/openlayers/lib/OpenLayers.js
sandbox/ominiverdi/openlayers/theme/default/style.css
Log:
WMSManager (ticket #687): first upload
Added: sandbox/ominiverdi/openlayers/examples/wms_manager.html
===================================================================
--- sandbox/ominiverdi/openlayers/examples/wms_manager.html (rev 0)
+++ sandbox/ominiverdi/openlayers/examples/wms_manager.html 2007-05-03 09:48:51 UTC (rev 3114)
@@ -0,0 +1,42 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <style type="text/css">
+ #map {
+ width: 800px;
+ height: 475px;
+ border: 1px solid black;
+ }
+ </style>
+
+ <script src="../lib/OpenLayers.js"></script>
+ <script type="text/javascript">
+ <!--
+
+ var map;
+
+ function init(){
+ //OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";//ominiverdi.org
+ OpenLayers.ProxyHost="/proxy/?url=";//openlayers.org
+
+ map = new OpenLayers.Map( $('map') );
+
+ var aWMSServers=new Array(
+ ['OpenLayers WMS','http://labs.metacarta.com/wms/vmap0'],
+ ['NASA Blue Marble Next Generation','http://wms.jpl.nasa.gov/wms.cgi?']
+
+ //['Localhost','http://localhost/cgi-bin/mapserv?map=mapfile/worldata.map']
+ //['OpenPlans WMS','http://sigma.openplans.org:3128/geoserver/wms']
+
+ );
+
+ map.addControl( new OpenLayers.Control.WMSManager(aWMSServers) );
+
+ }
+
+ // -->
+ </script>
+ </head>
+ <body onload="init()">
+ <div id="map"></div>
+ </body>
+</html>
Added: sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js
===================================================================
--- sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js (rev 0)
+++ sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js 2007-05-03 09:48:51 UTC (rev 3114)
@@ -0,0 +1,782 @@
+/* Copyright (c) 2006-2007 MetaCarta, Inc., published under the BSD license.
+ * See http://svn.openlayers.org/trunk/openlayers/release-license.txt
+ * for the full text of the license. */
+
+/**
+ * @class
+ *
+ * @author Lorenzo Becchi (ominiverdi.org)
+ * @projectDescription ticket #687
+ *
+ * @requires OpenLayers/Control.js
+ */
+OpenLayers.Control.WMSManager = OpenLayers.Class.create();
+OpenLayers.Control.WMSManager.prototype =
+ OpenLayers.Class.inherit( OpenLayers.Control, {
+
+ /** @type String */
+ activeColor: "darkblue",
+
+
+ // DOM Elements
+
+ /** @type DOMElement */
+ olLayerManager: null,
+
+ /** @type DOMElement */
+ baseServerListDiv: null,
+
+ /** @type DOMElement */
+ olServerList: null,
+
+ /** @type DOMElement */
+ olLegend: null,
+
+ /** @type DOMElement */
+ olLayerManagerHeader: null,
+
+ /** @type DOMElement */
+ dataLbl: null,//to be deleted or changed
+
+ /** @type DOMElement */
+ dataolLayerManager: null,//to be deleted or changed
+
+ /** @type DOMElement */
+ minimizeDiv: null,
+
+ /** @type DOMElement */
+ maximizeDiv: null,
+
+ //Arrays
+ /** @type Array */
+ aWMSServer: null,
+
+ /** @type Array */
+ baseLayerInputs: null,//to be deleted maybe...
+
+ /** @type Array */
+ baseLayerInputs: null,//to be deleted maybe...
+
+ /** @type Array */
+ dataLayerInputs: null,//to be deleted maybe...
+
+ //others
+
+ /** @type Boolean */
+ ascending: true,
+
+ /** @type string */
+ activePanel: 'olLegend',
+
+ /**
+ * @constructor
+ */
+ initialize: function(aWMSServer,options) {
+ OpenLayers.Control.prototype.initialize.apply(this, arguments);
+ this.aWMSServer= aWMSServer;
+ },
+
+ /**
+ * @param {string} Title
+ * @param {string} WMS Server url
+ */
+ addWMSServer: function (title, url){
+ this.aWMSServer.push([title,url]);
+ },
+
+ /**
+ * @param {OpenLayers.Map} map
+ */
+ setMap: function(map) {
+ OpenLayers.Control.prototype.setMap.apply(this, arguments);
+
+ this.map.events.register("addlayer", this, this.redraw);
+ this.map.events.register("changelayer", this, this.redraw);
+ this.map.events.register("removelayer", this, this.redraw);
+ this.map.events.register("changebaselayer", this, this.redraw);
+ },
+
+ /**
+ * @returns A reference to the DIV DOMElement containing the switcher tabs
+ * @type DOMElement
+ */
+ draw: function() {
+ OpenLayers.Control.prototype.draw.apply(this);
+
+ // create layout divs
+ this.loadContents();
+
+ // set mode to minimize
+ // this.minimizeControl();
+ this.showControls();
+
+ // populate div with current info
+ this.redraw();
+
+ return this.div;
+ },
+
+ /** Goes through and takes the current state of the Map and rebuilds the
+ * control to display that state. Groups base layers into a radio-button
+ * group and lists each data layer with a checkbox.
+ *
+ * @returns A reference to the DIV DOMElement containing the control
+ * @type DOMElement
+ */
+ redraw: function() {
+
+ //clear out previous layers
+ this.baseLayersDiv.innerHTML = "";
+ this.baseLayerInputs = new Array();
+
+ this.dataLayersDiv.innerHTML = "";
+ this.dataLayerInputs = new Array();
+
+ var containsOverlays = false;
+
+ var layers = this.map.layers.slice();
+
+ //alert(layers.length);
+ if(layers.length == 0)
+ this.baseLayersDiv.innerHTML = "<p>no layers added.<br> please add one using 'WMS Servers' selector</p>";
+
+ if (!this.ascending) { layers.reverse(); }
+ for( var i = 0; i < layers.length; i++) {
+ var layer = layers[i];
+ var baseLayer = layer.isBaseLayer;
+
+ if (baseLayer || layer.displayInWMSManager) {
+
+ if (!baseLayer) {
+ containsOverlays = true;
+ }
+
+ // only check a baselayer if it is *the* baselayer, check data
+ // layers if they are visible
+ var checked = (baseLayer) ? (layer == this.map.baseLayer)
+ : layer.getVisibility();
+
+ // create input element
+ var inputElem = document.createElement("input");
+ inputElem.id = "input_" + layer.name;
+ inputElem.name = (baseLayer) ? "baseLayers" : layer.name;
+ inputElem.type = (baseLayer) ? "radio" : "checkbox";
+ inputElem.value = layer.name;
+ inputElem.checked = checked;
+ inputElem.defaultChecked = checked;
+ inputElem.layer = layer;
+ inputElem.control = this;
+
+ if (!baseLayer && !layer.inRange) {
+ inputElem.disabled = true;
+ }
+ OpenLayers.Event.observe(inputElem, "mouseup",
+ this.onInputClick.bindAsEventListener(inputElem));
+
+ // create span
+ var labelSpan = document.createElement("span");
+ if (!baseLayer && !layer.inRange) {
+ labelSpan.style.color = "gray";
+ }
+ labelSpan.innerHTML = layer.name;
+ labelSpan.style.verticalAlign = (baseLayer) ? "bottom" : "baseline";
+ OpenLayers.Event.observe(labelSpan, "click",
+ this.onInputClick.bindAsEventListener(inputElem));
+ // create line break
+ var br = document.createElement("br");
+
+
+ var groupArray = (baseLayer) ? this.baseLayerInputs
+ : this.dataLayerInputs;
+ groupArray.push(inputElem);
+
+
+ var groupDiv = (baseLayer) ? this.baseLayersDiv
+ : this.dataLayersDiv;
+ groupDiv.appendChild(inputElem);
+ groupDiv.appendChild(labelSpan);
+ groupDiv.appendChild(br);
+ }
+
+ }
+
+ // if no overlays, dont display the overlay label
+ this.dataLbl.style.display = (containsOverlays) ? "" : "none";
+
+ return this.div;
+ },
+
+ /** A label has been clicked, check or uncheck its corresponding input
+ *
+ * @private
+ *
+ * @param {Event} e
+ */
+
+ onInputClick: function(e) {
+ if (!this.disabled) {
+ if (this.type == "radio") {
+ this.checked = true;
+ this.layer.map.setBaseLayer(this.layer, true);
+ this.layer.map.events.triggerEvent("changebaselayer");
+ } else {
+ this.checked = !this.checked;
+ this.control.updateMap();
+ }
+ }
+ OpenLayers.Event.stop(e);
+ },
+
+ /** Need to update the map accordingly whenever user clicks in either of
+ * the layers.
+ *
+ * @private
+ *
+ * @param {Event} e
+ */
+ onLayerClick: function(e) {
+ this.updateMap();
+ },
+
+
+ /** Cycles through the loaded data and base layer input arrays and makes
+ * the necessary calls to the Map object such that that the map's
+ * visual state corresponds to what the user has selected in the control
+ *
+ * @private
+ */
+ updateMap: function() {
+
+ // set the newly selected base layer
+ for(var i=0; i < this.baseLayerInputs.length; i++) {
+ var input = this.baseLayerInputs[i];
+ if (input.checked) {
+ this.map.setBaseLayer(input.layer, false);
+ }
+ }
+
+ // set the correct visibilities for the overlays
+ for(var i=0; i < this.dataLayerInputs.length; i++) {
+ var input = this.dataLayerInputs[i];
+ input.layer.setVisibility(input.checked, true);
+ }
+
+ },
+
+ /** Set up the labels and divs for the control
+ *
+ * @param {Event} e
+ */
+ maximizeControl: function(e) {
+
+ //HACK HACK HACK - find a way to auto-size this WMSManager
+ this.div.style.width = "20em";
+ this.div.style.height = "";
+
+ this.showControls(false);
+
+ if (e != null) {
+ OpenLayers.Event.stop(e);
+ }
+ },
+
+ /** Hide all the contents of the control, shrink the size,
+ * add the maximize icon
+ *
+ * @param {Event} e
+ */
+ minimizeControl: function(e) {
+
+ this.div.style.width = "0px";
+ this.div.style.height = "0px";
+
+ this.showControls(true);
+
+ if (e != null) {
+ OpenLayers.Event.stop(e);
+ }
+ },
+
+ /** Hide/Show all WMSManager controls depending on whether we are
+ * minimized or not
+ *
+ * @private
+ *
+ * @param {Boolean} minimize
+ */
+ showControls: function(minimize) {
+
+ this.maximizeDiv.style.display = minimize ? "" : "none";
+ this.minimizeDiv.style.display = minimize ? "none" : "";
+
+ this.olLayerManager.style.display = minimize ? "none" : "";
+ },
+
+ /** Set up the labels and divs for the control
+ *
+ */
+ loadContents: function() {
+
+ //configure main div
+ this.div.style.position = "absolute";
+ this.div.style.top = "10px";
+ this.div.style.right = "0px";
+ this.div.style.left = "";
+ this.div.style.fontFamily = "sans-serif";
+ this.div.style.fontWeight = "bold";
+ this.div.style.marginTop = "3px";
+ this.div.style.marginLeft = "3px";
+ this.div.style.marginBottom = "3px";
+ this.div.style.fontSize = "smaller";
+ this.div.style.color = "white";
+ this.div.style.backgroundColor = "transparent";
+ //added by ominiverdi
+ this.div.style.width = "20em";
+
+ OpenLayers.Event.observe(this.div, "mouseup",
+ this.mouseUp.bindAsEventListener(this));
+ OpenLayers.Event.observe(this.div, "click",
+ this.ignoreEvent);
+ OpenLayers.Event.observe(this.div, "mousedown",
+ this.mouseDown.bindAsEventListener(this));
+ OpenLayers.Event.observe(this.div, "dblclick", this.ignoreEvent);
+
+ /*
+ * OL Layers Manager Header
+ */
+
+ //create olLayerManagerHeader div
+ this.olLayerManagerHeader = document.createElement("div");
+ // this.olLayerManagerHeader.id = "olLayerManagerHeader";
+ this.olLayerManagerHeader.className = "olLayerManagerHeader";
+
+ // add Legend button
+ this.buttonLayers = document.createElement("a");
+ this.buttonLayers.href="#";
+ this.buttonLayers.LayerManager =this;
+ this.buttonLayers.panel ='olLegend';
+ this.buttonLayers.onclick =this.switchPanel;
+ var spanL = document.createElement("span");
+ spanL.innerHTML = "Legend";
+ this.buttonLayers.appendChild(spanL);
+
+ // add WMS Servers button
+ this.buttonServers = document.createElement("a");
+ this.buttonServers.href="#";
+ this.buttonServers.LayerManager =this;
+ this.buttonServers.panel = 'olServerList';
+ this.buttonServers.onclick =this.switchPanel;
+ var spanS = document.createElement("span");
+ spanS.innerHTML = "WMS Servers";
+ this.buttonServers.appendChild(spanS);
+
+ this.olLayerManagerHeader.appendChild(this.buttonLayers);
+ this.olLayerManagerHeader.appendChild(this.buttonServers);
+
+
+ /*
+ * OL Layers Manager
+ */
+
+
+ this.olLayerManager = document.createElement("div");
+ this.olLayerManager.className = "olLayerManager";
+ this.olLayerManager.style.backgroundColor = this.activeColor;
+ this.olLayerManager.style.padding = "3px";
+
+ // had to set width/height to get transparency in IE to work.
+ // thanks -- http://jszen.blogspot.com/2005/04/ie6-opacity-filter-caveat.html
+ //
+ this.olLayerManager.style.width = "100%";
+ this.olLayerManager.style.height = "100%";
+
+
+ /*var baseLbl = document.createElement("div");
+ baseLbl.innerHTML = "<u>Legend</u>";
+ baseLbl.style.marginTop = "0px";
+ baseLbl.style.marginLeft = "3px";
+ baseLbl.style.marginBottom = "3px";*/
+
+
+
+
+ this.dataLbl = document.createElement("div");
+ this.dataLbl.innerHTML = "<u>Overlays</u>";
+ this.dataLbl.style.marginTop = "3px";
+ this.dataLbl.style.marginLeft = "3px";
+ this.dataLbl.style.marginBottom = "3px";
+
+ this.dataLayersDiv = document.createElement("div");
+ this.dataLayersDiv.style.paddingLeft = "10px";
+ this.dataLayersDiv.className = "dataLayersDiv";
+ // WMS form part
+ this.olServerList = document.createElement("div");
+ this.olServerList.className = "olServerList";
+ var p = document.createElement('p');
+ //p.innerHTML = 'Use the select box here below to choose a server. Wait for remote response.';
+ this.olServerList.appendChild(p);
+ var p = document.createElement('p');
+ p.id = 'wmsManagerOutput';
+ this.olServerList.appendChild(p);
+
+ var form = document.createElement('form');
+ form.name='WMSServerConnector';
+ form.action='#';
+ //Make server select
+ this.serverSelect = document.createElement('select');
+ this.serverSelect.name = 'wmsServerList';
+ this.serverSelect.id = 'wmsServerList';
+ this.serverSelect.WMSManager = this;
+ this.serverSelect.style.width = "220px";
+ this.serverSelect.onchange = this.connect2server;
+ var j = 0;
+ var opt = new Option( 'select a server', '', true, true );
+ this.serverSelect[j++] = opt;
+ this.olServerList.appendChild(this.serverSelect);
+ for(i=0;i<this.aWMSServer.length;i++) {
+ this.serverSelect[j++] = new Option(this.aWMSServer[i][0],this.aWMSServer[i][1],false,false);
+ }
+
+
+
+ // creating the legend layer
+ this.baseLayersDiv = document.createElement("div");
+ this.baseLayersDiv.style.paddingLeft = "10px";
+
+ this.olLegend = document.createElement("div");
+ this.olLegend.style.paddingLeft = "10px";
+ this.olLegend.className ="olLegend";
+ this.olLegend.appendChild(this.baseLayersDiv);
+ this.olLegend.appendChild(this.dataLbl);
+ this.olLegend.appendChild(this.dataLayersDiv);
+
+
+
+ /*
+ * APPENDING THE STRUCTURE
+ */
+
+ //appending main elements
+ //this.olLayerManager.appendChild(baseLbl);
+
+ this.olLayerManager.appendChild(this.olLayerManagerHeader);
+ this.olLayerManager.appendChild(this.olLegend);
+ // this.olLayerManager.appendChild(serverListTitle);
+ this.olLayerManager.appendChild(this.olServerList);
+
+ this.div.appendChild(this.olLayerManager);
+
+
+ /*
+ * GRAPHICS STUFF
+ */
+ OpenLayers.Rico.Corner.round(this.div, {corners: "tl bl",
+ bgColor: "transparent",
+ color: this.activeColor,
+ blend: false});
+
+ OpenLayers.Rico.Corner.changeOpacity(this.olLayerManager, 0.75);
+
+ var imgLocation = OpenLayers.Util.getImagesLocation();
+ var sz = new OpenLayers.Size(18,18);
+
+ // maximize button div
+ var img = imgLocation + 'layer-switcher-maximize.png';
+ this.maximizeDiv = OpenLayers.Util.createAlphaImageDiv(
+ "OpenLayers_Control_MaximizeDiv",
+ null,
+ sz,
+ img,
+ "absolute");
+ this.maximizeDiv.style.top = "5px";
+ this.maximizeDiv.style.right = "0px";
+ this.maximizeDiv.style.left = "";
+ this.maximizeDiv.style.display = "none";
+ OpenLayers.Event.observe(this.maximizeDiv,
+ "click",
+ this.maximizeControl.bindAsEventListener(this));
+
+ this.div.appendChild(this.maximizeDiv);
+
+ // minimize button div
+ var img = imgLocation + 'layer-switcher-minimize.png';
+ var sz = new OpenLayers.Size(18,18);
+ this.minimizeDiv = OpenLayers.Util.createAlphaImageDiv(
+ "OpenLayers_Control_MinimizeDiv",
+ null,
+ sz,
+ img,
+ "absolute");
+ this.minimizeDiv.style.top = "5px";
+ this.minimizeDiv.style.right = "0px";
+ this.minimizeDiv.style.left = "";
+ this.minimizeDiv.style.display = "none";
+ OpenLayers.Event.observe(this.minimizeDiv,
+ "click",
+ this.minimizeControl.bindAsEventListener(this));
+
+ this.div.appendChild(this.minimizeDiv);
+
+ /*
+ * START UP PANELS
+ *
+ */
+ this.switchPanel();
+ },
+
+ /**
+ * @private
+ *
+ * @param {Event} evt
+ */
+ connect2server: function(evt) {
+
+ var select = this;
+ if((select)) var url = select[select.selectedIndex].value;
+ else url ="";
+
+ if(url.length>0) {
+ this.baseURL = url;
+ } else {
+ alert('no server selected. please select one.');
+ return;
+ }
+ if (this.baseURL.indexOf('?') == -1)
+ {
+ this.baseURL = this.baseURL + '?';
+ }
+ else
+ {
+ if (this.baseURL.charAt( this.baseURL.length - 1 ) == '&')
+ this.baseURL = this.baseURL.slice( 0, -1 );
+ }
+
+ this.baseURL = this.baseURL+ "&service=WMS";
+ this.baseURL = this.baseURL + "&version=1.1.1";
+ this.baseURL = this.baseURL + "&request=GetCapabilities";
+
+
+ $('wmsManagerOutput').innerHTML = "Loading Layers list... please wait...";
+ //$('wmsManagerOutput').innerHTML = this.baseURL;
+ //alert(this.baseURL);
+ OpenLayers.loadURL(this.baseURL, null, this, this.WMSManager.parseGetCapabilities);
+ },
+
+
+ /**
+ * @private
+ *
+ * @param {XMLHttpRequest} ajaxRequest
+ */
+ parseGetCapabilities: function(ajaxRequest) {
+ var text = ajaxRequest.responseText;
+
+ var xml = ajaxRequest.responseXML;
+
+ if(xml == null) return alert('incorrect content: check your WMS url');
+ if(typeof xml=='object'){
+ //alert(xml);
+ var aLayer = xml.getElementsByTagName('Layer');
+ if(aLayer.length>0){
+ this.WMSManager.drawLayersForm(xml);
+ } else {
+ alert('no Layers available on this server');
+ }
+ } else {
+ alert('connection error: response is not an object');
+ }
+
+ },
+
+ /**
+ * @private
+ *
+ * @param {XMLHttpRequest} ajaxRequest
+ */
+ drawLayersForm: function(xml) {
+
+ var formObj = this.olServerList;
+
+ //alert('1');
+ //get Extent (to implent BoundingBox alternative)
+ var bbox = xml.getElementsByTagName('LatLonBoundingBox')[0];
+ this.extent = [bbox.getAttribute('minx'),bbox.getAttribute('miny'),bbox.getAttribute('maxx'),bbox.getAttribute('maxy')];
+ this.mapCenter = [((bbox.getAttribute('maxx') - bbox.getAttribute('minx'))/2),((bbox.getAttribute('maxy') - bbox.getAttribute('miny'))/2)]
+
+ //alert('2');
+ //print extent (clean if already there)
+ var myextent = $('wmsExtent');
+ if( myextent)myextent.parentNode.removeChild(myextent);
+ var p = document.createElement('p');
+ //p.innerHTML = 'map extent: '+ this.extent;
+ p.id = 'wmsExtent';
+ formObj.appendChild(p);
+
+ //alert('3');
+ //get map SRS (should be layer related)
+ this.srs = xml.getElementsByTagName('SRS')[0].textContent;
+ var mywmssrs = $('wmsSRS');
+ if( mywmssrs)mywmssrs.parentNode.removeChild(mywmssrs);
+ var p = document.createElement('p');
+ //p.innerHTML = 'SRS: '+ this.srs;
+ p.id = 'wmsSRS';
+ formObj.appendChild(p);
+
+ //alert('4');
+ //get Layers
+ var aLayers = xml.getElementsByTagName('Layer');
+ /*var myp = getRawObject('wmsLayerP');
+ if( myp)myp.parentNode.removeChild(myp);
+ var p = document.createElement('p');
+ p.innerHTML = 'choose a Process';
+ p.id = 'wmsLayerP';
+ self.formObj.appendChild(p);*/
+ var myselect = $('wmsLayerList');
+ if( myselect)myselect.parentNode.removeChild(myselect);
+ var select = document.createElement('select');
+ select.name = 'wmsLayerList';
+ select.onchange = this.addWMSLayer;
+ select.id = 'wmsLayerList';
+ select.WMSManager = this;
+ select.style.width = "220px";
+ var j = 0;
+ var opt = new Option( 'select a Layer', '', true, true );
+ select[j++] = opt;
+ for(i=0;i<aLayers.length;i++){
+ var names = aLayers[i].getElementsByTagName('Name');
+ var titles = aLayers[i].getElementsByTagName('Title');
+ //alert(processes[0].textContent);//nodeValue,localName,tagName,textContent
+ var name = names[0].textContent;
+ var title = titles[0].textContent;
+ select[j++] = new Option(title,name,false,false);
+ }
+ formObj.appendChild(select);
+
+ $('wmsManagerOutput').innerHTML = '';
+ },
+
+
+ /**
+ * @private
+ *
+ */
+ addWMSLayer: function() {
+ var select1 = $('wmsServerList');
+ var select2 = $('wmsLayerList');
+
+ if(select1) var url = select1[select1.selectedIndex].value;
+ else url ="";
+ if(select2) var layer = select2[select2.selectedIndex].value;
+ else layer ="";
+ if(select2) var title = select2[select2.selectedIndex].textContent;
+ else title = layer;
+
+ if(url.length<1) {
+ alert('no server selected. please select one.');
+ return;
+ }
+ if(layer.length<1) {
+ alert('no layer selected. please select one.');
+ return;
+ }
+
+ if (url.indexOf('?') == -1)
+ {
+ url = url + '?';
+ }
+ else
+ {
+ if (url.charAt( url.length - 1 ) == '&')
+ url = url.slice( 0, -1 );
+ }
+
+ /* url = url+ "&service=WMS";
+ url = url + "&version=1.1.1";
+ url = url + "&request=getMap";
+ url = url + "&layers=" + layer;
+ url = url + "&format=image/jpeg"; */
+
+ //create layer add with OL
+
+ var layer = new OpenLayers.Layer.WMS( title,
+ url, {layers: layer} );
+ map.addLayer(layer);
+
+
+ //var lon = 5;
+ var lon = this.WMSManager.mapCenter[1];
+
+ //var lat = 40;
+ var lat = this.WMSManager.mapCenter[0];
+ var zoom = 2;
+ map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
+ },
+
+
+
+ /**
+ * @private
+ *
+ */
+ switchPanel: function() {
+ if(this.LayerManager)var LayerManager = this.LayerManager;
+ else var LayerManager = this;
+
+ var header = LayerManager.olLayerManagerHeader;
+ if(this.panel)LayerManager.activePanel = this.panel;
+ var aHref = header.getElementsByTagName('a');
+ var activePanel = LayerManager.activePanel;
+
+ for(var i=0;i<aHref.length;i++){
+ //alert(aHref[i].innerHTML);
+ if(aHref[i].panel == activePanel)
+ aHref[i].className = 'active';
+ else
+ aHref[i].className = '';
+ }
+
+ LayerManager.olServerList.style.display = (activePanel=='olServerList') ? "" : "none";
+ LayerManager.olLegend.style.display = (activePanel=='olLegend') ? "" : "none";
+ //alert(LayerManager.dataLayersDiv.innerHTML);
+ },
+
+ /**
+ * @private
+ *
+ * @param {Event} evt
+ */
+ ignoreEvent: function(evt) {
+ OpenLayers.Event.stop(evt);
+ },
+
+
+ /** Register a local 'mouseDown' flag so that we'll know whether or not
+ * to ignore a mouseUp event
+ *
+ * @private
+ *
+ * @param {Event} evt
+ */
+ mouseDown: function(evt) {
+ this.mouseDown = true;
+ this.ignoreEvent(evt);
+ },
+
+ /** If the 'mouseDown' flag has been set, that means that the drag was
+ * started from within the WMSManager control, and thus we can
+ * ignore the mouseup. Otherwise, let the Event continue.
+ *
+ * @private
+ *
+ * @param {Event} evt
+ */
+ mouseUp: function(evt) {
+ if (this.mouseDown) {
+ this.mouseDown = false;
+ this.ignoreEvent(evt);
+ }
+ },
+
+ /** @final @type String */
+ CLASS_NAME: "OpenLayers.Control.WMSManager"
+});
Modified: sandbox/ominiverdi/openlayers/lib/OpenLayers.js
===================================================================
--- sandbox/ominiverdi/openlayers/lib/OpenLayers.js 2007-05-02 14:20:28 UTC (rev 3113)
+++ sandbox/ominiverdi/openlayers/lib/OpenLayers.js 2007-05-03 09:48:51 UTC (rev 3114)
@@ -120,6 +120,7 @@
"OpenLayers/Control/DrawFeature.js",
"OpenLayers/Control/Panel.js",
"OpenLayers/Control/SelectFeature.js",
+ "OpenLayers/Control/WMSManager.js",
"OpenLayers/Geometry.js",
"OpenLayers/Geometry/Rectangle.js",
"OpenLayers/Geometry/Collection.js",
Modified: sandbox/ominiverdi/openlayers/theme/default/style.css
===================================================================
--- sandbox/ominiverdi/openlayers/theme/default/style.css 2007-05-02 14:20:28 UTC (rev 3113)
+++ sandbox/ominiverdi/openlayers/theme/default/style.css 2007-05-03 09:48:51 UTC (rev 3114)
@@ -148,3 +148,33 @@
background-image: url("img/draw_polygon_on.png");
background-repeat: no-repeat;
}
+
+
+
+
+.olLayerManagerHeader {
+
+}
+.olLayerManagerHeader a {
+ text-decoration:none;
+}
+
+.olLayerManagerHeader span {
+ border:1px solid rgb(100,100,160);
+ margin:2px;
+ margin-bottom:0;
+ padding:3px;
+ background-color:rgb(100,100,200);
+}
+.olLayerManagerHeader .active {
+ color:white;
+}
+.olLegend,.olServerList{
+ border:1px solid rgb(100,100,160);
+ margin:2px;
+ margin-bottom:0;
+ margin-right:6px;
+ padding:3px;
+ background-color:rgb(100,100,200);
+
+}
More information about the Commits
mailing list