[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