ArcGis API For Flex.pptx_第1页
ArcGis API For Flex.pptx_第2页
ArcGis API For Flex.pptx_第3页
ArcGis API For Flex.pptx_第4页
ArcGis API For Flex.pptx_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

1、ArcGis API For Flex,技术研发中心 2011年10月,ArcGis API For Flex简介,ArcGIS Flex API是ArcGIS在RIA领域的第一个产品,因此选择了最为成熟的Flex/Flash平台。使用ArcGIS Flex API可以开发运行于浏览器中的Web应用或者运行于桌面的AIR应用,它基于ArcGIS Server的REST接口,所有的功能都可以在REST SDK中找到影子。使用ArcGIS Flex API开发的Flex应用可以非常便捷地使用地图功能和REST接口提供的GIS 查询及分析功能;同时,ArcGIS Flex API专注于GIS功能的实

2、现而不重复地创造组件,因此可以让你的业务和GIS方便地结合起来。,ArcGis Server API简介,ArcGis For .NET(ADF) ArcGis For Java(ADF) ArcGis API For Flex(Version2.4) ArcGis API For JavaScript ArcGis API For SilverLight,Flex API作用,使用ArcGis API For Flex可以实现如下效果: 显示地图数据并与之交互 在服务器上执行空间处理模型并显示结果 基于地图服务展示自己的业务数据 根据属性或者位置查找数据并显示结果 查找地址并显示结果 创建结

3、果的显示方式,Com.esri.ags中的主要对象,Map Map是API中主要的地图组件,在默认情况下,地图导航包括鼠标和键盘交互。 Graphic Graphic表示地图中客户端上出现的要素。 InfoWindow 在地图上提供类似于标注的窗口。 SpatialReference 空间参考,也就是坐标系。每一个投影坐标和地理坐标都被设置为一个WKID。 Units,Map,Map是ArcGIS Flex API中的一个可视化组件,它可以直接被放置到Flex应用中进行布局、展示,Map负责对Layer进行组织,在逻辑上Map可以包含任意多个Layer。 Map可以被看作是一个地图, ArcG

4、IS Flex API中所有的操作和功能都会在Map中进行,因此Map是一个特别重要的对象。如果在应用中有别的业务组件或模块需要和地图交互(比如把业务数据标到图上),那么只要它们可以获得Map对象的引用就可以了,所有和GIS相关的功能都可以通过Map来实现。 通过来添加Map组件。,Map,默认的Map中还有几个其它的元素,包括控制地图缩放的zoomSlider、地图比例尺scaleBar以及ESRI的logo。如果你不需要这些元素,都可以通过Map中对应的属性对它们进行隐藏。 Map有很灵活的可配置性,它的各种元素的外观也 很容易定制;当然,如果实在有特殊的需要, Map也可以通过隐藏所有元

5、素来提供给你 一个非常干净的地图组件,你则可以在此 基础上加上自己的内容。,InfoWindow,InfoWindow窗口主要提供在Map上弹出信息提示的功能,比如当我点击一个要素的时候,可能同时需要查询这个要素的属性值并在地图上显示出来,InfoWindow窗口主要就是实现这样的功能。 当定义一个Map的时候,Map会生成一个自带的InfoWindow并放置在自己的infoWindow属性中,因此InfoWindow窗口并不需要你去定义。你只需要知道InfoWindow应该弹出的位置(地图上的某个坐标点),那么在这个地方会弹出一个提示窗口,并且不会随着地图移动、缩放而移动位置或消失。,Inf

6、oWindow,InfoWindow是ArcGis API For Flex中提供的类似于标注的窗口,可以用来显示用户的自定义的信息,可以是文本、图片,也可以是复杂的自定义组件。 使用InfoWindow,只要设置Map的infoWindow属性即可: MWindow.content=“内容”; MWindow.show(point); content用于设置infowindow的内容, show方法设置infoWindow的显示位置。,Graphic,Graphic有3个很重要的属性:geometry、symbol和attributes。 geometry属性定义

7、的是一个几何对象,它是Graphic的基础,因为Graphic要表达的就是这个几何对象。 symbol属性则定义了这个几何对象通过什么符号表现出来。 attributes则可以存放一系列与空间信息无关的属性数据。 因此,Graphic可以被理解成是一个在客户端符号化的要素。,SpatialReference,SpatialReference是一个地图、图层或Task在输入输出时的空间参考,也就是坐标系。每一个投影坐标和地理坐标系都被设置为一个WKID(well-known ID )或WKT(Well Known Text)值。但ArcGis目前只支持WKID。 WKID 如WGS84的WKID

8、值为4326,SpatialReference,WKT GEOGCSWGS84,DATUMWGS_1984,SPHEROIDWGS84,6378137,298.257223563,AUTHORITYEPSG,7030,AUTHORITYEPSG,6326,PRIMEMGreenwich,0,AUTHORITYEPSG,8901,UNITdegree,0.0174532925199433,AUTHORITYEPSG,9122,AUTHORITYEPSG,4326,Com.esri.ags.layers中的对象,ArcGisMapServiceLayer对应的是ArcGIS发布的地图服务。 Arc

9、GISDynamicMapServiceLayer :动态地图。 ArcGISTiledMapServiceLayer :切片地图。 ArcGISImageServiceLayer:影像地图。 ArcIMSMapServiceLayer:ArcIMS发布的地图服务。 GraphicLayer:客户端的图层。,MapServiceLayer,MapServiceLayer对应的是ArcGIS发布的地图服务,它们是一对一的关系,每个地图服务在ArcGIS Flex API中都会以一个图层的形式出现。不同种类的地图服务将会对应不同的MapServiceLayer,ArcGIS Flex API中主要

10、有以下几种MapServiceLayer:,MapServiceLayer,ArcGISDynamicMapServiceLayer:由GisServer发布的动态地图。通常有一个或多个图层叠加而成,对地图的一些列操作(如空间查询,空间分析等)都是在动态地图上完成的。 ArcGISTiledMapServiceLayer :由GisServer发布的切片地图(瓦片地图),有一个图层构成,通常作为底图与动态地图叠加。 ArcGISImageServiceLayer:影像地图是以航空或卫星遥感影像直接反映地表状况的地图。 ArcIMSMapServiceLayer:由ArcIMS服务器发布的地图服

11、务,目前已很少使用。,GraphicLayer,GraphicLayer并不对应到服务器端的某个地图服务,它完全是客户端的图层。因此,GraphicLayer在客户端数据表达方面有非常重要的作用,它可以根据各种情况动态地在客户端显示一些符号化的几何对象Graphic。 在客户端可以添加任意多个GraphicLayer来展现自己的业务数据,并可以和服务器地图叠加,达到在地图上展现自己业务数据的目的。,Com.esri.ags.geometry中的对象,MapPoint:点 Multipoint:多点 Polyline:线 Polygon:面 Extent:区域,Com.esri.ags.geom

12、etry中的对象,Geometry是ArcGIS中很基本的概念,ArcGIS Flex API中定义了如下几何对象: Geometry做为Graphic的一个属性,主要是用来在客户端以什么形状来展现图形。,Com.esri.ags.symbol中的对象,infoSymbol:信息展示符号 TextSymbol:文本展示符号 MarkerSymbol:点展示符号 LineSymbol:线展示符号 FillSymbol:面展示符号,Symbol,Symbol定义了Geometry使用什么符号表现出来。在ArcGIS Flex API中,一般使用MarkerSymbol定义点的符号、LineSymb

13、ol定义线的符号、FillSymbol定义填充的符号,另外还有TextSymbol、InfoSymbol等其它符号帮助进行其它信息的辅助表达。下面列出的是ArcGIS Flex API中提供的常用的Symbol: InfoSymbol:用来展示某一点的属性信 息,与InfoWindow有区别, InfoWindow是单例的,子地图上始 终只能出现一个,而InfoSymbol 可以在地图上同时出现多个。,Symbol,TextSymbol:文本符号,通常以文字的形式在地图上某一点上展示点的信息(如名称等)。如下图: MarkerSymbol:点符号,包含了两种点符号类型: SimpleMarke

14、rSymbol:简单点符号,通过改变点的样式,如大小,颜色,显示形状等来控制点的样式。,Symbol,PictureMarkerSymbol :图片点符号,以图片的方式在地图上展现点的样式,可以设置图片的大小,通常是16*16像素的图片。 下图展示的是简单点符号和图片点符号:,Symbol,LineSymbol:线符号,包含两种线符号类型: SimpleLineSymbol :简单线符号,通过改变线的样式,如颜色,粗细等来控制线的样式。 CartographicLineSymbol :制图线符号,可定义端点、折点样式 。 如下图:,Symbol,FillSymbol:填充符号,包含两种填充符号

15、类型: SimpleFillSymbol : 简单填充符号 ,用来填充多边形的样式,如颜色,透明度等。 PictureFillSymbol : 图片填充符号 ,以图片的方式填充多边形。,Com.esri.ags.toolbars中的对象,Draw:提供了在客户端绘制各种几何对象的功能。 Navigation:提供了对Map进行导航功能。,Navigation,当准备好一个满意的Map的时候,我们已经可以在地图中看到我们在ArcGIS Server中发布的地图服务了。接下来我们可能马上想到的是如何去操作地图,比如缩放、漫游、前进、后退等等地图导航功能。在这个时候你或许已经发现,当前地图默认的操作

16、是漫游(Pan)同时,你滚动鼠标滚轮的时候地图会进行缩放;如果按住shift键并在地图上拖动时会出现一个矩形框,松开鼠标后地图会缩放到框中的范围。Map已经可以进行简单地图导航了。当你想要切换地图到拉框缩小状态或者别的什么操作或许就感到有点无所适从了。这是就需要用到Navigation。,Navigation,Navigation提供了对Map进行导航的功能,通过它可以实现漫游、拉框放大、拉框缩小功能、前一视图、后一视图、全图等功能。但是,它并不是一个工具条,而是提供了一些功能,你可以自定义工具条和一些按钮然后绑定到Navigation的功能上。 Navigation中漫游、拉框放大、拉框缩小

17、等功能和工具条按钮的绑定。这些功能有个特点就是同时只有一个按钮需要被激活,它指示了当前Map的操作状态,因此我们可以借助Flex中的控件作为这些功能的宿主。,NavigationTool,通过 加入一个NavigationTool控件,并与地图相关联。 借助Flex控件,来激活NavigationTool的状态。 NavigationTool的状态包括: NavigationTool.PAN漫游 NavigationTool.ZOOM_IN拉框放大 NavigationTool.ZOOM_OUT拉框缩小,NavigationTool,状态的激活:借助Flex中的控件,如Button,在Clic

18、k事件中调用nav.activate(NavigationTool.ZOOM_IN),就可以执行拉框放大操作。,NavigationTool,NavigationTool不仅可以改变Map的操作状态,还有直接调用的方法来操作Map,通过对这些方法的调用, NavigationTool就可以是Map根据你的需要切换视图。 zoomToPrevExtent():前一视图 zoomToNextExtent():后一视图 zoomToFullExtent():全图显示 注意:前一视图和后一视图状态不是一直可用,需要控制它的可用状态。,NavigationTool,DrawTool,DrawTool是A

19、rcGIS Flex API另外一个和NavigationTool性质类似的工具。 DrawTool工具提供了在客户端绘制各种几何对象的功能,类似NavigationTool的使用那样,需要借助Flex控件绑定DrawTool工具的功能。 可绘制的几何对象类型包括点、多点、直线、多线、手绘多线、多边形、手绘多边形、矩形。同时,对这些绘制对象的样式我们也可以进行样式的设置。通过DrawTool工具我们可以通过ArcGIS Flex API绘制各种不同类型、样式可设置的几何对象。,DrawTool,DrawTool工具的功能: DrawTool .MAPPOINT:绘制点 DrawTool.MUL

20、TIPOINT:绘制多点 DrawTool.LINE:绘制线 DrawTool.POLYLINE:绘制面 DrawTool.FREEHAND_POLYLINE:手绘线 DrawTool.POLYGON:绘制面 DrawTool.FREEHAND_POLYGON:手绘面 DrawTool.EXTENT:绘制区域,DrawTool,通过 加入一个Navigation控件,并与地图和一个客户端图层相关联。 借助Flex控件,来激活Draw的状态。 状态的激活:借助Flex中的控件,如Button,在Click事件中调用drawToolbar.activate(DrawTool.MAPPOINT) ,

21、就可以在graphicsLayer执行画点操作。,DrawTool,需要制定一个GraphicLayer,因为所以绘制的图形都是在客户单图层上做展示。 还可以指定DrawTool的markerSymbol 、lineSymbol和 fillSymbol属性,来设置所绘制的点、线、面的样式。 当我们可以在客户端绘制各种几何对象以后,加上ArcGIS Server后台提供的诸多功能,很快我们就可以实现很多业务逻辑了。,DrawTool,Com.esri.ags.tasks中的对象,QueryTask:查询任务 FindTask:查找任务 IdentifyTask:识别任务 GeometryServ

22、ice:几何服务 Geoprocessor:GP服务 Locator:定位服务,QueryTask,QueryTask是一个进行空间和属性查询的功能类,它可以在某个地图服务的某个子图层内进行查询,顺便需要提一下的是,QueryTask进行查询的地图服务并不必须加载到Map中进行显示。 QueryTask的执行需要两个先决条件:一个是需要查询的图层URL、一个是进行查询的过滤。 QueryTask有个url属性指向需要查询的子图层的URL(索引从顶部图层为0开始)。,QueryTask,Query过程分为四步: 设置QueryTask(查询任务),指定查询图层(url) 设置Query(设置查询

23、条件和返回字段等信息) 执行查询任务(queryTask.execute, 在服务器端执行,可以指定返不返回图形) 处理返回结果并进行显示(返回FeatureSet) 只能对地图中的一个图层进行查询。,QueryTask,需要进行查询的时候我们需要调用QueryTask的execute方法,execute方法的第一个参数就是对查询进行设置的Query对象,在这个Query对象的属性中我们可以设置过滤条件和返回内容。 在Query对象的属性中,geometry属性用于定义空间查询的条件、where 属性用于定义属性查询的条件。 当execute方法被调用,服务器收到请求并进行查询后,服务器会将结

24、果发给ArcGIS Flex API,因此QueryTask对象的executeComplete监听器将会被触发,接下来我们可以在监听的方法中对结果进行处理。,QueryTask,从监听方法的QueryEvent参数中我们可以获得查询返回的所有结果集featureSet,featureSet的features属性中存放了所有查询结果的Graphic对象。 实际上ArcGIS Server查询到结果并输出响应给ArcGIS Flex API的时候,ArcGIS Flex API就自动将这些结果构造成了一个FeatureSet对象,在FeatureSet对象中不仅包含了和查询结果相对应的Graph

25、ic对象,还包含比如几何对象类型、字段别名列表等相关信息。,QueryTask,FindTask,FindTask是在某个地图服务中进行属性查询的功能类。FindTask与QueryTask的使用很类似,QueryTask在execute的时候需要给一个Query对象作为参数,FindTask则是给一个FindParameters对象作为参数。 FindTask的url属性需要指向所查询的地图服务的 URL,而不像QueryTask需要指定子图层的URL。,FindTask,Find与Query过程类似,也分为四步: 设置FindTask(指定要查找的地图服务) 设置FindParameter

26、s(指定查询条件) 执行查询(findTask.execute) 处理返回结果(FindResults) 可以查询单一图层的单一字段,或单一图层的多个字段,多多个图层的多个字段。,FindTask,FindTask指定要查询的地图服务的Url,而不用指向具体的图层 FindParameters对象有一些很重要的属性设置了FindTask执行的过滤条件,contains属性设置是否进行模糊查询、layerIds属性设置了需要查询的子图层、searchFields属性设置了需要查询的字段、searchText属性设置了需要查询的字符串。通过以上的设置,我们就可以从一个地图服务的若干个图层的若干个字

27、段中找到我们需要查询的属性信息了。 需要进行查询的时候我们需要调用FindTask的execute方法。,FindTask,在查询完成以后,FindTask的executeComplete监听器被触发,监听的方法被调用,从它的FindEvent事件中可以获得所有查询到的结果,这个结果是一个Array类型的集合,这个集合的每个对象都有一个feature属性,它就是该结果对应Graphic对象,我们可以直接把这些Graphic对象标注到地图上去。,FindTask,IdentifyTask,IdentifyTask是一个在地图服务中识别要素的功能类。当用户在客户端使用Draw工具绘制了一个几何对象

28、以后,这个几何对象就可以作为IdentifyTask的参数发送到服务器进行识别,满足条件的要素将会被输出到ArcGIS Flex API中,同样,这些要素都可以作为Graphic被添加到地图上。,IdentifyTask,与Find、Query过程类似, IdentifyTask也分为四步: 设置IdentifyTask(指定要识别的图层) IdentifyParameters(指定要识别的参数) 执行识别任务(identifyTask.execute) 处理返回结果(identifyResults) Identify是在一个地图服务的图层上进行识别操作,IdentifyTask,与Query

29、Task和FindTask相仿,IdentifyTask在调用execute方法的时候需要提供的参数是一个IdentifyParameters对象。这个对象最重要的属性是geometry、layerOption和tolerance,geometry属性设置的是用于要素识别的几何对象、layerOption属性设置的要素识别的选项(最顶层还是所有可见图层等)、tolerance属性设置了识别的误差范围(基于屏幕像素)。通过它们的组合,IdentifyTask就可以把满足条件的要素查询出来,并返回给ArcGIS Flex API进行处理。,IdentifyTask,GeometryService,

30、每个ArcGIS Server都可以发布一个几何服务(Geometry Service)用以处理几何对象,比如投影转换、简化对象、缓冲、量测、判断空间关系、计算标注点等功能。ArcGIS Flex API中对应地定义了一个GeometryService功能类来使用几何服务提供的功能。 由于GeometryService提供的功能比较多,因此它实现了很多监听器供不同的功能使用,比如投影转换有projectComplete监听、判断空间关系有relationComplete监听等等。在使用的时候,分别针对不同的功能,调用不同的project方法、relation方法等(与上面的监听对应)。,Geo

31、metryService,GeometryService的功能有: Project :投影转换 buffer : 缓冲 区 areasAndLengths : 量测多边形的面积与周长 Lengths : 量测多段线的长度,Geoprocessor,GP服务是一种高级的空间分析工具,GP服务的制作和发布是通过Gis Server上ModerBuilder来完成的。以服务的方式发布出来工客户端调用 GP服务(Geoprocessing Service)可以使用户能够使用高级的模型功能,ArcGIS Flex API中的Geoprocessor功能类对应的就是GP服务的使用。 Geoprocesso

32、r功能的调用有两种方式:execute方法和submitJob方法,其中execute对应同步调用(synchronous)、submitJob对应异步调用(asynchronous),当你知道一个GP服务是同步还是异步以后,你就知道应该使用execute还是submitJob方法来使用这个GP服务。,Locator,Locator对应使用的是ArcGIS Server发布的地理编码服务(Geocode Service),它可以从地址找到坐标或从坐标找到地址。 Geocode Service包含两个操作:Find address candidates和Reversegeocode,前者从地址找到坐标,后者则可以从坐标找到地址,它们在ArcGIS Flex API中分别对应了Locator功能类的addressToLocations方法和locationToAddress方法。,Com.esri.ags.events中的对象,DrawEvent ExtentEvent: GraphicEvent: FindEvent: QueryEvent: IdentifyEvent:,Com.esri.ags

温馨提示

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

评论

0/150

提交评论