[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