[Mapbender-commits] r1373 - branches/mapbender_sld/http/javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Tue May 29 08:13:32 EDT 2007


Author: uli
Date: 2007-05-29 08:13:32 -0400 (Tue, 29 May 2007)
New Revision: 1373

Modified:
   branches/mapbender_sld/http/javascripts/map_obj.js
Log:
enhanced wms object


Modified: branches/mapbender_sld/http/javascripts/map_obj.js
===================================================================
--- branches/mapbender_sld/http/javascripts/map_obj.js	2007-05-29 12:11:42 UTC (rev 1372)
+++ branches/mapbender_sld/http/javascripts/map_obj.js	2007-05-29 12:13:32 UTC (rev 1373)
@@ -5,7 +5,7 @@
 */
 
 //global variables
-var wms = new Array();
+var wms = [];
 var wms_layer_count = 0;
 //list of all wms-objects
 function add_wms(
@@ -35,8 +35,8 @@
 					gui_wms_featureinfoformat,
 					gui_wms_exceptionformat,
 					gui_wms_epsg,
-					gui_wms_visible);
-					wms_layer[wms.length - 1] = new Array();
+					parseInt(gui_wms_visible));
+					wms_layer[wms.length - 1] = [];
 }
 //the wms constructor
 function wms_const(  
@@ -73,23 +73,150 @@
 	this.wms_getfeatureinfo = wms_getfeatureinfo;
 	this.wms_getlegendurl = wms_getlegendurl;
 	this.wms_filter = wms_filter;
-	this.data_type = new Array();
-	this.data_format = new Array();
-	this.objLayer = new Array();
+	this.data_type = [];
+	this.data_format = [];
+	this.objLayer = [];
 	this.gui_wms_mapformat = gui_wms_mapformat;
 	this.gui_wms_featureinfoformat = gui_wms_featureinfoformat;
 	this.gui_wms_exceptionformat = gui_wms_exceptionformat;
 	this.gui_wms_epsg = gui_wms_epsg;
 	this.gui_wms_visible = gui_wms_visible;
-	this.gui_epsg = new Array();
-	this.gui_minx = new Array();
-	this.gui_miny = new Array();
-	this.gui_maxx = new Array();
-	this.gui_maxy = new Array();
+	this.gui_epsg = [];
+	this.gui_minx = [];
+	this.gui_miny = [];
+	this.gui_maxx = [];
+	this.gui_maxy = [];
 
 // opacity version 
 	this.gui_wms_mapopacity = 1;      
 }
+
+/**
+ * rephrases the featureInfoRequest
+ *
+ * @member wms_const
+ * @param Object mapObj the mapbender mapObject of the wms  
+ * @param Point clickPoint map-click position 
+ * @return featureInfoRequest, onlineresource + params
+ * @type string
+ */
+wms_const.prototype.getFeatureInfoRequest = function(mapObj, clickPoint){	
+	
+	//check layers and querylayers first 
+	var layers = this.getLayers();
+	var querylayers = this.getQuerylayers();
+	
+	if(!layers || !querylayers){
+		return false;
+	}
+	
+	var rq = this.wms_getfeatureinfo;
+	rq += mb_getConjunctionCharacter(this.wms_getfeatureinfo);
+	if(this.wms_version === "1.0.0"){
+		rq += "WMTVER=" + this.wms_version + "&REQUEST=feature_info";
+	}
+	else{
+		rq += "VERSION=" + this.wms_version + "&REQUEST=GetFeatureInfo&SERVICE=WMS";
+	}
+	
+	rq += "&LAYERS=" + layers.join(",");
+	rq += "&QUERY_LAYERS=" + querylayers.join(",");
+	rq += "&WIDTH=" + mapObj.getWidth();
+	rq += "&HEIGHT=" + mapObj.getHeight();
+	rq += "&SRS=" + mapObj.getSRS();
+	rq += "&BBOX=" + mapObj.getExtent();
+	rq += "&STYLES=" + this.getLayerstyles().join(",");
+	rq += "&FORMAT=" + this.gui_wms_mapformat;
+	rq += "&INFO_FORMAT=" + this.gui_wms_featureinfoformat;
+	rq += "&EXCEPTIONS=application/vnd.ogc.se_xml";
+	rq += "&X=" + clickPoint.x;
+	rq += "&Y=" + clickPoint.y;
+	return rq;
+};
+
+/**
+ * get all visible layers
+ *
+ * @member wms_const 
+ * @return array of layernames 
+ * @type string[]
+ */
+wms_const.prototype.getLayers = function(){
+	
+	//visibility of the wms
+	var wmsIsVisible = (this.gui_wms_visible > 0);
+	if(!wmsIsVisible){
+		return false;
+	}
+	//TODO: consider scalehints	
+	visibleLayers = [];
+	for(var i=0; i< this.objLayer.length; i++){
+		if(this.objLayer[i].gui_layer_visible === 1 && this.objLayer[i].layer_parent !== null ){
+			visibleLayers.push(this.objLayer[i].layer_name);
+		}
+	}
+	if(visibleLayers.length === 0){
+		return false;
+	}
+	return visibleLayers;
+};
+
+/**
+ * get the actual style of all visible layers
+ *
+ * @member wms_const 
+ * @return commaseparated list of actual layerstyles
+ * @type string
+ */
+wms_const.prototype.getLayerstyles = function(){
+	var layers = this.getLayers();
+	var layerstyles = '';
+	var styles = [];
+	if(layers){
+		for(i = 0; i < layers.length; i++){
+			var style = this.getStyleByLayerName(layers[i]);
+			if(!style){
+				style = '';
+			}
+			styles.push(style)
+		}
+		return styles;
+	}
+	return false;
+};
+
+/**
+ * get the style of the layer
+ *
+ * @member wms_const 
+ * @param layername
+ * @return the stylename of the given layer
+ * @type string
+ */
+wms_const.prototype.getStyleByLayerName = function(layername){
+	return false;
+};
+
+/**
+ * get all querylayers
+ *
+ * @member wms_const 
+ * @return array of layernames
+ * @type string[]
+ */
+wms_const.prototype.getQuerylayers = function(){
+	queryLayers = [];
+	for(var i=0; i< this.objLayer.length; i++){
+		if(this.objLayer[i].gui_layer_querylayer === 1 && this.objLayer[i].layer_parent !== null ){
+			queryLayers.push(this.objLayer[i].layer_name);
+		}
+	}
+	if(queryLayers.lebngth === 0){
+		return false;
+	}
+	return queryLayers;
+};
+
 function wms_add_data_type_format(datatype,dataformat){
 	var insertDataFormat = true;
 	for (var i = 0 ; i < wms[wms.length-1].data_type.length ; i ++) {
@@ -110,16 +237,16 @@
 	wms[wms.length-1].gui_maxy[wms[wms.length-1].gui_maxy.length] = maxy;
 }
 function wms_addLayerStyle(styleName, styleTitle, count, layerCount, styleLegendUrl, styleLegendUrlFormat){
-	if (wms[wms.length-1].objLayer[layerCount]) {
-		wms[wms.length-1].objLayer[layerCount].layer_style[count] = new Array();
-		wms[wms.length-1].objLayer[layerCount].layer_style[count]["name"] = styleName;
-		wms[wms.length-1].objLayer[layerCount].layer_style[count]["title"] = styleTitle;
-		wms[wms.length-1].objLayer[layerCount].layer_style[count]["legendurl"] = styleLegendUrl;
-		wms[wms.length-1].objLayer[layerCount].layer_style[count]["legendurlformat"] = styleLegendUrlFormat;
+	var currentLayer = wms[wms.length-1].objLayer[layerCount]; 
+	if (currentLayer) {
+		currentLayer.layer_style[count] = [];
+		currentLayer.layer_style[count]["name"] = styleName;
+		currentLayer.layer_style[count]["title"] = styleTitle;
+		currentLayer.layer_style[count]["legendurl"] = styleLegendUrl;
+		currentLayer.layer_style[count]["legendurlformat"] = styleLegendUrlFormat;
 	}
 }
-
-
+//TODO: add layerstyle handling....
 //layer
 function wms_add_layer(
 			layer_parent,
@@ -155,23 +282,24 @@
 											layer_metadataurl,
 											gui_layer_wms_id,
 											gui_layer_status,
-											gui_layer_selectable,
-											gui_layer_visible,
-											gui_layer_queryable,
-											gui_layer_querylayer,
+											parseInt(gui_layer_selectable),
+											parseInt(gui_layer_visible),
+											parseInt(gui_layer_queryable),
+											parseInt(gui_layer_querylayer),
 											gui_layer_minscale,
 											gui_layer_maxscale,
 											gui_layer_wfs_featuretype );
 }
 function layer_addEpsg(epsg,minx,miny,maxx,maxy){
-	var j=wms[wms.length-1].objLayer.length-1;
-	var k=wms[wms.length-1].objLayer[j].layer_epsg.length;
-	wms[wms.length-1].objLayer[j].layer_epsg[k]=new Array();
-	wms[wms.length-1].objLayer[j].layer_epsg[k]["epsg"]=epsg;
-	wms[wms.length-1].objLayer[j].layer_epsg[k]["minx"]=minx;
-	wms[wms.length-1].objLayer[j].layer_epsg[k]["miny"]=miny;
-	wms[wms.length-1].objLayer[j].layer_epsg[k]["maxx"]=maxx;
-	wms[wms.length-1].objLayer[j].layer_epsg[k]["maxy"]=maxy;
+	var j = wms[wms.length-1].objLayer.length-1;
+	var k = wms[wms.length-1].objLayer[j].layer_epsg.length;
+	var currentLayer = wms[wms.length-1].objLayer[j];
+	currentLayer.layer_epsg[k]=[];
+	currentLayer.layer_epsg[k]["epsg"]=epsg;
+	currentLayer.layer_epsg[k]["minx"]=minx;
+	currentLayer.layer_epsg[k]["miny"]=miny;
+	currentLayer.layer_epsg[k]["maxx"]=maxx;
+	currentLayer.layer_epsg[k]["maxy"]=maxy;
 }
 function wms_layer(
 			layer_parent,
@@ -204,7 +332,7 @@
 	this.layer_minscale = layer_minscale;
 	this.layer_maxscale = layer_maxscale;
 	this.layer_metadataurl = layer_metadataurl;
-	this.layer_epsg = new Array();
+	this.layer_epsg = [];
 	this.gui_layer_wms_id = gui_layer_wms_id;
 	this.gui_layer_status = gui_layer_status;
 	this.gui_layer_selectable = gui_layer_selectable;
@@ -214,6 +342,7 @@
 	this.gui_layer_minscale = gui_layer_minscale;
 	this.gui_layer_maxscale = gui_layer_maxscale;
 	this.gui_layer_wfs_featuretype = gui_layer_wfs_featuretype;
-	this.layer_style = new Array();
+	this.gui_layer_style;
+	this.layer_style = [];
 	wms_layer_count++;
 }
\ No newline at end of file



More information about the Mapbender_commits mailing list