[Mapbender-commits] r8776 - trunk/mapbender/http/javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Feb 12 02:13:14 PST 2014


Author: armin11
Date: 2014-02-12 02:13:14 -0800 (Wed, 12 Feb 2014)
New Revision: 8776

Modified:
   trunk/mapbender/http/javascripts/map_obj.js
   trunk/mapbender/http/javascripts/mod_featureInfo.php
Log:
Little bugfix for empty featureInfo urls when layers are not visible.

Modified: trunk/mapbender/http/javascripts/map_obj.js
===================================================================
--- trunk/mapbender/http/javascripts/map_obj.js	2014-02-11 08:07:05 UTC (rev 8775)
+++ trunk/mapbender/http/javascripts/map_obj.js	2014-02-12 10:13:14 UTC (rev 8776)
@@ -966,7 +966,7 @@
      * 
      * @type string[]
      */
-    this.getFeatureInfoRequestsForLayers = function(clickPoint, ignoreWms){
+    this.getFeatureInfoRequestsForLayers = function(clickPoint, ignoreWms, epsg, realWorldPoint){
         var allRequests = [];
         //loop through all wms to get the FeatureInfoRequests
         for (var i = 0; i < this.wms.length; i++) {
@@ -991,8 +991,21 @@
 				//pull featureinfo request
 				var featureInfoRequest = this.wms[i].getFeatureInfoRequest(this, clickPoint);
 				//exchange layer parameter with current layer name
-				featureInfoRequest = changeURLParameterValue(featureInfoRequest,"LAYERS", this.wms[i].objLayer[j].layer_name);
-				featureInfoObj.request = featureInfoRequest;
+				if (typeof(featureInfoRequest) !== 'undefined' && featureInfoRequest !== "" && featureInfoRequest !== false) {
+					featureInfoRequest = changeURLParameterValue(featureInfoRequest,"LAYERS", this.wms[i].objLayer[j].layer_name);
+					featureInfoObj.request = featureInfoRequest;
+					//featureInfoObj.bbox =  this.wms[i].objLayer[j].layer_epsg;//array of bbox objects - find the one which have the needed epsg!
+					var bbox = this.objectFindByKey(this.wms[i].objLayer[j].layer_epsg, "epsg", epsg);
+					if (bbox) {
+						//check if 
+						featureInfoObj.inBbox = this.isPointInBbox(realWorldPoint, bbox);
+					} else {
+						featureInfoObj.inBbox = true;
+					}
+				} else {
+					featureInfoObj.request = "empty";
+					featureInfoObj.inBbox = false;
+				}
 				//get url to legend
 				if (typeof(this.wms[i].objLayer[j].layer_style[0]) !=='undefined' && typeof(this.wms[i].objLayer[j].layer_style[0].legendurl) !== 'undefined') {
 					featureInfoObj.legendurl = this.wms[i].objLayer[j].layer_style[0].legendurl;
@@ -1011,6 +1024,26 @@
         return false;
     };
 
+	this.isPointInBbox = function(point, bbox) {
+		if (point.x > bbox.minx && point.x < bbox.maxx && point.y > bbox.miny && point.y < bbox.maxy) {	
+			return true;	
+		} else {
+			return false;
+		}
+	}
+
+	// array = [{key:value},{key:value}]
+	this.objectFindByKey = function(array, key, value) {
+   	 	for (var i = 0; i < array.length; i++) {
+       		if (array[i][key] === value) {
+            		return array[i];
+        	}
+    	}
+    	return false;
+	}
+
+
+
 	function changeURLParameterValue(url, param, newValue){
     		var newAdditionalURL = "";
     		var tempArray = url.split("?");

Modified: trunk/mapbender/http/javascripts/mod_featureInfo.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_featureInfo.php	2014-02-11 08:07:05 UTC (rev 8775)
+++ trunk/mapbender/http/javascripts/mod_featureInfo.php	2014-02-12 10:13:14 UTC (rev 8776)
@@ -36,7 +36,6 @@
 	var featureInfoLayerPreselect = false;
 if(typeof(featureInfoDrawClick)==='undefined')
 	var featureInfoDrawClick = false;
-
 var mod_featureInfo_elName = "<?php echo $e_id;?>";
 var mod_featureInfo_frameName = "";
 var mod_featureInfo_target = "<?php echo $e_target[0]; ?>";
@@ -58,7 +57,6 @@
 eventInit.register(function () {
 	mb_regButton(function init_featureInfo1(ind){
 		mod_featureInfo_mapObj = getMapObjByName(mod_featureInfo_target);
-	
 		mb_button[ind] = document.getElementById(mod_featureInfo_elName);
 		mb_button[ind].img_over = mod_featureInfo_img_over.src;
 		mb_button[ind].img_on = mod_featureInfo_img_on.src;
@@ -164,18 +162,32 @@
 		if (featureInfoLayerPreselect) {
 			$("#featureInfo_preselect").remove();
 			//build list of possible featureInfo requests
-			urls = mod_featureInfo_mapObj.getFeatureInfoRequestsForLayers(point, ignoreWms);
+			urls = mod_featureInfo_mapObj.getFeatureInfoRequestsForLayers(point, ignoreWms, Mapbender.modules[options.target].getSRS(), realWorldPoint);
 			if (urls.length == 0 || typeof urls.length =='undefined') {
 				alert("<?php echo _mb("Please enable some layer to be requestable");?>!");
 				return false;
 			}
 			featureInfoList = "<table border='1'>";
-			for(var i=0;i<urls.length;i++){
-				if (urls[i].legendurl !== "empty" ) {
-					featureInfoList += "<tr><td><a href='"+urls[i].request+"' target='_blank'>"+urls[i].title+"</a></td><td><img src='"+urls[i].legendurl+"' alt='<?php echo _mb("No legend available");?>!'/></td></tr>";
-				} else {
-					featureInfoList += "<tr><td><a href='"+urls[i].request+"' target='_blank'>"+urls[i].title+"</a></td><td><img src='' alt='<?php echo _mb("No legend available");?>!'/></td></tr>";
+			if (reverseInfo == "true") {
+				for(var i=0;i<urls.length;i++){
+					if (urls[i].inBbox) {
+						if (urls[i].legendurl !== "empty" ) {
+							featureInfoList += "<tr><td><a style='text-decoration:  underline' href='"+urls[i].request+"' target='_blank'>"+urls[i].title+"</a></td><td><img src='"+urls[i].legendurl+"' alt='<?php echo _mb("No legend available");?>!'/></td></tr>";
+						} else {
+							featureInfoList += "<tr><td><a style='text-decoration:  underline' href='"+urls[i].request+"' target='_blank'>"+urls[i].title+"</a></td><td><img src='' alt='<?php echo _mb("No legend available");?>!'/></td></tr>";
+						}
+					}
 				}
+			} else {
+				for(var i=urls.length-1; i>=0; i--){
+					if (urls[i].inBbox) {
+						if (urls[i].legendurl !== "empty" ) {
+							featureInfoList += "<tr><td><a style='text-decoration:  underline' href='"+urls[i].request+"' target='_blank'>"+urls[i].title+"</a></td><td><img src='"+urls[i].legendurl+"' alt='<?php echo _mb("No legend available");?>!'/></td></tr>";
+						} else {
+							featureInfoList += "<tr><td><a style='text-decoration:  underline' href='"+urls[i].request+"' target='_blank'>"+urls[i].title+"</a></td><td><img src='' alt='<?php echo _mb("No legend available");?>!'/></td></tr>";
+						}
+					}
+				}
 			}
 			featureInfoList += "</table>";
 			$("<div id='featureInfo_preselect'></div>").dialog({
@@ -203,7 +215,9 @@
 					//TODO: also rewind the LAYERS parameter for a single WMS FeatureInfo REQUEST if needed?
 					var cnt = i;
 					if (reverseInfo == 'true') {
-						urls[i] = changeURLValueOrder(urls[i], 'LAYERS');
+						if (typof(urls[i]) !== "undefined") {
+							urls[i] = changeURLValueOrder(urls[i], 'LAYERS');
+						}
 					}
 					if(featureInfoPopupPosition.length == 2 && !isNaN(featureInfoPopupPosition[0]) && !isNaN(featureInfoPopupPosition[1])) {
 						var dialogPosition = [];



More information about the Mapbender_commits mailing list