ArcGIS API for JavaScript介绍
ArcGIS API for JavaScript中的类是按照模块组织的,主要包含esri、esri/geometry、esri/renderers、esri/symbols、esri/symbols、esri/dijit、esri/dijit/editing、esri/layers、esri/tasks、esri/toolbars、esri/virtualearth模块,在开发过程中,使用dojo.require("类名")便可将类引入,除了esri/arcgis/Portal模块,类和模块之间是一对一的关系。按照功能模块分类,ArcGIS API for JavaScript组成如图
实现地图图层功能的主要是Map类、Layer类,Map类是最核心的类,其它控件或多或少的都将Map对象作为其参数,它主要用于呈现地图服务、影像服务等。一个地图对象需要通过一个DIV元素才可以添加到页面中,通常地图控件的宽度和高度是通过DIV容器初始化的。Map对象不仅仅用来承载地图服务和GraphicsLayer同时还可以监听用户在地图上的各种操作事件,并做出响应,Map对象提供了非常丰富的事件,使用这些事件,就可以让地图跟用户随心所欲的去交互。Layer类是图层类,用来添加相关图层,比如WMS服务、热点图(HeatMap)、Bing地图、OpenStreetMap、GeoRSS、KML数据等,其类继承结构如图:
其中,ESRI.ArcGIS.Client.GraphicsLayer是一种客户端图层,用于绘制基于矢量数据的图形,并指定符号进行渲染。DynamicMapServiceLayer为抽象基类,表示动态图层类型。如果想创建自定义的动态图层类型,通过指向在线服务的URL访问动态生成的图片,那么就得实现DynamicMapServiceLayer。ESRI.ArcGIS.Client.Toolkit.DataSources.KmlLayer也是一种GraphicsLayer,其图形几何体由基于XML语法的数据源返回,可以是KML、KMZ或服务。TiledMapServiceLayer为抽象基类,表示切片/缓存地图服务图层。当需要自定义一个切片图层类型,并且缓存图片可以通过简单的URL直接引用时,应考虑实现TiledMapServiceLayer。
实现图形绘制功能主要是Graphic类、Geometry类,Graphic对象表示可以在GraphicsLayer上绘制的图形要素,同时FeatureLayer中的要素、几何服务操作的参数等大多以Graphic对象来表示。Geometry类用于表示要素的图形,如点、多点、多义线、多边形等几何体及几何对象范围等。
实现图形渲染功能的主要是Symbol、Renderer,Symbol用于渲染要素的图形,如点符号、线符号、填充符号等。Renderer渲染器定义了一种或多种符号以应用于一个GraphicsLayer。每个Graphic的符号所使用的符号取决于该Graphic的属性值。Renderer指定了属性值与符号之间的对应关系,主要方法有三种:SimpleRenderer,它是最简单的符号化渲染,对所有要素使用同样的符号;UniqueValueRenderer,使用唯一值符号化渲染,可以为具有特定属性值的Graphic定义符号;以及ClassBreaksRenderer,分级符号化渲染允许为特定属性值范围内的一组图形指定符号。
查询检索功能是通过Task的方式实现的。使用Task需要首先实例化Task对象,注册Task完成、失败的监听事件;然后实例化Task参数对象,为必要属性赋值,发送请求;最后在Task完成事件处理函数中处理返回结果或在Task失败事件处理函数中处理错误信息。查询检索空间数据的方式主要有针对多个图层属性查询查询的FindTask、针对多个图层空间查询IdentifyTask、只针对一个图层QueryTask。
几何操作功能是通过GeometryService对图形几何体的各种操作,如生成缓冲区、图形合并、图形相交、测距、多边形面积和周长测量、投影、空间关系等。调用esri.tasks.GeometryService方法便能够实现操作各种几何体。
在线编辑功能是通过Feature Service客户端可访问要素的图形、属性、附件、关系,实现web编辑的能力。实现在线编辑数据必须存储在ArcSDE然后发布成Feature Service的服务。通过使用Edit接口的.applyEdits方法实现在线编辑便可对数据进行图形编辑、属性编辑、附件编辑。
网络分析功能的实现要求地图服务中包含网络数据集(Network Dataset)并且启用了网络分析能力。通过网络分析可以实现最优路径分析、服务区域分析、临近设施分析。最优路径分析通过路径分析参数RouteParameters(如stop),调用RouteTask.solve()方法实现。服务区域分析通过ServiceAreaParameters,调用serviceAreaTask.solve(params,function(solveResult)方法。临近设施分析通过ClosestFacilityParameters方法,使用closestFacilityTask.solve(params,function(solveResult)分析最邻居设施。
时态展示中主要有TimeSlider控件,用来播放历史变化、查看某个时间点、时间范围的数据状态,同时可使用tasks.Query支持将时间作为输入参数从而实现查询支持,使用renderer.attributeField用于展现数据在不同时间的空间位置变化进行符符号渲染。
地理处理提供数据管理、数据转换和各种数据分析的工具和模型。GP可以实现REST API无法实现的功能,如数据转换/管理、空间分析等。在ArcGIS Server中,通过将GP工具、模型发布为GP服务,客户端API即可以Task方式调用。其有两种执行方式:execute,同步执行,等待结果;submitJob异步执行,通过onJobComplete事件获取执行结果。
Dijit下的Widgets提供多种使用控件,比如Bookmarks、Attribute Inspector、InfoWindow等。
ArcGIS API for JavaScript为用户快速地、简洁地创建交互式WebGIS应用提供了轻量级的解决方案。通过ArcGIS API for Javascript调用相关的方法便能够访问ArcGIS for Server中发布的地图服务其它资源(ArcGIS Online)嵌入到Web应用中进行相关的操作。