📄 aimsclassrender.js
字号:
// 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 + -