aimsIdentify.js
资源名称:arcims.rar [点击查看]
上传用户:gzuoyue
上传日期:2022-07-08
资源大小:177k
文件大小:28k
源码类别:
GIS编程
开发平台:
ASP/ASPX
- // aimsIdentify.js
- /*
- * JavaScript template file for ArcIMS HTML Viewer
- * dependent on aimsXML.js, ArcIMSparam.js, aimsCommon.js, aimsMap.js, and aimsLayers.js
- * To be interactive, dependent also on aimsDHTML.js, aimsClick.js, and aimsNavigation.js
- */
- aimsIdentifyPresent=true;
- // hyperlink variables
- var currentHyperLinkLayer="";
- var currentHyperLinkField="";
- var currentHyperLinkPrefix="";
- var currentHyperLinkSuffix="";
- var hyperlinkWindowWidth=500;
- var hyperlinkWindowHeight=400;
- // variable for search tolerance... dynamically set in app
- var searchTolerance=1/100;
- // starting record position for returned records
- var queryStartRecord=1;
- if (imsQueryURL=="") {
- imsQueryURL= imsURL + "&CustomService=Query";
- //alert(imsQueryURL);
- }
- var canQuery=true;
- var newSelectCount=0;
- var selectPoints = new Array();
- // can features be selected if invisible or not within layer scale threshholds?
- var canSelectInvisible=false;
- /*
- ***************************************************************************************
- Identify functions
- ***************************************************************************************
- */
- // identify feature
- function identify(e) {
- if (checkIfActiveLayerAvailable()) {
- highlightedOne="";
- var theX = mouseX;
- var theY = mouseY;
- getMapXY(theX,theY);
- searchTolerance = (xDistance/iWidth) * pixelTolerance;
- var tempWest = mapX - searchTolerance;
- var tempNorth = mapY + searchTolerance;
- var tempEast = mapX + searchTolerance;
- var tempSouth = mapY - searchTolerance;
- queryStartRecord=1;
- selectEnvelope='maxy="' + forceComma(tempNorth) + '" maxx="' + forceComma(tempEast) + '" miny="' + forceComma(tempSouth) + '" minx="' + forceComma(tempWest) + '"';
- selectionMode=2;
- var theString = writeGetFeatures(tempWest,tempSouth,tempEast,tempNorth);
- showRetrieveData();
- sendToServer(imsQueryURL,theString,identifyXMLMode);
- }
- }
- // hyperlink from feature in active layer
- function hyperLink(e) {
- if (checkIfActiveLayerAvailable()) {
- if (currentHyperLinkLayer!="") {
- highlightedOne="";
- var theX = mouseX;
- var theY = mouseY;
- getMapXY(theX,theY);
- searchTolerance = (xDistance/iWidth) * pixelTolerance;
- var tempWest = mapX - searchTolerance;
- var tempNorth = mapY + searchTolerance;
- var tempEast = mapX + searchTolerance;
- var tempSouth = mapY - searchTolerance;
- var tempSwap = swapSelectFields;
- swapSelectFields=false;
- var tempSelect = selectFields;
- selectFields = LayerIDField[ActiveLayerIndex] + " " + LayerShapeField[ActiveLayerIndex] + " " + currentHyperLinkField;
- var theString = writeGetFeatures(tempWest,tempSouth,tempEast,tempNorth);
- selectFields = tempSelect;
- swapSelectFields=tempSwap;
- showRetrieveData();
- sendToServer(imsQueryURL,theString,hyperlinkXMLMode);
- } else {
- alert(msgList[47]);
- }
- }
- }
- // write out XML request to identify features
- function writeGetFeatures(west1,south1,east1,north1) {
- if (swapSelectFields) {
- selectFields=selFieldList[ActiveLayerIndex];
- }
- var useString = writeIdentifyXML(ActiveLayer,ActiveLayerType,selectFields,west1,south1,east1,north1,maxFeaturesReturned,useLimitExtent);
- hightlightedOne="";
- return useString;
- }
- function writeIdentifyXML(theLayer,theLayerType,theFields,leftX,bottomY,rightX,topY,maxReturned,hasLimit) {
- var theString = '<ARCXML version="1.1">n<REQUEST>n<GET_FEATURES outputmode="xml" envelope="false" checkesc ="true" geometry="false" featurelimit="' + maxReturned + '">n';
- //CustomLayer===================================================
- if (mCustomLayer.getActiveLayer()>-1){
- theString += mCustomLayer.getActiveLayerString();
- }else{
- theString += '<LAYER id="' + theLayer + '" />';
- }
- //CustomLayer===================================================
- theString += '<SPATIALQUERY subfields="' + theFields + '">';
- theString += '<SPATIALFILTER relation="area_intersection" >';
- theString += '<ENVELOPE maxy="' + forceComma(topY) + '" maxx="' + forceComma(rightX) + '" miny="' + forceComma(bottomY) + '" minx="' + forceComma(leftX) + '" />';
- theString += '</SPATIALFILTER>';
- theString += '</SPATIALQUERY>';
- if (hasLimit) {
- // keep this within the limitExtent
- theString += '<SPATIALFILTER relation="area_intersection">n';
- theString += '<ENVELOPE maxx="' + forceComma(limitRight) + '" maxy="' + forceComma(limitTop) + '" minx="' + forceComma(limitLeft) + '" miny="' + forceComma(limitBottom) + '" />n';
- theString += '</SPATIALFILTER>n';
- }
- theString += '</GET_FEATURES>';
- theString += '</REQUEST>';
- theString += '</ARCXML>';
- return theString;
- }
- // parse XML response for selected features
- function displayAttributeData(theReply) {
- var docObject = parent.MapFrame;
- var docName = "parent.MapFrame";
- if (!useTextFrame) docName = "opener.parent.MapFrame";
- var Win1;
- setLayerFields(ActiveLayerIndex);
- var str = '<html><meta http-equiv="Content-Type" content="text/html; charset=' + docObject.charSet + '"><head><title>' + docObject.titleList[7] + '</title></head>';
- str += '<body bgcolor="' + docObject.textFrameBackColor + '" text="' + docObject.textFrameTextColor + '" link="' + docObject.textFrameLinkColor + '" vlink="' + docObject.textFrameFormColor + '" LEFTMARGIN=0 onload="window.focus()" onunload="' + docName + '.focusOnData=false">';
- str += writeOutDataPage(theReply,ActiveLayerIndex,docObject,docName,Win1);
- str += '</body></html>';
- if (useTextFrame) {
- Win1 = parent.TextFrame;
- Win1.document.open();
- } else {
- Win1 = open("","DataWindow","width=575,height=250,scrollbars=yes,resizable=yes");
- extWin = Win1;
- focusOnData = true;
- }
- Win1.document.writeln(str);
- Win1.document.close();
- hideRetrieveData();
- }
- function parseHyperLink(theReply) {
- //alert(theReply);
- var fList="";
- var lpos1 = 1;
- var lpos2 = 1;
- var pos = 0;
- var startpos = 0;
- var endpos = 0;
- var fString = theReply.substring(startpos,endpos);
- var featureCount = justGetFeatureCount(theReply);
- var linkString = "width=" + hyperlinkWindowWidth + ",height=" + hyperlinkWindowHeight + ",scrollbars=yes,resizable=yes"
- var selectedData="";
- var fCount = featureCount;
- //alert("displayAttributeData()[featurecount=" + featureCount + "]");
- selectCount = 0;
- var tempString="";
- if (featureCount > 0) {
- var searchStr = currentHyperLinkField + "=";
- newSelectCount += 1;
- endpos = 1;
- pos = theReply.indexOf(searchStr,1);
- startpos = pos + searchStr.length + 1;
- endpos =theReply.indexOf(dQuote,startpos);
- inData = theReply.substring(startpos,endpos);
- if ((inData!=null) && (inData!="") & (inData!=" ")) {
- var theLinkURL = currentHyperLinkPrefix + inData + currentHyperLinkSuffix;
- if (parent.TextFrame!=null) {
- parent.TextFrame.document.open();
- parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
- parent.TextFrame.document.writeln(' <title>' + titleList[9] + 's</title>');
- parent.TextFrame.document.writeln('</head>');
- parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
- parent.TextFrame.document.writeln('<FONT FACE="Arial"><B>' + LayerName[ActiveLayerIndex] +'</B></font><FONT FACE="Arial" size="-2">');
- parent.TextFrame.document.writeln('<br>' + msgList[67] + theLinkURL );
- parent.TextFrame.document.writeln('</FONT>');
- parent.TextFrame.document.writeln('</body></html>');
- parent.TextFrame.document.close();
- }
- var Win1=open(theLinkURL,"",linkString);
- } else {
- //alert(tempString);
- if (parent.TextFrame!=null) {
- parent.TextFrame.document.open();
- parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
- parent.TextFrame.document.writeln(' <title>' + titleList[9] + '</title>');
- parent.TextFrame.document.writeln('</head>');
- parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
- parent.TextFrame.document.writeln('<FONT FACE="Arial"><B>' + LayerName[ActiveLayerIndex] +'</B></font><FONT FACE="Arial" size="-2">');
- parent.TextFrame.document.writeln('<br>' + msgList[116]);
- if (debugOn>0) {
- parent.TextFrame.document.writeln('<p>' + msgList[65] + '<br>');
- parent.TextFrame.document.writeln(untag(theReply));
- }
- parent.TextFrame.document.writeln('</FONT>');
- parent.TextFrame.document.writeln('</body></html>');
- parent.TextFrame.document.close();
- } else {
- var msg = msgList[116];
- if (debugOn>0) {
- msg = msg + msgList[9] + theReply;
- }
- alert(msg);
- }
- }
- } else {
- //alert(tempString);
- if (parent.TextFrame!=null) {
- parent.TextFrame.document.open();
- parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
- parent.TextFrame.document.writeln(' <title>' + titleList[9] + '</title>');
- parent.TextFrame.document.writeln('</head>');
- parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
- parent.TextFrame.document.writeln('<FONT FACE="Arial"><B>' + LayerName[ActiveLayerIndex] +'</B></font><FONT FACE="Arial" size="-2">');
- parent.TextFrame.document.writeln('<br>' + msgList[116]);
- if (debugOn>0) {
- parent.TextFrame.document.writeln('<p>' + msgList[65] + '<br>');
- parent.TextFrame.document.writeln(untag(theReply));
- }
- parent.TextFrame.document.writeln('</FONT>');
- parent.TextFrame.document.writeln('</body></html>');
- parent.TextFrame.document.close();
- } else {
- var msg = msgList[116];
- if (debugOn>0) {
- msg = msg + msgList[9] + theReply;
- }
- alert(msg);
- }
- }
- hideRetrieveData();
- }
- // are there any selected features?
- function checkSelected() {
- var isOk = false;
- if (selectCount>0) isOk = true;
- return isOk;
- }
- function checkHyperLinkLayer(layerIndex) {
- var canLink = false;
- //alert(hyperLinkLayers.length);
- for (var i=0; i<hyperLinkLayers.length; i++) {
- if (LayerName[layerIndex]==hyperLinkLayers[i]) {
- canLink=true;
- currentHyperLinkLayer=LayerName[layerIndex];
- currentHyperLinkField=hyperLinkFields[i];
- currentHyperLinkPrefix=hyperLinkPrefix[i];
- currentHyperLinkSuffix=hyperLinkSuffix[i];
- }
- }
- return canLink;
- }
- // check to see if active layer is in scale threshold and visible
- // so it can be used for querying
- function checkIfActiveLayerAvailable() {
- // is the override flag set?
- if (canSelectInvisible) {
- return true;
- } else {
- // is the current scale within the scale min and max?
- if ((mapScaleFactor>=LayerMinScale[ActiveLayerIndex]) && (mapScaleFactor<=LayerMaxScale[ActiveLayerIndex])) {
- // is the active layer visible?
- if (LayerVisible[ActiveLayerIndex]==1) {
- return true;
- } else {
- var msg = msgList[104] + LayerName[ActiveLayerIndex] + msgList[102] + LayerName[ActiveLayerIndex] + msgList[108];
- alert(msg);
- return false;
- }
- } else {
- var msg = msgList[104] + LayerName[ActiveLayerIndex] + msgList[101];
- //if ((!listAllLayers) && (hasTOC)) msg += msgList[103];
- alert(msg);
- return false;
- }
- }
- }
- /**************************************************************
- * functions and variables for Identify All
- * drill down through visible layers
- **************************************************************/
- var replyArray = new Array();
- var fID = 0;
- var fIndex = 0;
- var idEast;
- var idWest;
- var idSouth;
- var idNorth;
- // identify feature
- function identifyAll(e) {
- fID = 0;
- highlightedOne="";
- var theX = mouseX;
- var theY = mouseY;
- getMapXY(theX,theY);
- searchTolerance = (xDistance/iWidth) * pixelTolerance;
- var tempWest = mapX - searchTolerance;
- var tempNorth = mapY + searchTolerance;
- var tempEast = mapX + searchTolerance;
- var tempSouth = mapY - searchTolerance;
- idSouth = tempSouth;
- idNorth = tempNorth;
- idWest = tempWest;
- idEast = tempEast;
- replyArray.length=0;
- var j =-1;
- for (var i=(LayerID.length-1);i>=0;i--) {
- replyArray[i]="";
- if ((mapScaleFactor>=LayerMinScale[i]) && (mapScaleFactor<=LayerMaxScale[i]) && (LayerVisible[i]) && (LayerIsFeature[i])) j = i;
- }
- if (j>-1) {
- fID=j;
- var theString = writeGetFeaturesDrill(tempWest,tempSouth,tempEast,tempNorth,fID);
- showRetrieveData();
- sendToServer(imsQueryURL,theString,10);
- } else {
- alert(msgList[111]);
- }
- }
- function doIdentifyAll(theReply) {
- //drill tool loop sequence
- //alert(theReply);
- replyArray[fID] = theReply;
- fID++;
- if (fID < (LayerID.length)) {
- if ((mapScaleFactor>=LayerMinScale[fID]) && (mapScaleFactor<=LayerMaxScale[fID]) && (LayerVisible[fID]) && (LayerIsFeature[fID])) {
- theString = writeGetFeaturesDrill(idWest,idSouth,idEast,idNorth,fID);
- //alert(theString);
- sendToServer(imsQueryURL,theString,10);
- } else {
- doIdentifyAll("");
- }
- }
- if (fID == (LayerID.length)) {
- displayAttributeDataforDrill(replyArray);
- fID = 0;
- }
- } //end doDrill()
- // write XML to identify features for drill ID
- function writeGetFeaturesDrill(west1,south1,east1,north1,thefID) {
- if (swapSelectFields) {
- selectFields=selFieldList[thefID];
- }
- var useString = writeIdentifyXML(LayerID[thefID],LayerType[thefID],selectFields,west1,south1,east1,north1,maxFeaturesReturned,useLimitExtent);
- hightlightedOne="";
- return useString;
- }
- // parse XML response for selected features
- function displayAttributeDataforDrill(theReplyArray) {
- var docObject = parent.MapFrame;
- var docName = docName = "parent.MapFrame";
- if (!useTextFrame) docName = "opener.parent.MapFrame";
- var str = '<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head><title>' + titleList[10] + '</title></head>n';
- str += '<body bgcolor="' + docObject.textFrameBackColor + '" text="Black" link="Blue" vlink="Gray" LEFTMARGIN=0 onload="window.focus()" onunload="' + docName + '.focusOnData=false">n';
- var lyrCount = 0;
- for (b=0;b<docObject.replyArray.length;b++) {
- if (docObject.replyArray[b]!="") {
- //alert(theReply);
- theReply = docObject.replyArray[b];
- docObject.setLayerFields(b);
- str += writeOutDataPage(theReply,b,docObject,docName,Win1);
- lyrCount++;
- }
- }
- if (lyrCount==0) {
- str += '<center><FONT FACE="Arial" SIZE="-1"><b>' + docObject.msgList[112] + '</b></font></center>n';
- }
- str += '</body></html>n';
- var Win1;
- if (useTextFrame) {
- Win1 = parent.TextFrame;
- Win1.document.open();
- } else {
- Win1 = open("","DataWindow","width=575,height=250,scrollbars=yes,resizable=yes");
- extWin = Win1;
- focusOnData = true;
- }
- Win1.document.writeln(str);
- Win1.document.close();
- hideRetrieveData();
- selectCount=0;
- }
- // checks if any layer has hyperlink at location and links to first one matching
- function hyperLinkAny(e) {
- if (hyperLinkLayers.length>0) {
- var j = -1;
- fIndex = 0;
- for (var i=layerCount-1;i>-1;i--) {
- if ((mapScaleFactor>=LayerMinScale[i]) && (mapScaleFactor<=LayerMaxScale[i]) && (LayerVisible[i]==1)) {
- fIindex = -1;
- for (var k = hyperLinkLayers.length-1;k>-1;k--) {
- if (hyperLinkLayers[k]==LayerName[i]) {
- fIndex = k;
- j = i;
- }
- }
- }
- }
- if (j>-1) {
- fID = j;
- highlightedOne="";
- var theX = mouseX;
- var theY = mouseY;
- getMapXY(theX,theY);
- searchTolerance = (xDistance/iWidth) * pixelTolerance;
- var west1 = mapX - searchTolerance;
- var north1 = mapY + searchTolerance;
- var east1 = mapX + searchTolerance;
- var south1 = mapY - searchTolerance;
- idSouth = south1;
- idNorth = north1;
- idWest = west1;
- idEast = east1;
- var tempSwap = swapSelectFields;
- swapSelectFields=false;
- var tempSelect = selectFields;
- selectFields = LayerIDField[fID] + " " + LayerShapeField[fID] + " " + hyperLinkFields[fIndex];
- var theString = writeIdentifyXML(LayerID[fID],LayerType[fID],selectFields,west1,south1,east1,north1,maxFeaturesReturned,useLimitExtent);
- selectFields = tempSelect;
- swapSelectFields=tempSwap;
- showRetrieveData();
- //if (useTextFrame) parent.TextFrame.document.location = "text.htm";
- sendToServer(imsQueryURL,theString,16);
- } else {
- alert(msgList[114]);
- }
- } else {
- alert(msgList[115]);
- }
- }
- function parseHyperLinkAny(theReply) {
- //alert(theReply);
- var fList="";
- var lpos1 = 1;
- var lpos2 = 1;
- var pos = 0;
- var startpos = 0;
- var endpos = 0;
- var fString = theReply.substring(startpos,endpos);
- var featureCount = justGetFeatureCount(theReply);
- var linkString = "width=" + hyperlinkWindowWidth + ",height=" + hyperlinkWindowHeight + ",scrollbars=yes,resizable=yes"
- var selectedData="";
- var fCount = featureCount;
- //alert("displayAttributeData()[featurecount=" + featureCount + "]");
- selectCount = 0;
- var tempString="";
- inData = "";
- if (featureCount > 0) {
- var searchStr = hyperLinkFields[fIndex] + "=";
- newSelectCount += 1;
- endpos = 1;
- pos = theReply.indexOf(searchStr,1);
- startpos = pos + searchStr.length + 1;
- endpos =theReply.indexOf(dQuote,startpos);
- inData = theReply.substring(startpos,endpos);
- }
- if ((featureCount > 0) && (inData!=null) && (inData!="") & (inData!=" ")) {
- var theLinkURL = hyperLinkPrefix[fIndex] + inData + hyperLinkSuffix[fIndex];
- if (parent.TextFrame!=null) {
- parent.TextFrame.document.open();
- parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
- parent.TextFrame.document.writeln(' <title>' + titleList[9] + 's</title>');
- parent.TextFrame.document.writeln('</head>');
- parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
- parent.TextFrame.document.writeln('<FONT FACE="Arial"><B>' + LayerName[fID] +'</B></font><FONT FACE="Arial" size="-2">');
- parent.TextFrame.document.writeln('<br>' + msgList[67] + theLinkURL );
- parent.TextFrame.document.writeln('</FONT>');
- parent.TextFrame.document.writeln('</body></html>');
- parent.TextFrame.document.close();
- }
- var Win1=open(theLinkURL,"",linkString);
- } else if (fID<layerCount) {
- fID++;
- var j = -1;
- if ((mapScaleFactor>=LayerMinScale[fID]) && (mapScaleFactor<=LayerMaxScale[fID]) && (LayerVisible[fID]==1)) {
- fIindex = -1;
- for (var k = hyperLinkLayers.length-1;k>-1;k--) {
- if (hyperLinkLayers[k]==LayerName[fID]) {
- fIndex = k;
- j = fID;
- }
- }
- }
- if (j>-1) {
- var tempSwap = swapSelectFields;
- swapSelectFields=false;
- var tempSelect = selectFields;
- selectFields = LayerIDField[fID] + " " + LayerShapeField[fID] + " " + hyperLinkFields[fIndex];
- var theString = writeIdentifyXML(LayerID[fID],LayerType[fID],selectFields,idWest,idSouth,idEast,idNorth,maxFeaturesReturned,useLimitExtent);
- selectFields = tempSelect;
- swapSelectFields=tempSwap;
- showRetrieveData();
- //if (useTextFrame) parent.TextFrame.document.location = "text.htm";
- sendToServer(imsQueryURL,theString,16);
- } else {
- parseHyperLinkAny("");
- }
- } else {
- //alert(tempString);
- if (parent.TextFrame!=null) {
- parent.TextFrame.document.open();
- parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
- parent.TextFrame.document.writeln(' <title>' + titleList[9] + '</title>');
- parent.TextFrame.document.writeln('</head>');
- parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
- parent.TextFrame.document.writeln('<FONT FACE="Arial" size="-1">');
- parent.TextFrame.document.writeln('<br>' + msgList[116]);
- parent.TextFrame.document.writeln('</FONT>');
- parent.TextFrame.document.writeln('</body></html>');
- parent.TextFrame.document.close();
- } else {
- var msg = msgList[116];
- if (debugOn>0) {
- msg = msg + msgList[9] + theReply;
- }
- alert(msg);
- }
- }
- hideRetrieveData();
- }
- function writeOutDataPage(theReply,layerIndex,docObject,docName,pageObject) {
- //var theReply = docObject.lastXMLResponse;
- var theError = docObject.getXMLErrorMessage(theReply);
- var fList="";
- var lpos1 = 1;
- var lpos2 = 1;
- var epos = 1;
- var spos = 1;
- var morePoints=true;
- var moreFeatures=true;
- var featureCount = justGetFeatureCount(theReply);
- var pos = 0;
- var startpos = 0;
- var endpos = xmlEndPos;
- var stillMore = false
- pos = theReply.indexOf('hasmore="true"',endpos);
- if (pos!=-1) stillMore = true;
- pos=0;
- var tempCount = 0;
- var selectedData="";
- var inData="";
- var xStr="";
- var yStr="";
- var tempString = "";
- var fCount = featureCount;
- //alert("displayAttributeData()[featurecount=" + featureCount + "]");
- selectCount = 0;
- var tempString="";
- var theFrame = docName;
- var dataString = "";
- if (featureCount > 0) {
- newSelectCount += 1;
- var fontSize = isIE ? "xx-small" : "x-small";
- dataString += '<center>n';
- dataString += '<FONT FACE="Arial" SIZE="-1"><b>' + LayerName[layerIndex] + '</b></FONT>n';
- dataString += '<table border="1" cellspacing="0" cellpadding="2" style="color: ' + textFrameTextColor + '; background-color: ' + tableBackColor + '; font-size: ' + fontSize + '; font-family: sans-serif;" nowrap="">n';
- endpos = 1;
- for (var i=0;i<fCount;i++) {
- //alert(endpos);
- var envExists = true;
- if ((toolMode!=4) && (toolMode!=25) && (toolMode!=5)) {
- var endFeature = theReply.indexOf(endpos,"</FEATURE>");
- envExists = isThereEnvelope(theReply, endpos, endFeature);
- //alert("Envelope ="+ envExists);
- if (envExists){
- var theXYs = getEnvelopeXYs(theReply, endpos)
- docObject.selectLeft[selectCount] = theXYs[0];
- docObject.selectBottom[selectCount] = theXYs[1];
- docObject.selectRight[selectCount] = theXYs[2];
- docObject.selectTop[selectCount] = theXYs[3];
- }
- }
- //alert(endpos);
- inData = parseRecordString(theReply, endpos);
- endpos = xmlEndPos;
- selectedData = inData;
- epos = theReply.indexOf("</FEATURE",endpos);
- //alert("2n" + selectedData);
- var showHyper = false;
- if (hyperLinkLayers!=null) {
- var lyrIndex = layerIndex;
- for (var s1=0;s1<hyperLinkLayers.length;s1++) {
- if (hyperLinkLayers[s1] == LayerName[layerIndex]) showHyper=true;
- }
- }
- var fName1 = getFieldNames(selectedData);
- var fValue1 = getFieldValues(selectedData);
- selectPoints[selectCount] = docObject.getIdValue(fName1, fValue1);
- var idFieldNum = -1;
- var shapeFieldNum = -1;
- if (hideIDFieldData) {
- // hide ID column header
- for (var f=0;f<fName1.length;f++) {
- if (fName1[f]==LayerIDField[layerIndex]) idFieldNum = f;
- }
- }
- if (hideShapeFieldData) {
- // hide Shape column header
- for (var f=0;f<fName1.length;f++) {
- if (fName1[f]==LayerShapeField[layerIndex]) shapeFieldNum = f;
- }
- }
- if (selectCount==0) {
- dataString += '<tr><th>' + msgList[86] + '</a></th>';
- for (var f=0;f<fName1.length;f++) {
- if ((f!=idFieldNum) && (f!=shapeFieldNum)) {
- var f2 = -1;
- if (useFieldAlias) {
- for (var f3=0;f3<AliasFieldName.length;f3++) {
- if (AliasFieldName[f3]==fName1[f]) f2 = f3;
- }
- }
- if (f2!=-1) {
- dataString += '<th>' + AliasFieldAlias[f2] + '</a></th>';
- } else {
- dataString += '<th>' + fName1[f] + '</a></th>';
- }
- }
- }
- dataString += '</tr>n';
- }
- dataString += '<tr><td>';
- var recNum = selectCount+queryStartRecord;
- if ((toolMode!=4) && (toolMode!=5) && (toolMode!=25) && (envExists) ) dataString += '<a href="javascript:' + docName + '.showHighlight(' + selectCount + ')">';
- dataString += '' + (recNum);
- if ((toolMode!=4) && (toolMode!=5) && (toolMode!=25) && (envExists) ) dataString += '</a>';
- dataString += '</td>n';
- for (var f=0;f<fName1.length;f++) {
- if ((f!=idFieldNum) && (f!=shapeFieldNum)) {
- dataString += '<TD>';
- var isHyper=false;
- if (showHyper) {
- for (var s1=0;s1<hyperLinkFields.length;s1++) {
- if(LayerName[layerIndex]==hyperLinkLayers[s1]){
- if (hyperLinkFields[s1]==fName1[f]) {
- if ((fValue1[f]!="") && (fValue1[f]!=" ")) {
- var theLinkURL = hyperLinkPrefix[s1] + fValue1[f] + hyperLinkSuffix[s1];
- dataString += '<a href="' + theLinkURL + '" target="_blank">';
- isHyper=true;
- break;
- }
- }
- }
- }
- }
- var s2 = -1;
- for (var s1=0;s1<LayerFields.length;s1++) {
- if (fName1[f]==LayerFields[s1]) s2=s1;
- }
- if (LayerFieldType[s2]=="91") {
- //alert(fName1[f]);
- if (isNaN(fValue1[f])) {
- var theDate = fValue1[f];
- } else {
- var theDateObj = new Date(parseFloat(fValue1[f]));
- var d = theDateObj.toUTCString();
- var theDate = d.replace(/GMT|UTC/,"");
- }
- dataString += theDate;
- theDate=null;
- } else {
- // put html entity for spaces so display is correct - browsers trim extra spaces
- tempString = fValue1[f].replace(/ /g, " ");
- // replace ' with '
- tempString = tempString.replace(/'/g, "'");
- dataString += tempString;
- }
- if (isHyper) dataString += '</a>';
- dataString += '</td>n';
- }
- }
- dataString += '</tr>n';
- fName1 = null;
- fValue1 = null;
- selectCount += 1;
- }
- dataString += '</table>n<FONT FACE="Arial" SIZE="-2">n';
- var getMoreData = "getMoreData";
- if (toolMode==25) getMoreData = "getMoreBufferData";
- if (queryStartRecord>1) {
- var prevRecord = queryStartRecord - maxFeaturesReturned;
- if (prevRecord<1) prevRecord=1;
- //if ((toolMode==25) && (prevRecord==1)) prevRecord = 0;
- dataString += '<a href="javascript:' + docName + '.' + getMoreData + '(' + prevRecord + ')">' + msgList[61] + maxFeaturesReturned + msgList[62] + '</a> n';
- }
- if (stillMore) {
- var nextRecord=featureCount + queryStartRecord;
- dataString += '<a href="javascript:' + docName + '.' + getMoreData + '(' + nextRecord + ')">' + msgList[63] + '</a>n';
- }
- if ((toolMode!=4) && (toolMode!=25) && (toolMode!=5) && (selectCount>1)) {
- dataString += ' <b><a href="javascript:' + docName + '.zoomToReturnedRecords()">Zoom to these records</A></b>n';
- }
- dataString += '</font></center>n';
- if ((queryStartRecord==1) && (toolMode!=4) && (toolMode!=25) && (toolMode!=5) && (toolMode!=9)) {
- if ((selectCount==1) && (zoomToSingleSelect)) {
- var fWidth = selectRight[0] - selectLeft[0];
- var fHeight = selectTop[0] - selectBottom[0];
- var mWMargin = 0;
- var mHMargin = 0;
- if (selectType=="point") {
- mWMargin = fullWidth * selectPointMargin;
- mHMargin = fullHeight * selectPointMargin;
- if (mWMargin > xDistance/2) {
- mWMargin = xDistance/2;
- mHMargin = yDistance/2;
- }
- } else {
- mWMargin = fWidth * selectMargin;
- mHMargin = fHeight * selectMargin;
- }
- saveLastExtent();
- eLeft = selectLeft[0] - mWMargin;
- eRight = selectRight[0] + mWMargin;
- eTop = selectTop[0] + mHMargin;
- eBottom = selectBottom[0] - mHMargin;
- }
- sendMapXML();
- }
- } else {
- dataString += '<center><FONT FACE="Arial" SIZE="-1"><B>' + LayerName[layerIndex] +'</B></font><FONT FACE="Arial" size="-2">n';
- dataString += '<br>' + msgList[64] + '<br>n';
- if (debugOn>0) {
- dataString += '<p>' + msgList[65] + '<br>n';
- dataString += untag(theReply);
- } else {
- if (theError!="") {
- dataString += '<p>' + msgList[66] + '<br>n';
- dataString += theError;
- }
- }
- dataString += '</FONT></center>n';
- }
- if (toolMode==4) selectCount=0;
- return dataString;
- }
- function isThereEnvelope(theString, startpos, endpos) {
- theString = theString.toUpperCase();
- var pos = theString.indexOf("<ENVELOPE",startpos,endpos);
- if (pos>-1) return true;
- else return false;
- }