ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能(六).docx_第1页
ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能(六).docx_第2页
ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能(六).docx_第3页
ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能(六).docx_第4页
ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能(六).docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能(六) 目的:1.ArcGIS.Server.9.3和ArcGIS API for JavaScript实现Identify功能,鼠标点击后获取被点击对象的然后以infoWindow的方式显示点击对象的属性信息。准备工作:1. 在ArcGis Server9.3中发布名为usa的MapServer。2.在使用在线的/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer地图数据和jsapi。完成后的效果图:开始1.启动vs新建名为MapIdentify的ASP.NET Web应用程序。其实jsapi是纯客户端的开发了不需要vs也不需要.net了,纯html页面就可以了用记事本都可以开发了。我这里为了方便了就用vs2008了,毕竟可以调试js脚本了。2.接着在工程中添加名为javascript的文件夹并且在这个文件夹里新建wabapp.js的文件,这里用来编写我们自己的js代码了,在Default.aspx页面里添加对这个js文件的引用,同时在Default.aspx页面里添加一个id为map的div标签作为地图控件的载体,添加完成后的html代码如下: UntitledPage3.上面的html代码非常的简单了,主要可以看一下tab、a-tab、tr2、tr1四个样式的定义了,这几个样式是用来定义Identify后在infoWindow中内容用的。4.切换到wabapp.js文件输入如下代码(具体的不做解释了代码注释已经非常详细了): dojo.require(esri.map);dojo.require(esri.tasks.identify);varmap,identifyTask,identifyParams,symbol;functioninit()map=newesri.Map(map,extent:newesri.geometry.Extent(-127.968857954995,25.5778580720472,-65.0742781827045,51.2983251993735,newesri.SpatialReference(wkid:4269);varimageryPrime=newesri.layers.ArcGISTiledMapServiceLayer(/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer);map.addLayer(imageryPrime);varportlandLandBase=newesri.layers.ArcGISDynamicMapServiceLayer(http:/jh-53a435fbc0e8/ArcGIS/rest/services/USA/MapServer);/设置要显示的图层portlandLandBase.setVisibleLayers(2,1,0);/设置图层透明度portlandLandBase.setOpacity(0.8);map.addLayer(portlandLandBase);/添加map的onLoad事件监听用来执行initIdentify,初始化Identifydojo.connect(map,onLoad,initIdentify);/初始化IdentifyfunctioninitIdentify(map)dojo.connect(map,onClick,doIdentify);/实例化IdentifyTaskidentifyTask=newesri.tasks.IdentifyTask(http:/jh-53a435fbc0e8/ArcGIS/rest/services/USA/MapServer);/IdentifyTask参数设置identifyParams=newesri.tasks.IdentifyParameters();/冗余范围identifyParams.tolerance=3;/返回地理元素identifyParams.returnGeometry=true;/进行Identify的图层identifyParams.layerIds=2,1,0;/进行Identify的图层为全部identifyParams.layerOption=esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;/设置infoWindow的大小Window.resize(300,200);/设置infoWindow的标题头Window.setTitle(Identify结果);/symbol=newesri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,newesri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,newdojo.Color(255,0,0),2),newdojo.Color(255,255,0,0.5);symbol=newesri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_DIAMOND,15,newesri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,newdojo.Color(0,0,0),1),newdojo.Color(255,255,0,0.5);/进行IdentifyfunctiondoIdentify(evt)/清除上一次的高亮显示map.graphics.clear();/Identify的geometryidentifyParams.geometry=evt.mapPoint;/Identify范围identifyParams.mapExtent=map.extent;identifyTask.execute(identifyParams,function(idResults)addToMap(idResults,evt););vartabledata=newArray();/在infoWindow中显示Identify结果functionaddToMap(idResults,evt)tabledata=newArray();/把Identify结果的名称、字段、字段值放入tabledata中for(vari=0;i0)varb=false;for(varj=0;jtabledata.length;j+)if(tabledataj.displayFieldName=idResult.layerName)varb=true;break;if(b)tabledataj.displayField.push(idResult.attributes);tabledataj.feature.push(idResult.feature);elsevartds=;vartd=newArray();/图层名称tds.displayFieldName=idResult.layerName;/图层字段varoo=idResult.attributes;td.push(oo);tds.displayField=td;vartd2=newArray();td2.push(idResult.feature);tds.feature=td2;tabledata.push(tds);elsevartds=;vartd=newArray();tds.displayFieldName=idResult.layerName;varoo=idResult.attributes;td.push(oo);tds.displayField=td;vartd2=newArray();td2.push(idResult.feature);tds.feature=td2;tabledata.push(tds);/设置infoWindow显示内容Window.setContent(tableHtml(tabledata,0);/设置infoWindow显示Window.show(evt.screenPoint,map.getInfoWindowAnchor(evt.screenPoint);/Identify结果的tab切换事件functiontab(index)Window.setContent(tableHtml(tabledata,index);/infoWindow中内容htmlfunctiontableHtml(rs,index)varstr=;varstr1=;varstr2=;for(vari=0;irs.length;i+)if(i=index)str1=str1+rsi.displayFieldName+;elsestr1=str1+rsi.displayFieldName+;str2=trHtml(index);str=+str1+str2+;returnstr;functiontrHtml(index)varstr2=;for(propintabledataindex.displayField0)str2=str2+prop+str2=str2+;for(vari=0;itabledataindex.displayField.length;i+)str2=str2+;for(propintabledataindex.displayFieldi)if(tabledataindex.displayFieldiprop=)str2=str2+ elsestr2=str2+tableda

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论