浅谈ArcGIS移动开发中的基本变量:MapView、Map、Layers、GraphicsOverlay
一、MapView
MapView,可译为地图视图或地图窗口,顾名思义,是在Android布局中用来显示地图(ArcGISMap)的控件,
允许用户与地图进行交互。它使用了MVC 架构,实现了 Map 和 MapView的分离,可使用Viewpoints控制可视范围,也通过 Touch事件和监听实现与内容的交互,如图层或图形的识别(identify),可参照:ArcGIS Runtime SDK for Android 入门(15):对地图中的图形进行identify交互几何查询 ; ArcGIS Runtime SDK for Android 入门(16):对地图中的图层进行identify交互几何查询
二、Map
Map,编程中即ArcGISMap,可译为地图对象,主要用来承载地图数据,ArcGISMap包含制图数据图层以及其它能够定义地图信息的数据(例如basemaps底图、popups弹出窗口、renderer渲染器、labels标签等)。它可以在MapView中可视化,也可以单独使用来访问数据。
ArcGISMap可以包含一个Basemap底图和一个或多个operational layers操作图层:
(1)Basemap底图是帮助用户进行地图定位的图层。通常,它位于操作图层的后面,用于显示道路和边界,为操作图层提供环境。Basemaps还可以包含绘制在顶层操作图层(如label layers标签层)上的图层。
(2)operational layers操作图层提供对于用程序和任务具有独特兴趣点的内容,例如有关地震、交通或天气的数据。其内容可能经常变化。
MapView与Map的联系:
在MVC架构中,ArcGISMap表示模型,MapView表示视图。ArcGISMap指定地理数据的组织方式,MapView在屏幕上呈现数据并允许用户与其交互。
三、Layer
Layer,译为图层,即将空间信息按其几何特征及属性划分成的数据专题组,在ArcGIS移动开发中,Layer为一个抽象类。ArcGIS Runtime SDK for Android中提供了各种相应的图层来加载在线数据,常见类型如下图:
(1)RasterLayer:栅格图层,用来显示Raster栅格数据的图层。
(2)ArcGISMapImageLayer:表示一个由动态地图服务创建的,包含一个或多个子图层的图层,由ArcGISMapImageLayer调用的地图服务可以从源数据中动态呈现地图影像,并能够呈现应用服务中指定的信息。动态图层由服务器即时生成图片返回,而没有预先缓存。根据用户请求,计算,即时生成。数据更新及时,但速度较慢。
(3)ArcGISTiledLayer:表示一个允许使用预生成的Tiles切片显示来自ArcGIS地图服务数据的图层。切片图层就是静态图层,服务器可以先切好,或者利用缓存预先切好。目的就是快速显示。
(4)ArcGISVectorTiledLayer:表示一个允许你能够从矢量切片服务、矢量切片样式表、本地矢量切片包(VTPK)中进行数据显示的图层。加载方式见:ArcGIS Runtime SDK for Android 入门(4):显示矢量切片(VTPK)图层
(5)FeatureLayer:要素图层,表示一个由Feature要素组成的图层,要素图层中的要素由geometry几何形状和一组连续的fields字段构成。
(6)MobileBasemapLayer:表示一个在移动地图包中的移动地图的矢量地图图层。
(7)ArcGISScenLayer:场景图层,能够显示在scene service场景服务中发布的三维要素。
四、GraphicsOverlay
可译为图形覆盖(物),用于容纳要显示在MapView上的临时图形,如查询或分析的结果,高亮,变化的事物、绘制的图形等,GraphicsOverlay由Graphic图形组成,因此也可看做Graphic图形的列表,Graphic图形包含几何、属性和符号。GraphicsOverlay分为静态和动态两种渲染模式,可通过Renderer进行渲染。
五、总结
MapView、Map、Layer、GraphicOverlay四者的关系可总结为如下图所示