CustomLayer.js
资源名称:arcims.rar [点击查看]
上传用户:gzuoyue
上传日期:2022-07-08
资源大小:177k
文件大小:19k
源码类别:
GIS编程
开发平台:
ASP/ASPX
- var mCustomLayer = new GmapIms();
- /**
- * 装载活动图层个属性
- */
- var CustomNum = 0;
- var LayerWorkSpace = new Array();
- var LayerDBName = new Array();
- var LayerList = new Array();
- var WorkSpaceList = new Array();
- var WorkSpaceName = new Array();
- var WorkSpaceType = new Array();
- //加载重复时使用
- var CustonmsLayerAddNum = 0;
- var CustonmsLayerBegin = new Array();
- var CustonmsLayerEnd = new Array();
- var CustonmsLayerString = new Array();
- var CustonmsLayerName = new Array();
- var CustonmsLayerID = new Array();
- var CustonmsLayerVisible = new Array();
- var CustonmsLayerType = new Array();
- var CustonmsLayerIsFeature = new Array();
- var CustonmsLayerExtent = new Array();
- var CustonmsLayerMinScale = new Array();
- var CustonmsLayerMaxScale = new Array();
- var CustonmsLayerRenderString = new Array();
- var CustonmsLayerShapeField = new Array();
- var CustonmsLayerIDField = new Array();
- var CustonmsLayerFieldList = new Array();
- var CustonmsLayerFieldTypeList = new Array();
- var CustonmsLayerFieldSizeList = new Array();
- var CustonmsLayerFieldPrecisionList = new Array();
- var CustonmsLayerFields = new Array();
- var CustonmsLayerFieldType = new Array();
- var CustonmsLayerFieldPrecision = new Array();
- var CustonmsWorkSpace = new Array();
- /**
- * 清除全部动态图层
- */
- function ClearCustonmsLayer(){
- CustonmsLayerAddNum = 0;
- CustonmsLayerBegin.length = 1;
- CustonmsLayerEnd.length = 1;
- CustonmsLayerString.length = 1;
- CustonmsLayerName.length = 1;
- CustonmsLayerID.length = 1;
- CustonmsLayerVisible.length = 1;
- CustonmsLayerType.length = 1;
- CustonmsLayerIsFeature.length = 1;
- CustonmsLayerExtent.length = 1;
- CustonmsLayerMinScale.length = 1;
- CustonmsLayerMaxScale.length = 1;
- CustonmsLayerRenderString.length = 1;
- CustonmsLayerShapeField.length = 1;
- CustonmsLayerIDField.length = 1;
- CustonmsLayerFieldList.length = 1;
- CustonmsLayerFieldTypeList.length = 1;
- CustonmsLayerFieldSizeList.length = 1;
- CustonmsLayerFieldPrecisionList.length = 1;
- CustonmsLayerFields.length = 1;
- CustonmsLayerFieldType.length = 1;
- CustonmsLayerFieldPrecision.length = 1;
- }
- /**
- * 保存工作区
- */
- function setCustomWorkspace(LayerXmlString){
- var m_xml = new XMLHelper();
- var _id = WorkSpaceName.Length;
- m_xml.LoadXmlString(LayerXmlString);
- var nodeLength = m_xml.xmlHttp.getElementsByTagName('SHAPEWORKSPACE').length;
- for (var i=0;i<nodeLength;i++){
- var elDocRoot=m_xml.xmlHttp.getElementsByTagName('SHAPEWORKSPACE')[i];
- var __name = m_xml.getNodeAtt(elDocRoot.attributes,'name');
- if (!HasWorkNameSpace(__name)){
- WorkSpaceName[_id] = __name
- WorkSpaceList[_id] = elDocRoot.xml;
- WorkSpaceType[_id] = 'SHP';
- _id++;
- }
- }
- nodeLength = m_xml.xmlHttp.getElementsByTagName('IMAGEWORKSPACE').length;
- for (var i=0;i<nodeLength;i++){
- var elDocRoot=m_xml.xmlHttp.getElementsByTagName('IMAGEWORKSPACE')[i];
- var __name = m_xml.getNodeAtt(elDocRoot.attributes,'name');
- if (!HasWorkNameSpace(__name)){
- WorkSpaceName[_id] = __name
- WorkSpaceList[_id] = elDocRoot.xml;
- WorkSpaceType[_id] = 'IMAGE';
- _id++;
- }
- }
- nodeLength = m_xml.xmlHttp.getElementsByTagName('SDEWORKSPACE').length;
- for (var i=0;i<nodeLength;i++){
- var elDocRoot=m_xml.xmlHttp.getElementsByTagName('SDEWORKSPACE')[i];
- var __name = m_xml.getNodeAtt(elDocRoot.attributes,'name');
- if (!HasWorkNameSpace(__name)){
- WorkSpaceName[_id] = __name
- WorkSpaceList[_id] = elDocRoot.xml;
- WorkSpaceType[_id] = 'SDE';
- }
- }
- }
- /**
- * 判断工作区名是否存在
- */
- function HasWorkNameSpace(newName){
- var has = false;
- for (var i=0;i<WorkSpaceName.length;i++){
- if (newName.toUpperCase()==WorkSpaceName[i].toUpperCase()){
- has = true;
- }
- }
- return has;
- }
- var __Num = 0;//html专用
- var __CustonArr = new Array();
- /**
- * 设置动态图层的字段
- */
- function setCustomLayerFieldsend(theReply){
- // alert('setCustomLayerFieldsend:n'+theReply);
- var LayerId = __CustonArr[__Num];
- var tmp = theReply;
- //alert(__CustonArr.join(':')+'n'+__Num+'n'+LayerId);
- var pos = tmp.indexOf('<FIELDS');
- var endpos = tmp.indexOf('</FEATURE>');
- LayerFieldList[LayerId] = '';
- LayerFieldTypeList[LayerId] = '';
- LayerFieldSizeList[LayerId] = '';
- LayerFieldPrecisionList[LayerId] = '';
- LayerShapeField[LayerId] = '';
- if (pos>-1){
- tmp = tmp.substring(pos+7,endpos-4);
- var Filed = new Array();
- var tmpString = '';
- Filed = tmp.split(' ');
- for (var i=1;i<Filed.length;i++){
- var tmpStr = new Array();
- tmpStr = Filed[i].split('=');
- if (tmpStr[0]!=''){
- LayerFieldList[LayerId] += tmpStr[0]+',';
- LayerFieldTypeList[LayerId] += "12,";
- LayerFieldSizeList[LayerId] += "0,";
- LayerFieldPrecisionList[LayerId] += "0,";
- }
- }
- }else{
- LayerFieldList[LayerId] += ',';
- LayerFieldTypeList[LayerId] += ",";
- LayerFieldSizeList[LayerId] += "0,";
- LayerFieldPrecisionList[LayerId] += "0,";
- }
- LayerShapeField[LayerId] = "#SHAPE#";
- LayerIDField[LayerId] = "#ID#";
- layerCount++;
- __Num++;
- setCustomLayerFieldList(__Num);
- // alert(LayerFieldList[LayerId]);
- }
- /**
- * 处理动态图层的图层列表,主要利用查询返回动态图层中的字段。
- */
- function setCustomLayerFieldList(id){
- //alert(id+'n'+__CustonArr.length)
- if (id<__CustonArr.length-1){
- // alert('run1');
- setCustomLayerFields(__CustonArr[id]);
- }else if(id==0){
- // alert('run2');
- setCustomLayerFields(__CustonArr[id]);
- }else{
- // alert('run3');
- __Num = 0;
- __CustonArr.length = 0;
- saveCustonmsLayerAtt();
- refreshToc();
- }
- }
- /**
- * 返回动态图层的图层字段
- */
- function setCustomLayerFields(LayerId){
- var tmp='<ARCXML version="1.1"><REQUEST><GET_FEATURES outputmode="xml" geometry="false" envelope="false" checkesc ="false" featurelimit="1" beginrecord="2">';
- tmp += getCustonmsWorkSpace();
- tmp += LayerList[LayerId];
- tmp += '<SPATIALQUERY subfields="#ALL#"/></GET_FEATURES></REQUEST></ARCXML>';
- sendToServer(imsQueryURL,tmp,1001);
- //tmp = mMapServer.setArcXml(tmp,0).value;//setCustomLayerFieldsend
- }
- /**
- * 添加动态图层各层数据
- */
- function setCustomlayer(LayerXmlString){
- //保存工作区
- setCustomWorkspace(LayerXmlString);
- setCustonmsWorkSpace(LayerXmlString);
- var m_xml = new XMLHelper();
- var _Tmp = '';
- m_xml.LoadXmlString(LayerXmlString);
- var id = LayerName.length-1;
- //var id = mCustomLayer.CustonmsStartId-1;
- var nodeLength = m_xml.xmlHttp.getElementsByTagName('LAYER').length;
- var sAttstring = '';
- for (var i=0;i<nodeLength;i++){
- id++;
- CustomNum++;
- var elDocRoot=m_xml.xmlHttp.getElementsByTagName('LAYER')[i];
- LayerList[id] = elDocRoot.xml;
- if (elDocRoot){
- var attrs = elDocRoot.attributes;
- var type = attrs.getNamedItem('type').value;
- type = type.toUpperCase();
- switch(type){
- case 'IMAGE':
- var attrs = elDocRoot.attributes;
- LayerName[id] = m_xml.getNodeAtt(attrs,'name');
- LayerID[id] = m_xml.getNodeAtt(attrs,'id');
- if (m_xml.getNodeAtt(attrs,'visible')=='true'){
- LayerVisible[id] = 1;
- }else{
- LayerVisible[id] = 0;
- }
- LayerType[id] = 'image';
- LayerIsFeature[id]=false;
- break;
- case 'FEATURECLASS':
- var attrs = elDocRoot.attributes;
- LayerName[id] = m_xml.getNodeAtt(attrs,'name');
- LayerID[id] = m_xml.getNodeAtt(attrs,'id');
- LayerIsFeature[id]=true;
- if (m_xml.getNodeAtt(attrs,'visible')=='true'){
- LayerVisible[id] = 1;
- }else{
- LayerVisible[id] = 0;
- }
- var DataSet = elDocRoot.childNodes[0];
- LayerType[id] = m_xml.getNodeAtt(DataSet.attributes,'type');
- // alert(LayerType[id]);
- LayerWorkSpace[id] = m_xml.getNodeAtt(DataSet.attributes,'workspace');
- LayerDBName[id] = m_xml.getNodeAtt(DataSet.attributes,'name');
- _Tmp = m_xml.getNodeAtt(attrs,'minscale');
- if (_Tmp=='') {
- LayerMinScale[id] = 0;
- }else{
- LayerMinScale[id] = parseFloat(_Tmp);
- }
- _Tmp = m_xml.getNodeAtt(attrs,'maxscale');
- if (_Tmp=='') {
- LayerMaxScale[id] = 1.7976931348623157E308;
- }else{
- LayerMaxScale[id] = parseFloat(_Tmp);
- }
- __CustonArr[__CustonArr.length] = id;
- //setCustomLayerFields(id);
- break;
- }
- }
- }
- // alert(LayerXmlString+'nn'+LayerType.join('n'))
- if (debugOn>=3)alert(LayerName);
- if (__CustonArr.length!=0){
- setCustomLayerFieldList(0);
- }
- }
- /**
- * 保存动态图层组到参数
- */
- function saveCustonmsLayerAtt(){
- // alert(LayerName.join('n'));
- CustonmsLayerString[CustonmsLayerAddNum] = mCustomLayer.getCustomLayerString();
- var id = 0;
- if (CustonmsLayerName.length!=0){
- id = CustonmsLayerName.length;
- }
- CustonmsLayerBegin[CustonmsLayerAddNum] = id;
- for (var ids=mCustomLayer.CustonmsStartId;ids<LayerName.length;ids++){
- CustonmsLayerName[id] = LayerName[ids];
- CustonmsLayerID[id] = LayerID[ids];
- CustonmsLayerVisible[id] = LayerVisible[ids];
- CustonmsLayerType[id] = LayerType[ids];
- CustonmsLayerIsFeature[id] = LayerIsFeature[ids];
- CustonmsLayerExtent[id] = LayerExtent[ids];
- CustonmsLayerMinScale[id] = LayerMinScale[ids];
- CustonmsLayerMaxScale[id] = LayerMaxScale[ids];
- CustonmsLayerRenderString[id] = LayerRenderString[ids];
- CustonmsLayerShapeField[id] = LayerShapeField[ids];
- CustonmsLayerIDField[id] = LayerIDField[ids];
- CustonmsLayerFieldList[id] = LayerFieldList[ids];
- CustonmsLayerFieldTypeList[id] = LayerFieldTypeList[ids];
- CustonmsLayerFieldSizeList[id] = LayerFieldSizeList[ids];
- CustonmsLayerFieldPrecisionList[id] = LayerFieldPrecisionList[ids];
- CustonmsLayerFields[id] = LayerFields[ids];
- CustonmsLayerFieldType[id] = LayerFieldType[ids];
- CustonmsLayerFieldPrecision[id] = LayerFieldPrecision[ids];
- id++;
- }
- CustonmsLayerEnd[CustonmsLayerAddNum] = id-1;
- CustonmsLayerAddNum++;
- mCustomLayer.CustonmsStartId = LayerName.length;
- //alert(CustonmsLayerBegin.join(':')+'n'+CustonmsLayerEnd.join(':')+'nn'+CustonmsLayerName.join(':'));
- }
- /**
- * 删除动态图层组
- */
- function DelCustonmsLayerGroup(GroupId){
- if ((CustonmsLayerAddNum==0)||(GroupId>=CustonmsLayerAddNum)){
- alert('错误的序号在程序中');
- }else{
- var _beginPos = CustonmsLayerBegin[GroupId];
- var _InfoPos = serverLayerCount + _beginPos;
- var _endPos = CustonmsLayerEnd[GroupId];
- var _diff = _beginPos - _endPos;
- //alert(_beginPos+'n'+_InfoPos+'n'+_endPos+'n'+_diff);
- for(var i=_beginPos;i<=_endPos;i++){
- ClearCustonmsLayer(_beginPos);
- ClearLayerInformation(_InfoPos);
- }
- CustonmsLayerAddNum--;
- CustonmsLayerEnd[GroupId] = _beginPos - _diff;
- CustonmsLayerBegin[GroupId] = _endPos - _diff;
- if (CustonmsLayerAddNum==0){
- mCustomLayer.setCustomLayerString('');
- mCustomLayer.bCustomLayer = false;
- }else{
- mCustomLayer.setCustomLayerString(CustonmsLayerString[CustonmsLayerAddNum]);
- mCustomLayer.setCustomLayer('<Table>'+mCustomLayer.getCustomLayerString()+'</Table>');
- }
- refreshToc();
- }
- }
- function refreshToc(){
- LayerListOpen=false;
- parent.TOCFrame.document.location=appDir+"toc.htm";
- //alert(LayerName.join('n'));
- sendMapXML();
- }
- /**
- * 删除动态图层对应的图层参数
- */
- function ClearLayerInformation(DelId){
- for (var id=DelId;id<LayerName.length-1;id++){
- var ids = id + 1;
- LayerName[id] = LayerName[ids];
- LayerID[id] = LayerID[ids];
- LayerVisible[id] = LayerVisible[ids];
- LayerType[id] = LayerType[ids];
- LayerIsFeature[id] = LayerIsFeature[ids];
- LayerExtent[id] = LayerExtent[ids];
- LayerMinScale[id] = LayerMinScale[ids];
- LayerMaxScale[id] = LayerMaxScale[ids];
- LayerRenderString[id] = LayerRenderString[ids];
- LayerShapeField[id] = LayerShapeField[ids];
- LayerIDField[id] = LayerIDField[ids];
- LayerFieldList[id] = LayerFieldList[ids];
- LayerFieldTypeList[id] = LayerFieldTypeList[ids];
- LayerFieldSizeList[id] = LayerFieldSizeList[ids];
- LayerFieldPrecisionList[id] = LayerFieldPrecisionList[ids];
- LayerFields[id] = LayerFields[ids];
- LayerFieldType[id] = LayerFieldType[ids];
- LayerFieldPrecision[id] = LayerFieldPrecision[ids];
- }
- layerCount--;
- var newLength = LayerName.length-1;
- LayerName.length = newLength;
- LayerID.length = newLength;
- LayerVisible.length = newLength;
- LayerType.length = newLength;
- LayerIsFeature.length = newLength;
- LayerExtent.length = newLength;
- LayerMinScale.length = newLength;
- LayerMaxScale.length = newLength;
- LayerRenderString.length = newLength;
- LayerShapeField.length = newLength;
- LayerIDField.length = newLength;
- LayerFieldList.length = newLength;
- LayerFieldTypeList.length = newLength;
- LayerFieldSizeList.length = newLength;
- LayerFieldPrecisionList.length = newLength;
- LayerFields.length = newLength;
- LayerFieldType.length = newLength;
- LayerFieldPrecision.length = newLength;
- }
- /**
- * 删除动态图层
- */
- function ClearCustonmsLayer(DelId){
- for (var id=DelId;id<CustonmsLayerName.length-1;id++){
- ids = id + 1;
- CustonmsLayerName[id] = CustonmsLayerName[ids];
- CustonmsLayerID[id] = CustonmsLayerID[ids];
- CustonmsLayerVisible[id] = CustonmsLayerVisible[ids];
- CustonmsLayerType[id] = CustonmsLayerType[ids];
- CustonmsLayerIsFeature[id] = CustonmsLayerIsFeature[ids];
- CustonmsLayerExtent[id] = CustonmsLayerExtent[ids];
- CustonmsLayerMinScale[id] = CustonmsLayerMinScale[ids];
- CustonmsLayerMaxScale[id] = CustonmsLayerMaxScale[ids];
- CustonmsLayerRenderString[id] = CustonmsLayerRenderString[ids];
- CustonmsLayerShapeField[id] = CustonmsLayerShapeField[ids];
- CustonmsLayerIDField[id] = CustonmsLayerIDField[ids];
- CustonmsLayerFieldList[id] = CustonmsLayerFieldList[ids];
- CustonmsLayerFieldTypeList[id] = CustonmsLayerFieldTypeList[ids];
- CustonmsLayerFieldSizeList[id] = CustonmsLayerFieldSizeList[ids];
- CustonmsLayerFieldPrecisionList[id] = CustonmsLayerFieldPrecisionList[ids];
- CustonmsLayerFields[id] = CustonmsLayerFields[ids];
- CustonmsLayerFieldType[id] = CustonmsLayerFieldType[ids];
- CustonmsLayerFieldPrecision[id] = CustonmsLayerFieldPrecision[ids];
- }
- var newLength = CustonmsLayerName.length-1;
- CustonmsLayerName.length = newLength;
- CustonmsLayerID.length = newLength;
- CustonmsLayerVisible.length = newLength;
- CustonmsLayerType.length = newLength;
- CustonmsLayerIsFeature.length = newLength;
- CustonmsLayerExtent.length = newLength;
- CustonmsLayerMinScale.length = newLength;
- CustonmsLayerMaxScale.length = newLength;
- CustonmsLayerRenderString.length = newLength;
- CustonmsLayerShapeField.length = newLength;
- CustonmsLayerIDField.length = newLength;
- CustonmsLayerFieldList.length = newLength;
- CustonmsLayerFieldTypeList.length = newLength;
- CustonmsLayerFieldSizeList.length = newLength;
- CustonmsLayerFieldPrecisionList.length = newLength;
- CustonmsLayerFields.length = newLength;
- CustonmsLayerFieldType.length = newLength;
- CustonmsLayerFieldPrecision.length = newLength;
- }
- /**
- * 加载自定义地图属性
- */
- function setCustomlayerAttribute(){
- var _Xmling = mCustomLayer.getCustomLayer();
- if (_Xmling!=''){
- aimsCustomPresent = true;
- mCustomLayer.bCustomLayer = true;
- setCustomlayer(_Xmling);
- }else{
- aimsCustomPresent = false;
- mCustomLayer.bCustomLayer = false;
- }
- }
- /**
- * 加载应用图层并显示
- */
- var CustomLayerGroup;
- var TocrootLength = -1;
- function setProApplyIng(appId){
- //alert(appId);
- mCustomLayer.setProApply(appId)
- mCustomLayer.getMapCustomLayer(mCustomLayer.getProApply(),0);//根据应用返回图层
- //alert(mCustomLayer.getCustomLayer())
- //alert(mCustomLayer.CustonmsStartId+'n'+LayerName.length)
- if (mCustomLayer.CustonmsStartId==LayerName.length){
- setCustomlayerAttribute();
- /*
- if (hasOVMap){
- TocrootLength = toc.root.items.length;
- CustomLayerGroup = toc.addGroup( new GROUP('自定义图层',false,'icon_groupvl.gif'));
- //renwen.addLayer( new LAYER('cities','城市','swatch_museums.gif','','标签') );
- for (var i=mCustomLayer.CustonmsStartId;i<LayerName.length;i++){
- CustomLayerGroup.addLayer( new LAYER(LayerName[i],LayerName[i],'swatch_museums.gif','','') );
- }
- }
- */
- }else{
- //在这里删除目录树枝叶
- }
- /*
- if (hasOVMap){
- toc.root.init();
- }
- */
- sendMapXML();
- }
- function CustonInit(){
- if (TocrootLength>0){
- toc.root.items.length = TocrootLength;
- }
- CustomLayerGroup = null;
- LayerName.length = serverLayerCount;
- //alert(LayerName.join('n'));
- }
- /**
- * 保存工作区
- */
- function setCustonmsWorkSpace(LayerXmlString){
- var _value = LayerXmlString;
- var pos = _value.indexOf('<WORKSPACES>');
- var endpos = _value.indexOf('</WORKSPACES>');
- if (pos>-1){
- _value = _value.substring(pos+13,endpos-1);
- }
- if (!HasWorkSpaceString(_value)){
- CustonmsWorkSpace[CustonmsWorkSpace.length] = _value;
- }
- }
- /**
- * 返回工作区
- */
- function getCustonmsWorkSpace(){
- var ij = -1;
- var sArr = new Array();
- sArr[++ij] = '<WORKSPACES>';
- for (var i=0;i<CustonmsWorkSpace.length;i++){
- sArr[++ij] = CustonmsWorkSpace[i];
- }
- sArr[++ij] = '</WORKSPACES>';
- return sArr.join('n');
- }
- /**
- * 返回图层
- */
- function getCustonmsLayerList(LayerXmlString){
- var _value = LayerXmlString;
- var pos = _value.indexOf('</WORKSPACES>');
- var endpos = _value.indexOf('</Table>');
- if (endpos==-1){
- endpos = _value.length;
- }
- if (pos>-1){
- _value = _value.substring(pos+13,endpos);
- }
- return _value;
- }
- /**
- * 判断工作区重复性
- */
- function HasWorkSpaceString(newName){
- var has = false;
- for (var i=0;i<CustonmsWorkSpace.length;i++){
- if (newName.toUpperCase()==CustonmsWorkSpace[i].toUpperCase()){
- has = true;
- }
- }
- return has;
- }
- //=========================================================================================
- var WorkSpaceList = new Array();
- WorkSpaceList[0] = new Array();
- WorkSpaceList[0][0] = '<WORKSPACES>';
- WorkSpaceList[0][1] = '<SHAPEWORKSPACE directory="C:\ArcIMS\AXL\World" name="sde-IUY-0" />';
- WorkSpaceList[0][2] = '</WORKSPACES>';
- WorkSpaceList[0][3] = '<LAYER type="featureclass" name="TEST Layer1" visible="true" id="200"><DATASET name="cities" workspace="sde-IUY-0" type="point"/><SIMPLERENDERER><SIMPLEMARKERSYMBOL color="255,51,0" type="star" width="15" /></SIMPLERENDERER></LAYER>';
- WorkSpaceList[1] = new Array();
- WorkSpaceList[1][0] = '<WORKSPACES>';
- WorkSpaceList[1][1] = '<SHAPEWORKSPACE directory="C:\ArcIMS\AXL" name="sde-IUY-1" />';
- WorkSpaceList[1][2] = '</WORKSPACES>';
- WorkSpaceList[1][3] = '<LAYER type="featureclass" name="TEST Layer2" visible="true" id="201"><DATASET name="cities" workspace="sde-IUY-1" type="point"/><SIMPLERENDERER><SIMPLEMARKERSYMBOL color="255,51,0" type="star" width="15" /></SIMPLERENDERER></LAYER>';
- var ___POs = 0;
- function CuRun(){
- mCustomLayer.setCustomLayerString(WorkSpaceList[___POs].join('n'));
- mCustomLayer.setCustomLayer('<Table>'+mCustomLayer.getCustomLayerString()+'</Table>');
- setCustomlayerAttribute();
- ___POs++;
- if (___POs==2){
- ___POs = 0;
- }
- }