GetFeatureInfo.js
	
	
Summary
	
		No overview generated for 'GetFeatureInfo.js'
	
    
    
 
        
mapbuilder.loadScript(baseDir+"/widget/ButtonBase.js");
function GetFeatureInfo(widgetNode, model) {
  ButtonBase.apply(this, new Array(widgetNode, model));
  
  this.xsl=new XslProcessor(baseDir+"/tool/GetFeatureInfo.xsl");
  
  
  var infoFormat = widgetNode.selectSingleNode("mb:infoFormat");
  this.infoFormat = infoFormat ? infoFormat.firstChild.nodeValue : "application/vnd.ogc.gml";
  this.featureCount = 1;
  var featureCount = widgetNode.selectSingleNode("mb:featureCount");
  if (featureCount) this.featureCount = featureCount.firstChild.nodeValue;
  this.cursor = "pointer"; 
  
  this.createControl = function(objRef) {
    var Control = OpenLayers.Class( OpenLayers.Control, {
      CLASS_NAME: 'mbControl.GetFeatureInfo',
      type: OpenLayers.Control.TYPE_TOOL,
      objRef: objRef,
      draw: function() {
        this.handler = new OpenLayers.Handler.Box( this,
          {done: this.zoomBox}, {keyMask: this.keyMask} );
      },
      zoomBox: function(position) {
        var objRef = this.objRef
        if (objRef.enabled) {
          var x,y;
          if (position instanceof OpenLayers.Bounds) {
            x = position.left + (position.right - position.left) / 2;
            y = position.top + (position.bottom - position.top) / 2;
          } else {
            x = position.x;
            y = position.y;
          }
          objRef.targetModel.deleteTemplates();
          var selectedLayer=objRef.targetContext.getParam("selectedLayer");
          if (selectedLayer==null) {
            var queryList=objRef.targetContext.getQueryableLayers();
          	if (queryList.length==0) {
               alert(mbGetMessage("noQueryableLayers"));
               return;
          	}
            else {
              for (var i=0; i<queryList.length; ++i) {
                var layerNode=queryList[i];
                var layerName=layerNode.firstChild.data;
                var hidden = objRef.targetContext.getHidden(layerName);
                if (hidden == 0) { //query only visible layers
                  objRef.xsl.setParameter("queryLayer", layerName);
                  objRef.xsl.setParameter("layer",layerName);
    				      objRef.xsl.setParameter("xCoord", x);
                  objRef.xsl.setParameter("yCoord", y);
                  objRef.xsl.setParameter("infoFormat", objRef.infoFormat);
                  objRef.xsl.setParameter("featureCount", objRef.featureCount);
    
                  urlNode=objRef.xsl.transformNodeToObject(objRef.targetContext.doc);
                  url=urlNode.documentElement.firstChild.nodeValue;
                  httpPayload = new Object();
      	          httpPayload.url = url;
                  httpPayload.method="get";
                  httpPayload.postData=null;
                  objRef.targetModel.newRequest(objRef.targetModel,httpPayload);
                }
              }
            }
          }
          else {
            objRef.xsl.setParameter("queryLayer", selectedLayer);
            objRef.xsl.setParameter("layer",layerName);
            objRef.xsl.setParameter("xCoord", targetNode.x);
            objRef.xsl.setParameter("yCoord", targetNode.y);
            objRef.xsl.setParameter("infoFormat", objRef.infoFormat);
            objRef.xsl.setParameter("featureCount", "1");
  
            var urlNode=objRef.xsl.transformNodeToObject(objRef.targetContext.doc);
            var url=urlNode.documentElement.firstChild.nodeValue;
  
            if (objRef.infoFormat=="text/html"){
              window.open(url,'queryWin','height=200,width=300,scrollbars=yes');
            } else {
              var httpPayload = new Object();
              httpPayload.url = url;
              httpPayload.method="get";
              httpPayload.postData=null;
              objRef.targetModel.newRequest(objRef.targetModel,httpPayload);
            }
          }
        }
      }
    });
    return Control;
  }
}
	
Documentation generated by 
JSDoc on Tue Aug 21 08:12:28 2007