⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aimsclassrender.js

📁 采用arcims结合asp开发的一个webgis系统,针对地下水,实现了曲线时时绘制的功能.
💻 JS
📖 第 1 页 / 共 2 页
字号:
// aimsClassRender.js
/*
*  JavaScript template file for ArcIMS HTML Viewer Interactive Class Rendering
*		dependent on aimsXML.js, aimsDHTML.js, aimsCommon.js, and ArcIMSparam.js, 
*
*	Functions to change elements in the LayerRenderString array, whose elements are
*		strings containing replacement renderer arcxml tags for a specific layer for 
* 		current map request
* 	The element index is the Layer's index, starting with the topmost layer as zero.
*		The string must contain the complete renderer information for the layer 
*		(including any labelling or scaling) and follow arcxml renderer requirements.
*/

aimsClassRenderPresent=true;
// color ramps
var ClassRenderStartColor = new Array();
var ClassRenderEndColor = new Array();
// marker/line sizes
var ClassRenderStartSize = new Array();
var ClassRenderEndSize = new Array();
// color of polygon outlines. . . "" if none
var ClassRenderOutlineColor = new Array();
// rendering information preceeding classification
var ClassRenderStringPrefix = new Array();
// rendering information following classification
var ClassRenderStringSuffix = new Array();
// marker style
var ClassRenderStyle = new Array();
// Legend title
var ClassRenderTitle = crList[0];



// current active ClassRenderLayer
var ClassRenderLayerIndex = 0;
// Name of layer
var ClassRenderLayerName = ClassRenderLayer[ClassRenderLayerIndex];
// current field for classification
var ClassRenderLayerField = "";
// number of classes to use in rendering
var ClassRenderClasses = 0;
// method of classification
//		0=equal interval; 1=quantile;
var ClassRenderMethod = 0;
// type of shape
var ClassRenderShape = "polygon";

var ClassRenderRange = 0;
var ClassRenderBreakIncrement = 0;
var ClassRenderRecordIncrement = 0;
var ClassRenderBreakMin = new Array();
var ClassRenderBreakMax = new Array();
var ClassRenderBreakColor = new Array();
var ClassRenderBreakSize = new Array();

var ClassRenderMin=0;
var ClassRenderMax=9999999999;
var ClassRenderCount=1;
var ClassRenderSum=0;



/*
***************************************************************************************

Interactive Class Rendering functions 

***************************************************************************************
*/

// write interactive ValueRenderer strings in Map XML request
function addSpecialRenderToMap(i) {
	var renderString = "";
	if (ClassRenderLayer.length>0) {
		var j=-1;
		for (var k=0;k<ClassRenderLayer.length;k++) {
			if (ClassRenderLayer[k]==LayerName[i]) j=k;
		}
		if (j!=-1) {
			if (ClassRenderString[j]!="") {
				// add custom rendering for this request
				renderString += 'type="' + LayerType[i] + '">\n' + ClassRenderString[j] + '\n</LAYERDEF>\n';
			} else {
				renderString += '/>\n';
			}
		} else {
			renderString += '/>\n';
		}
	} else {
		renderString += '/>\n';

	}
	return renderString;
}

// set up the interactive classification
function classifyLayer() {
	if (ClassRenderLayer.length>0) {
		ClassRenderShape = LayerType[ActiveLayerIndex];
		var j = -1;
		for (var i=0;i<LayerName.length;i++) {
			if (ClassRenderLayer[ClassRenderLayerIndex] == LayerName[i]) {
				j = i;
				ClassRenderShape = LayerType[j];
			}
		}
		if (j>-1) {
			setLayerFields(j);
			fieldIndex=0;
			selectCount=0;
			showBuffer=false;
			ActiveLayer=LayerID[j];
			ActiveLayerType=LayerType[j];
			ClassRenderShape = ActiveLayerType;
			ActiveLayerIndex=j;
			writeClassifyForm(ClassRenderLayerIndex);
		} else {
			alert(crList[1]);
		}
	} else {
		alert(crList[1]);
	}
}

// form for interactive classifying
function writeClassifyForm(theIndex) {
	var crIndex = theIndex;
	if (useTextFrame) {
		//alert("writeClassifyForm");
		var Win1 = parent.TextFrame;
		Win1.document.open();
		var t = "parent.MapFrame";
		
	} else {
		var Win1 = open(appDir + "text.htm","QueryWindow","width=575,height=150,scrollbars=yes,resizable=yes");
		var t = "opener";
		if (parent.MapFrame!=null) t = "opener.parent.MapFrame";
	}
	
	Win1.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><HEAD>');
	Win1.document.writeln('<script language="javascript">');
	Win1.document.writeln('		var t = ' + t);
	
	Win1.document.writeln('		function setStyle() {');
	Win1.document.writeln('			var f = document.forms[0];');
	Win1.document.writeln('			var qField = f.QueryField.options[f.QueryField.selectedIndex].value;');
	Win1.document.writeln('			var qMethod = f.classMethod.selectedIndex;');
	Win1.document.writeln('			var theIndex = f.numClasses.options[f.numClasses.selectedIndex].value;');
	Win1.document.writeln('			if (theIndex==0) {');
	Win1.document.writeln('				t.clearAllClasses(' + theIndex + ');');
	Win1.document.writeln('			} else {');
	Win1.document.writeln('				var qClasses = f.numClasses.options[f.numClasses.selectedIndex].value;');
	Win1.document.writeln('				if (f.theTitle.value!="") t.ClassRenderTitle = f.theTitle.value;');
	Win1.document.writeln('				t.setupClasses(qField, qClasses, qMethod);');
	Win1.document.writeln('			}');
	Win1.document.writeln('		}');
	Win1.document.writeln('		function selectLayer() {');
	Win1.document.writeln('			var f = document.forms[0];');
	Win1.document.writeln('			var theIndex = f.theLayer.selectedIndex;');
	Win1.document.writeln('			t.ClassRenderLayerIndex = theIndex;');
	Win1.document.writeln('			t.classifyLayer();');
	Win1.document.writeln('		}');
	Win1.document.writeln('		function clearClasses() {');
	Win1.document.writeln('			t.ClassRenderLayerIndex = 0;');
	Win1.document.writeln('			t.clearClasses(' + theIndex + ');');
	Win1.document.writeln('			t.sendMapXML();');
	Win1.document.writeln('		}');
	Win1.document.writeln('</script>');
	Win1.document.writeln('</head>');

	Win1.document.writeln('<body bgcolor="Black" text="White" topmargin=0 leftmargin=0 rightmargin=0 onload="window.focus()">');
	Win1.document.writeln('<div align="center">');
	Win1.document.writeln('<font face="Arial" size="-2"><b>');
	Win1.document.writeln('<form action="" name="theClassifyForm" onsubmit="setStyle(); return false;">');
	Win1.document.writeln('<table cellspacing="2" nowrap bgcolor="' + textFrameFormColor + '" width=100%>');
	Win1.document.writeln('<tr><th colspan="3" align="CENTER">');
	Win1.document.writeln('<font face="Arial" size="-1"><b>' + crList[2] + '</b><br></font>');
	Win1.document.writeln('<font face="Arial" size="-2"><b>' + crList[3] + '</b></font>');
	Win1.document.writeln('</th>');
	Win1.document.writeln('<td align="Left" colspan="2">');
	Win1.document.writeln('<font face="Arial" size="-1">');
	Win1.document.writeln(crList[4] + '<br>');
	Win1.document.writeln('<INPUT TYPE="Text" NAME="theTitle" VALUE="' + ClassRenderTitle + '" SIZE="15">');
	Win1.document.writeln('</font></td>');
	Win1.document.writeln('</tr>');
	Win1.document.writeln('<tr>');
	Win1.document.writeln('<td align="Left">');
	Win1.document.writeln('<font face="Arial" size="-1"> ' + crList[5] + '<br>');
	Win1.document.writeln('<select name="theLayer" onchange="selectLayer()">')
	for (var i=0;i<ClassRenderLayer.length;i++) {
		Win1.document.write('	<option value=' + i);
		if (i==crIndex) Win1.document.write(' selected');
		Win1.document.writeln('>' + ClassRenderLayer[i]);
	
	}
	Win1.document.writeln('</select>');
	Win1.document.writeln('</font></td>');
	Win1.document.writeln('<td><font face="Arial" size="-1">' + crList[6] + '<br>');
	Win1.document.writeln('			<select name="QueryField">');
	for (var i=0;i<LayerFieldCount;i++) {
		var typeNum = parseInt(LayerFieldType[i]);
		if ((typeNum>=4) && (typeNum<=8)) {
			Win1.document.write('		<option value="' + LayerFields[i] + '"');
			Win1.document.writeln('>' + LayerFields[i]);
		}
	}
	Win1.document.writeln('			</select>');
	Win1.document.writeln('</font>');
	Win1.document.writeln('</td>');
	
	Win1.document.writeln('<td ><font face="Arial" size="-1">' + crList[7] + '<br>');
	Win1.document.writeln('			<select name="classMethod">');
	Win1.document.writeln('				<option value="0">' + crList[8]);	
	Win1.document.writeln('				<option value="1">' + crList[9]);	
	Win1.document.writeln('			</select>');
	Win1.document.writeln('</font>');
	Win1.document.writeln('</td>');

	Win1.document.writeln('<td><font face="Arial" size="-1">' + crList[10] + '<br>');
	Win1.document.writeln('			<select name="numClasses">');
	Win1.document.writeln('			<option value="0">' + crList[11]);
	for (var i=3;i<11;i++) {
		Win1.document.write('			<option value="' + i + '"');
		if (ClassRenderClasses == i) Win1.document.write(' selected');
		Win1.document.writeln('>' + i);
	}
	Win1.document.writeln('			</select>');
	Win1.document.writeln('</font>');
	Win1.document.writeln('</td>');
	Win1.document.writeln('<td align="CENTER" valign="BOTTOM">');
	Win1.document.writeln('<input type="Button" name="setDU" value="' + crList[12] + '" onclick="setStyle()">  <br>');
	
	Win1.document.writeln('</td></tr></table></form>');
	Win1.document.writeln('</b></font></div>');
	Win1.document.writeln('</body></html>');
	Win1.document.close();
	Win1=null;
	//alert("Finished with page.");
}

// clear out all custom render strings and draw map
function clearAllClasses() {
	clearClassesAll()
	sendMapXML();
}

// clear out all custom render strings
function clearClassesAll() {
	for (var i=0;i<ClassRenderLayer.length;i++) {
		clearClasses(i);
		legTitle = defaultLegTitle;
	}
}
// clear out custom renderer for one of the ClassRenderLayers
function clearClasses(theIndex) {
	ClassRenderString[theIndex] = "";
}

// send XML request for field values to setup new custom renderer for the current ClassRenderLayer
function setupClasses(theField, numClasses, methodIndex) {
	clearClassesAll();
	ClassRenderLayerField = theField;
	ClassRenderMethod = methodIndex;
	ClassRenderClasses = numClasses;
	ClassRenderBreakMin.length=1;
	ClassRenderBreakMax.length=1;
	ClassRenderBreakColor.length=1;
	ClassRenderBreakSize.length=1;
		// turn off all ClassRenderLayers
	for (var m=0;m<ClassRenderLayer.length;m++) {
		for (var n=0;n<layerCount;n++) {
			if (ClassRenderLayer[m]==LayerName[n]) LayerVisible[n]=0;
		}
	}
	
	var theLayer = ClassRenderLayer[ClassRenderLayerIndex];
		// get LayerName index
	var j=-1;
	for (var k=0;k<LayerName.length;k++) {
		if (LayerName[k]==theLayer) j=k;
	}
		// get shape type
	var shapeType = LayerType[j];
	var theLayerID = LayerID[j]
		// turn on this layer
	LayerVisible[j]=1;
	
	if (numClasses>0) {
		showRetrieveData();
		var theString = writeGetAllValues(theLayerID, shapeType, theField);
		sendGetValuesRequest(theString, 2001);
	} else {
		clearAllClasses();
	}
	
}

function writeGetAllValues(theLayerID, shapeType, theField) {
	var theString = "";
	theString = '<ARCXML VERSION="1.1">\n';
	theString += '<REQUEST>\n';
	theString += '	<GET_FEATURES outputmode="xml" geometry="false" envelope="false" compact="true">\n';
	theString += '		<LAYER id="' + theLayerID + '" ftype="' + shapeType + '" />\n';
	theString += '		<QUERY subfields="' + theField + '" where="#ID# > -1" />\n';
	theString += '	</GET_FEATURES>\n';
	theString += '</REQUEST>\n';
	theString += '</ARCXML>\n';
	
	return theString;

}

function sendGetValuesRequest(XMLRequest, theType) {
	var theFunction = "parent.MapFrame.processClassRenderXML";
	sendCustomToServer(XMLRequest,theFunction, theType)
}

function processClassRenderXML(theReplyIn) {
	theReplyIn = replacePlus(theReplyIn);
	var theReply = unescape(theReplyIn);
	//alert(theReply);
	okToSend = true;
	if (debugOn>2) alert(msgList[13] + theReply);
	if (XMLMode == 2001) {
		//alert("XMLMode=2001");
		setClassRenderBreaks(theReply);
	
	}
	if (XMLMode == 2002) {
		//alert("XMLMode=2002");
		calcFieldStats(theReply,ClassRenderLayerName,ClassRenderLayerField);
	
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -