aimsIdentify.js
上传用户:gzuoyue
上传日期:2022-07-08
资源大小:177k
文件大小:28k
源码类别:

GIS编程

开发平台:

ASP/ASPX

  1. // aimsIdentify.js
  2. /*
  3. *  JavaScript template file for ArcIMS HTML Viewer
  4. * dependent on aimsXML.js, ArcIMSparam.js, aimsCommon.js, aimsMap.js, and aimsLayers.js
  5. * To be interactive, dependent also on aimsDHTML.js, aimsClick.js, and aimsNavigation.js
  6. */
  7. aimsIdentifyPresent=true;
  8. // hyperlink variables
  9. var currentHyperLinkLayer="";
  10. var currentHyperLinkField="";
  11. var currentHyperLinkPrefix="";
  12. var currentHyperLinkSuffix="";
  13. var hyperlinkWindowWidth=500;
  14. var hyperlinkWindowHeight=400;
  15. // variable for search tolerance... dynamically set in app
  16. var searchTolerance=1/100;
  17. // starting record position for returned records
  18. var queryStartRecord=1;
  19. if (imsQueryURL=="") {
  20. imsQueryURL= imsURL + "&CustomService=Query";
  21. //alert(imsQueryURL);
  22. }
  23. var canQuery=true;
  24. var newSelectCount=0;
  25. var selectPoints = new Array();
  26. // can features be selected if invisible or not within layer scale threshholds?
  27. var canSelectInvisible=false;
  28. /*
  29. ***************************************************************************************
  30. Identify functions 
  31. ***************************************************************************************
  32. */
  33. // identify feature
  34. function identify(e) {
  35. if (checkIfActiveLayerAvailable()) {
  36. highlightedOne="";
  37. var theX = mouseX;
  38. var theY = mouseY;
  39. getMapXY(theX,theY);
  40. searchTolerance = (xDistance/iWidth) * pixelTolerance;
  41. var tempWest = mapX - searchTolerance;
  42. var tempNorth = mapY + searchTolerance;
  43. var tempEast = mapX + searchTolerance;
  44. var tempSouth = mapY - searchTolerance;
  45. queryStartRecord=1;
  46. selectEnvelope='maxy="' + forceComma(tempNorth) + '" maxx="' + forceComma(tempEast) + '" miny="' + forceComma(tempSouth) + '" minx="' + forceComma(tempWest) + '"';
  47. selectionMode=2;
  48. var theString = writeGetFeatures(tempWest,tempSouth,tempEast,tempNorth);
  49. showRetrieveData();
  50. sendToServer(imsQueryURL,theString,identifyXMLMode);
  51. }
  52. }
  53. // hyperlink from feature in active layer
  54. function hyperLink(e) {
  55. if (checkIfActiveLayerAvailable()) {
  56. if (currentHyperLinkLayer!="") {
  57. highlightedOne="";
  58. var theX = mouseX;
  59. var theY = mouseY;
  60. getMapXY(theX,theY);
  61. searchTolerance = (xDistance/iWidth) * pixelTolerance;
  62. var tempWest = mapX - searchTolerance;
  63. var tempNorth = mapY + searchTolerance;
  64. var tempEast = mapX + searchTolerance;
  65. var tempSouth = mapY - searchTolerance;
  66. var tempSwap = swapSelectFields;
  67. swapSelectFields=false;
  68. var tempSelect = selectFields;
  69. selectFields = LayerIDField[ActiveLayerIndex] + " " + LayerShapeField[ActiveLayerIndex] + " " + currentHyperLinkField;
  70. var theString = writeGetFeatures(tempWest,tempSouth,tempEast,tempNorth);
  71. selectFields = tempSelect;
  72. swapSelectFields=tempSwap;
  73. showRetrieveData();
  74. sendToServer(imsQueryURL,theString,hyperlinkXMLMode);
  75. } else {
  76. alert(msgList[47]);
  77. }
  78. }
  79. }
  80. // write out XML request to identify features
  81. function writeGetFeatures(west1,south1,east1,north1) {
  82. if (swapSelectFields) {
  83. selectFields=selFieldList[ActiveLayerIndex];
  84. }
  85. var useString = writeIdentifyXML(ActiveLayer,ActiveLayerType,selectFields,west1,south1,east1,north1,maxFeaturesReturned,useLimitExtent);
  86. hightlightedOne="";
  87. return useString;
  88. }
  89. function writeIdentifyXML(theLayer,theLayerType,theFields,leftX,bottomY,rightX,topY,maxReturned,hasLimit) {
  90. var theString = '<ARCXML version="1.1">n<REQUEST>n<GET_FEATURES outputmode="xml" envelope="false" checkesc ="true" geometry="false" featurelimit="' + maxReturned + '">n';
  91. //CustomLayer===================================================
  92. if (mCustomLayer.getActiveLayer()>-1){
  93. theString += mCustomLayer.getActiveLayerString();
  94. }else{
  95. theString += '<LAYER id="' + theLayer + '" />';
  96. }
  97. //CustomLayer===================================================
  98. theString += '<SPATIALQUERY subfields="' + theFields + '">';
  99. theString += '<SPATIALFILTER relation="area_intersection" >';
  100. theString += '<ENVELOPE maxy="' + forceComma(topY) + '" maxx="' + forceComma(rightX) + '" miny="' + forceComma(bottomY) + '" minx="' + forceComma(leftX) + '" />';
  101. theString += '</SPATIALFILTER>';
  102. theString += '</SPATIALQUERY>';
  103. if (hasLimit) {
  104. // keep this within the limitExtent
  105. theString += '<SPATIALFILTER relation="area_intersection">n';
  106. theString += '<ENVELOPE maxx="' + forceComma(limitRight) + '" maxy="' + forceComma(limitTop) + '" minx="' + forceComma(limitLeft) + '" miny="' + forceComma(limitBottom) + '" />n';
  107. theString += '</SPATIALFILTER>n';
  108. }
  109. theString += '</GET_FEATURES>';
  110. theString += '</REQUEST>';
  111. theString += '</ARCXML>';
  112. return theString;
  113. }
  114. // parse XML response for selected features
  115. function displayAttributeData(theReply) {
  116. var docObject = parent.MapFrame;
  117. var docName = "parent.MapFrame";
  118. if (!useTextFrame) docName = "opener.parent.MapFrame";
  119. var Win1;
  120. setLayerFields(ActiveLayerIndex);
  121. var str = '<html><meta http-equiv="Content-Type" content="text/html; charset=' + docObject.charSet + '"><head><title>' + docObject.titleList[7] + '</title></head>';
  122. str += '<body bgcolor="' + docObject.textFrameBackColor + '" text="' + docObject.textFrameTextColor + '" link="' + docObject.textFrameLinkColor + '" vlink="' + docObject.textFrameFormColor + '" LEFTMARGIN=0 onload="window.focus()" onunload="' + docName + '.focusOnData=false">';
  123. str += writeOutDataPage(theReply,ActiveLayerIndex,docObject,docName,Win1);
  124. str += '</body></html>';
  125. if (useTextFrame) {
  126. Win1 = parent.TextFrame;
  127. Win1.document.open();
  128. } else {
  129. Win1 = open("","DataWindow","width=575,height=250,scrollbars=yes,resizable=yes");
  130. extWin = Win1;
  131. focusOnData = true;
  132. }
  133. Win1.document.writeln(str);
  134. Win1.document.close();
  135. hideRetrieveData();
  136. }
  137. function parseHyperLink(theReply) {
  138. //alert(theReply);
  139. var fList="";
  140. var lpos1 = 1;
  141. var lpos2 = 1;
  142. var pos = 0;
  143. var startpos = 0;
  144. var endpos = 0;
  145. var fString = theReply.substring(startpos,endpos);
  146. var featureCount = justGetFeatureCount(theReply);
  147. var linkString = "width=" + hyperlinkWindowWidth + ",height=" + hyperlinkWindowHeight + ",scrollbars=yes,resizable=yes"
  148. var selectedData="";
  149. var fCount = featureCount;
  150. //alert("displayAttributeData()[featurecount=" + featureCount + "]");
  151. selectCount = 0;
  152. var tempString="";
  153. if (featureCount > 0) {
  154. var searchStr = currentHyperLinkField + "=";
  155. newSelectCount += 1;
  156. endpos = 1;
  157. pos = theReply.indexOf(searchStr,1);
  158. startpos = pos + searchStr.length + 1;
  159. endpos =theReply.indexOf(dQuote,startpos);
  160. inData = theReply.substring(startpos,endpos);
  161. if ((inData!=null) && (inData!="") & (inData!="&nbsp;")) {
  162. var theLinkURL = currentHyperLinkPrefix + inData + currentHyperLinkSuffix;
  163. if (parent.TextFrame!=null) {
  164. parent.TextFrame.document.open();
  165. parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
  166. parent.TextFrame.document.writeln(' <title>' + titleList[9] + 's</title>');
  167. parent.TextFrame.document.writeln('</head>');
  168. parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
  169. parent.TextFrame.document.writeln('<FONT FACE="Arial"><B>' + LayerName[ActiveLayerIndex] +'</B></font><FONT FACE="Arial" size="-2">');
  170. parent.TextFrame.document.writeln('<br>' + msgList[67] + theLinkURL );
  171. parent.TextFrame.document.writeln('</FONT>');
  172. parent.TextFrame.document.writeln('</body></html>');
  173. parent.TextFrame.document.close();
  174. }
  175. var Win1=open(theLinkURL,"",linkString);
  176. } else {
  177. //alert(tempString);
  178. if (parent.TextFrame!=null) {
  179. parent.TextFrame.document.open();
  180. parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
  181. parent.TextFrame.document.writeln(' <title>' + titleList[9] + '</title>');
  182. parent.TextFrame.document.writeln('</head>');
  183. parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
  184. parent.TextFrame.document.writeln('<FONT FACE="Arial"><B>' + LayerName[ActiveLayerIndex] +'</B></font><FONT FACE="Arial" size="-2">');
  185. parent.TextFrame.document.writeln('<br>' + msgList[116]);
  186. if (debugOn>0) {
  187. parent.TextFrame.document.writeln('<p>' + msgList[65] + '<br>');
  188. parent.TextFrame.document.writeln(untag(theReply));
  189. }
  190. parent.TextFrame.document.writeln('</FONT>');
  191. parent.TextFrame.document.writeln('</body></html>');
  192. parent.TextFrame.document.close();
  193. } else {
  194. var msg = msgList[116];
  195. if (debugOn>0) {
  196. msg = msg + msgList[9] + theReply;
  197. }
  198. alert(msg);
  199. }
  200. }
  201. } else {
  202. //alert(tempString);
  203. if (parent.TextFrame!=null) {
  204. parent.TextFrame.document.open();
  205. parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
  206. parent.TextFrame.document.writeln(' <title>' + titleList[9] + '</title>');
  207. parent.TextFrame.document.writeln('</head>');
  208. parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
  209. parent.TextFrame.document.writeln('<FONT FACE="Arial"><B>' + LayerName[ActiveLayerIndex] +'</B></font><FONT FACE="Arial" size="-2">');
  210. parent.TextFrame.document.writeln('<br>' + msgList[116]);
  211. if (debugOn>0) {
  212. parent.TextFrame.document.writeln('<p>' + msgList[65] + '<br>');
  213. parent.TextFrame.document.writeln(untag(theReply));
  214. }
  215. parent.TextFrame.document.writeln('</FONT>');
  216. parent.TextFrame.document.writeln('</body></html>');
  217. parent.TextFrame.document.close();
  218. } else {
  219. var msg = msgList[116];
  220. if (debugOn>0) {
  221. msg = msg + msgList[9] + theReply;
  222. }
  223. alert(msg);
  224. }
  225. }
  226. hideRetrieveData();
  227. }
  228. // are there any selected features?
  229. function checkSelected() {
  230. var isOk = false;
  231. if (selectCount>0) isOk = true;
  232. return isOk;
  233. }
  234. function checkHyperLinkLayer(layerIndex) {
  235. var canLink = false;
  236. //alert(hyperLinkLayers.length);
  237. for (var i=0; i<hyperLinkLayers.length; i++) {
  238. if (LayerName[layerIndex]==hyperLinkLayers[i]) {
  239. canLink=true;
  240. currentHyperLinkLayer=LayerName[layerIndex];
  241. currentHyperLinkField=hyperLinkFields[i];
  242. currentHyperLinkPrefix=hyperLinkPrefix[i];
  243. currentHyperLinkSuffix=hyperLinkSuffix[i];
  244. }
  245. }
  246. return canLink;
  247. }
  248. // check to see if active layer is in scale threshold and visible 
  249. // so it can be used for querying
  250. function checkIfActiveLayerAvailable() {
  251. // is the override flag set?
  252. if (canSelectInvisible) {
  253. return true;
  254. } else {
  255. // is the current scale within the scale min and max?
  256. if ((mapScaleFactor>=LayerMinScale[ActiveLayerIndex]) && (mapScaleFactor<=LayerMaxScale[ActiveLayerIndex])) {
  257. // is the active layer visible?
  258. if (LayerVisible[ActiveLayerIndex]==1) {
  259. return true;
  260. } else {
  261. var msg = msgList[104] + LayerName[ActiveLayerIndex] + msgList[102] + LayerName[ActiveLayerIndex] + msgList[108];
  262. alert(msg);
  263. return false;
  264. }
  265. } else {
  266. var msg = msgList[104] + LayerName[ActiveLayerIndex] + msgList[101];
  267. //if ((!listAllLayers) && (hasTOC)) msg += msgList[103];
  268. alert(msg);
  269. return false;
  270. }
  271. }
  272. }
  273. /**************************************************************
  274. * functions and variables for Identify All
  275. * drill down through visible layers
  276. **************************************************************/
  277. var replyArray = new Array();
  278. var fID = 0;
  279. var fIndex = 0;
  280. var idEast;
  281. var idWest;
  282. var idSouth;
  283. var idNorth;
  284. // identify feature
  285. function identifyAll(e) {
  286. fID = 0;
  287. highlightedOne="";
  288. var theX = mouseX;
  289. var theY = mouseY;
  290. getMapXY(theX,theY);
  291. searchTolerance = (xDistance/iWidth) * pixelTolerance;
  292. var tempWest = mapX - searchTolerance;
  293. var tempNorth = mapY + searchTolerance;
  294. var tempEast = mapX + searchTolerance;
  295. var tempSouth = mapY - searchTolerance;
  296. idSouth = tempSouth;
  297. idNorth = tempNorth;
  298. idWest = tempWest;
  299. idEast = tempEast;
  300. replyArray.length=0;
  301. var j =-1;
  302. for (var i=(LayerID.length-1);i>=0;i--) {
  303. replyArray[i]="";
  304. if ((mapScaleFactor>=LayerMinScale[i]) && (mapScaleFactor<=LayerMaxScale[i]) && (LayerVisible[i]) && (LayerIsFeature[i])) j = i;
  305. }
  306. if (j>-1) {
  307. fID=j;
  308. var theString = writeGetFeaturesDrill(tempWest,tempSouth,tempEast,tempNorth,fID);
  309. showRetrieveData();
  310. sendToServer(imsQueryURL,theString,10);
  311. } else {
  312. alert(msgList[111]);
  313. }
  314. }
  315. function doIdentifyAll(theReply) {
  316.     //drill tool loop sequence
  317. //alert(theReply);
  318.    replyArray[fID] = theReply;
  319.    fID++;
  320.    if (fID < (LayerID.length)) {
  321.     if ((mapScaleFactor>=LayerMinScale[fID]) && (mapScaleFactor<=LayerMaxScale[fID]) && (LayerVisible[fID]) && (LayerIsFeature[fID])) {
  322.        theString = writeGetFeaturesDrill(idWest,idSouth,idEast,idNorth,fID);
  323. //alert(theString);
  324.    sendToServer(imsQueryURL,theString,10);
  325.     } else {
  326. doIdentifyAll("");
  327. }
  328.    }
  329.    
  330.    if (fID == (LayerID.length)) {
  331. displayAttributeDataforDrill(replyArray);
  332. fID = 0;
  333.    }
  334.  }  //end doDrill()
  335.  // write XML to identify features for drill ID
  336. function writeGetFeaturesDrill(west1,south1,east1,north1,thefID) {
  337. if (swapSelectFields) {
  338. selectFields=selFieldList[thefID];
  339. }
  340. var useString = writeIdentifyXML(LayerID[thefID],LayerType[thefID],selectFields,west1,south1,east1,north1,maxFeaturesReturned,useLimitExtent);
  341. hightlightedOne="";
  342. return useString;
  343. }
  344. // parse XML response for selected features
  345. function displayAttributeDataforDrill(theReplyArray) {
  346. var docObject = parent.MapFrame;
  347. var docName = docName = "parent.MapFrame";
  348. if (!useTextFrame) docName = "opener.parent.MapFrame";
  349. var str = '<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head><title>' + titleList[10] + '</title></head>n';
  350. str += '<body bgcolor="' + docObject.textFrameBackColor + '" text="Black" link="Blue" vlink="Gray" LEFTMARGIN=0 onload="window.focus()" onunload="' + docName + '.focusOnData=false">n';
  351. var lyrCount = 0;
  352. for (b=0;b<docObject.replyArray.length;b++) {
  353.   if (docObject.replyArray[b]!="") {
  354.     //alert(theReply);
  355. theReply = docObject.replyArray[b];
  356. docObject.setLayerFields(b);
  357. str += writeOutDataPage(theReply,b,docObject,docName,Win1);
  358. lyrCount++;
  359. }
  360. }
  361. if (lyrCount==0) {
  362.         str += '<center><FONT FACE="Arial" SIZE="-1"><b>' + docObject.msgList[112] + '</b></font></center>n';
  363. }
  364. str += '</body></html>n';
  365. var Win1;
  366. if (useTextFrame) {
  367. Win1 = parent.TextFrame;
  368. Win1.document.open();
  369. } else {
  370. Win1 = open("","DataWindow","width=575,height=250,scrollbars=yes,resizable=yes");
  371. extWin = Win1;
  372. focusOnData = true;
  373. }
  374. Win1.document.writeln(str);
  375. Win1.document.close();
  376. hideRetrieveData();
  377. selectCount=0;
  378. }
  379. // checks if any layer has hyperlink at location and links to first one matching
  380. function hyperLinkAny(e) {
  381. if (hyperLinkLayers.length>0) {
  382. var j = -1;
  383. fIndex = 0;
  384. for (var i=layerCount-1;i>-1;i--) {
  385. if ((mapScaleFactor>=LayerMinScale[i]) && (mapScaleFactor<=LayerMaxScale[i]) && (LayerVisible[i]==1)) {
  386. fIindex = -1;
  387. for (var k = hyperLinkLayers.length-1;k>-1;k--) {
  388. if (hyperLinkLayers[k]==LayerName[i]) {
  389. fIndex = k;
  390. j = i;
  391. }
  392. }
  393. }
  394. }
  395. if (j>-1) {
  396. fID = j;
  397. highlightedOne="";
  398. var theX = mouseX;
  399. var theY = mouseY;
  400. getMapXY(theX,theY);
  401. searchTolerance = (xDistance/iWidth) * pixelTolerance;
  402. var west1 = mapX - searchTolerance;
  403. var north1 = mapY + searchTolerance;
  404. var east1 = mapX + searchTolerance;
  405. var south1 = mapY - searchTolerance;
  406. idSouth = south1;
  407. idNorth = north1;
  408. idWest = west1;
  409. idEast = east1;
  410. var tempSwap = swapSelectFields;
  411. swapSelectFields=false;
  412. var tempSelect = selectFields;
  413. selectFields = LayerIDField[fID] + " " + LayerShapeField[fID] + " " + hyperLinkFields[fIndex];
  414. var theString = writeIdentifyXML(LayerID[fID],LayerType[fID],selectFields,west1,south1,east1,north1,maxFeaturesReturned,useLimitExtent);
  415. selectFields = tempSelect;
  416. swapSelectFields=tempSwap;
  417. showRetrieveData();
  418. //if (useTextFrame) parent.TextFrame.document.location = "text.htm";
  419. sendToServer(imsQueryURL,theString,16);
  420. } else {
  421. alert(msgList[114]);
  422. }
  423. } else {
  424. alert(msgList[115]);
  425. }
  426. }
  427. function parseHyperLinkAny(theReply) {
  428. //alert(theReply);
  429. var fList="";
  430. var lpos1 = 1;
  431. var lpos2 = 1;
  432. var pos = 0;
  433. var startpos = 0;
  434. var endpos = 0;
  435. var fString = theReply.substring(startpos,endpos);
  436. var featureCount = justGetFeatureCount(theReply);
  437. var linkString = "width=" + hyperlinkWindowWidth + ",height=" + hyperlinkWindowHeight + ",scrollbars=yes,resizable=yes"
  438. var selectedData="";
  439. var fCount = featureCount;
  440. //alert("displayAttributeData()[featurecount=" + featureCount + "]");
  441. selectCount = 0;
  442. var tempString="";
  443. inData = "";
  444. if (featureCount > 0) {
  445. var searchStr = hyperLinkFields[fIndex] + "=";
  446. newSelectCount += 1;
  447. endpos = 1;
  448. pos = theReply.indexOf(searchStr,1);
  449. startpos = pos + searchStr.length + 1;
  450. endpos =theReply.indexOf(dQuote,startpos);
  451. inData = theReply.substring(startpos,endpos);
  452. }
  453. if ((featureCount > 0) && (inData!=null) && (inData!="") & (inData!="&nbsp;")) {
  454. var theLinkURL = hyperLinkPrefix[fIndex] + inData + hyperLinkSuffix[fIndex];
  455. if (parent.TextFrame!=null) {
  456. parent.TextFrame.document.open();
  457. parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
  458. parent.TextFrame.document.writeln(' <title>' + titleList[9] + 's</title>');
  459. parent.TextFrame.document.writeln('</head>');
  460. parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
  461. parent.TextFrame.document.writeln('<FONT FACE="Arial"><B>' + LayerName[fID] +'</B></font><FONT FACE="Arial" size="-2">');
  462. parent.TextFrame.document.writeln('<br>' + msgList[67] + theLinkURL );
  463. parent.TextFrame.document.writeln('</FONT>');
  464. parent.TextFrame.document.writeln('</body></html>');
  465. parent.TextFrame.document.close();
  466. }
  467. var Win1=open(theLinkURL,"",linkString);
  468. } else if (fID<layerCount) {
  469. fID++;
  470. var j = -1;
  471. if ((mapScaleFactor>=LayerMinScale[fID]) && (mapScaleFactor<=LayerMaxScale[fID]) && (LayerVisible[fID]==1)) {
  472. fIindex = -1;
  473. for (var k = hyperLinkLayers.length-1;k>-1;k--) {
  474. if (hyperLinkLayers[k]==LayerName[fID]) {
  475. fIndex = k;
  476. j = fID;
  477. }
  478. }
  479. }
  480. if (j>-1) {
  481. var tempSwap = swapSelectFields;
  482. swapSelectFields=false;
  483. var tempSelect = selectFields;
  484. selectFields = LayerIDField[fID] + " " + LayerShapeField[fID] + " " + hyperLinkFields[fIndex];
  485. var theString = writeIdentifyXML(LayerID[fID],LayerType[fID],selectFields,idWest,idSouth,idEast,idNorth,maxFeaturesReturned,useLimitExtent);
  486. selectFields = tempSelect;
  487. swapSelectFields=tempSwap;
  488. showRetrieveData();
  489. //if (useTextFrame) parent.TextFrame.document.location = "text.htm";
  490. sendToServer(imsQueryURL,theString,16);
  491. } else {
  492. parseHyperLinkAny("");
  493. }
  494. } else {
  495. //alert(tempString);
  496. if (parent.TextFrame!=null) {
  497. parent.TextFrame.document.open();
  498. parent.TextFrame.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><head>');
  499. parent.TextFrame.document.writeln(' <title>' + titleList[9] + '</title>');
  500. parent.TextFrame.document.writeln('</head>');
  501. parent.TextFrame.document.writeln('<body BGCOLOR="White" TEXT="Black" LEFTMARGIN=0 TOPMARGIN=0>');
  502. parent.TextFrame.document.writeln('<FONT FACE="Arial" size="-1">');
  503. parent.TextFrame.document.writeln('<br>' + msgList[116]);
  504. parent.TextFrame.document.writeln('</FONT>');
  505. parent.TextFrame.document.writeln('</body></html>');
  506. parent.TextFrame.document.close();
  507. } else {
  508. var msg = msgList[116];
  509. if (debugOn>0) {
  510. msg = msg + msgList[9] + theReply;
  511. }
  512. alert(msg);
  513. }
  514. }
  515. hideRetrieveData();
  516. }
  517. function writeOutDataPage(theReply,layerIndex,docObject,docName,pageObject) {
  518. //var theReply = docObject.lastXMLResponse;
  519. var theError = docObject.getXMLErrorMessage(theReply);
  520. var fList="";
  521. var lpos1 = 1;
  522. var lpos2 = 1;
  523. var epos = 1;
  524. var spos = 1;
  525. var morePoints=true;
  526. var moreFeatures=true;
  527. var featureCount = justGetFeatureCount(theReply);
  528. var pos = 0;
  529. var startpos = 0;
  530. var endpos = xmlEndPos;
  531. var stillMore = false
  532. pos = theReply.indexOf('hasmore="true"',endpos);
  533. if (pos!=-1) stillMore = true;
  534. pos=0;
  535. var tempCount = 0;
  536. var selectedData="";
  537. var inData="";
  538. var xStr="";
  539. var yStr="";
  540. var tempString = "";
  541. var fCount = featureCount;
  542. //alert("displayAttributeData()[featurecount=" + featureCount + "]");
  543. selectCount = 0;
  544. var tempString="";
  545. var theFrame = docName;
  546. var dataString = "";
  547. if (featureCount > 0) {
  548. newSelectCount += 1;
  549. var fontSize = isIE ? "xx-small" : "x-small";
  550. dataString += '<center>n';
  551. dataString += '<FONT FACE="Arial" SIZE="-1"><b>' + LayerName[layerIndex] + '</b></FONT>n';
  552. dataString += '<table border="1" cellspacing="0" cellpadding="2" style="color: ' + textFrameTextColor + '; background-color: ' + tableBackColor + '; font-size: ' + fontSize + '; font-family: sans-serif;" nowrap="">n';
  553. endpos = 1;
  554. for (var i=0;i<fCount;i++) {
  555. //alert(endpos);
  556. var envExists = true;
  557. if ((toolMode!=4) && (toolMode!=25) && (toolMode!=5)) {
  558. var  endFeature = theReply.indexOf(endpos,"</FEATURE>");
  559. envExists = isThereEnvelope(theReply, endpos, endFeature);
  560. //alert("Envelope ="+ envExists);
  561.        if (envExists){
  562. var theXYs = getEnvelopeXYs(theReply, endpos)
  563. docObject.selectLeft[selectCount] = theXYs[0];
  564. docObject.selectBottom[selectCount] = theXYs[1];
  565. docObject.selectRight[selectCount] = theXYs[2];
  566. docObject.selectTop[selectCount] = theXYs[3]; 
  567. }
  568. }
  569. //alert(endpos);
  570. inData = parseRecordString(theReply, endpos);
  571. endpos = xmlEndPos;
  572. selectedData = inData;
  573. epos = theReply.indexOf("</FEATURE",endpos);
  574. //alert("2n" + selectedData);
  575. var showHyper = false;
  576. if (hyperLinkLayers!=null) {
  577. var lyrIndex = layerIndex;
  578. for (var s1=0;s1<hyperLinkLayers.length;s1++) {
  579. if (hyperLinkLayers[s1] == LayerName[layerIndex]) showHyper=true;
  580. }
  581. }
  582. var fName1 = getFieldNames(selectedData);
  583. var fValue1 = getFieldValues(selectedData);
  584. selectPoints[selectCount] = docObject.getIdValue(fName1, fValue1);
  585. var idFieldNum = -1;
  586. var shapeFieldNum = -1;
  587. if (hideIDFieldData) {
  588. // hide ID column header
  589. for (var f=0;f<fName1.length;f++) {
  590. if (fName1[f]==LayerIDField[layerIndex]) idFieldNum = f;
  591. }
  592. }
  593. if (hideShapeFieldData) {
  594. // hide Shape column header
  595. for (var f=0;f<fName1.length;f++) {
  596. if (fName1[f]==LayerShapeField[layerIndex]) shapeFieldNum = f;
  597. }
  598. }
  599. if (selectCount==0) {
  600. dataString += '<tr><th>' + msgList[86] + '</a></th>';
  601. for (var f=0;f<fName1.length;f++) {
  602. if ((f!=idFieldNum) && (f!=shapeFieldNum)) {
  603. var f2 = -1;
  604. if (useFieldAlias) {
  605. for (var f3=0;f3<AliasFieldName.length;f3++) {
  606. if (AliasFieldName[f3]==fName1[f]) f2 = f3;
  607. }
  608. }
  609. if (f2!=-1) {
  610. dataString += '<th>' + AliasFieldAlias[f2] + '</a></th>';
  611. } else {
  612. dataString += '<th>' + fName1[f] + '</a></th>';
  613. }
  614. }
  615. }
  616. dataString += '</tr>n';
  617. }
  618. dataString += '<tr><td>';
  619. var recNum = selectCount+queryStartRecord;
  620. if ((toolMode!=4) && (toolMode!=5) && (toolMode!=25) && (envExists) ) dataString += '<a href="javascript:' + docName + '.showHighlight(' + selectCount + ')">';
  621. dataString += '' + (recNum);
  622. if ((toolMode!=4) && (toolMode!=5) && (toolMode!=25) && (envExists) ) dataString += '</a>';
  623. dataString += '</td>n';
  624. for (var f=0;f<fName1.length;f++) {
  625. if ((f!=idFieldNum) && (f!=shapeFieldNum)) {
  626. dataString += '<TD>';
  627. var isHyper=false;
  628. if (showHyper) {
  629. for (var s1=0;s1<hyperLinkFields.length;s1++) {
  630.                         if(LayerName[layerIndex]==hyperLinkLayers[s1]){ 
  631. if (hyperLinkFields[s1]==fName1[f]) {
  632. if ((fValue1[f]!="") && (fValue1[f]!="&nbsp;")) {
  633. var theLinkURL = hyperLinkPrefix[s1] + fValue1[f] + hyperLinkSuffix[s1];
  634. dataString += '<a href="' + theLinkURL + '" target="_blank">';
  635. isHyper=true;
  636.                                    break;
  637. }
  638.   }
  639.                         }  
  640. }
  641. var s2 = -1;
  642. for (var s1=0;s1<LayerFields.length;s1++) {
  643. if (fName1[f]==LayerFields[s1]) s2=s1;
  644. }
  645. if (LayerFieldType[s2]=="91") {
  646. //alert(fName1[f]);
  647. if (isNaN(fValue1[f])) {
  648. var theDate = fValue1[f];
  649. } else {
  650. var theDateObj = new Date(parseFloat(fValue1[f]));
  651. var d = theDateObj.toUTCString();
  652. var theDate = d.replace(/GMT|UTC/,"");
  653. }
  654. dataString += theDate;
  655. theDate=null;
  656. } else {
  657. // put html entity for spaces so display is correct - browsers trim extra spaces
  658. tempString = fValue1[f].replace(/ /g, "&nbsp;");
  659. // replace &apos; with '
  660. tempString = tempString.replace(/&apos;/g, "'");
  661. dataString += tempString;
  662. }
  663. if (isHyper) dataString += '</a>';
  664. dataString += '</td>n';
  665. }
  666. }
  667. dataString += '</tr>n';
  668. fName1 = null;
  669. fValue1 = null;
  670. selectCount += 1;
  671. }
  672. dataString += '</table>n<FONT FACE="Arial" SIZE="-2">n';
  673. var getMoreData = "getMoreData";
  674. if (toolMode==25) getMoreData = "getMoreBufferData";
  675. if (queryStartRecord>1) {
  676. var prevRecord = queryStartRecord - maxFeaturesReturned;
  677. if (prevRecord<1) prevRecord=1;
  678. //if ((toolMode==25) && (prevRecord==1)) prevRecord = 0;
  679. dataString += '<a href="javascript:' + docName + '.' + getMoreData + '(' + prevRecord + ')">' + msgList[61] + maxFeaturesReturned + msgList[62] + '</a>&nbsp;&nbsp;&nbsp;n';
  680. }
  681. if (stillMore) {
  682. var nextRecord=featureCount + queryStartRecord;
  683. dataString += '<a href="javascript:' + docName + '.' + getMoreData + '(' + nextRecord + ')">' + msgList[63] + '</a>n';
  684. }
  685. if ((toolMode!=4) && (toolMode!=25) && (toolMode!=5) && (selectCount>1)) {
  686. dataString += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><a href="javascript:' + docName + '.zoomToReturnedRecords()">Zoom to these records</A></b>n';
  687. }
  688. dataString += '</font></center>n';
  689. if ((queryStartRecord==1) && (toolMode!=4) && (toolMode!=25) && (toolMode!=5) && (toolMode!=9)) {
  690. if ((selectCount==1) && (zoomToSingleSelect)) {
  691. var fWidth = selectRight[0] - selectLeft[0];
  692. var fHeight = selectTop[0] - selectBottom[0];
  693. var mWMargin = 0;
  694. var mHMargin = 0;
  695. if (selectType=="point") {
  696. mWMargin = fullWidth * selectPointMargin;
  697. mHMargin = fullHeight * selectPointMargin;
  698. if (mWMargin > xDistance/2) {
  699. mWMargin = xDistance/2;
  700. mHMargin = yDistance/2;
  701. }
  702. } else {
  703. mWMargin = fWidth * selectMargin;
  704. mHMargin = fHeight * selectMargin; 
  705. }
  706. saveLastExtent();
  707. eLeft = selectLeft[0] - mWMargin;
  708. eRight = selectRight[0] + mWMargin;
  709. eTop = selectTop[0] + mHMargin;
  710. eBottom = selectBottom[0] - mHMargin;
  711. }
  712. sendMapXML();
  713. }
  714. } else {
  715. dataString += '<center><FONT FACE="Arial"  SIZE="-1"><B>' + LayerName[layerIndex] +'</B></font><FONT FACE="Arial" size="-2">n';
  716. dataString += '<br>' + msgList[64] + '<br>n';
  717. if (debugOn>0) {
  718. dataString += '<p>' + msgList[65] + '<br>n';
  719. dataString += untag(theReply);
  720. } else {
  721. if (theError!="") {
  722. dataString += '<p>' + msgList[66] + '<br>n';
  723. dataString += theError;
  724. }
  725. }
  726. dataString += '</FONT></center>n';
  727. }
  728. if (toolMode==4) selectCount=0;
  729. return dataString;
  730. }
  731. function isThereEnvelope(theString, startpos, endpos) {
  732. theString = theString.toUpperCase();
  733. var pos = theString.indexOf("<ENVELOPE",startpos,endpos);
  734. if (pos>-1) return true;
  735. else return false;
  736. }