ArcGIS for iOS 开发系列(7) – 基础篇-图层-动态图层
来源:互联网 发布:2017年十大网络用语 编辑:程序博客网 时间:2024/06/05 11:27
接着上节继续介绍图层...
2 动态图层
与静态图层相反,动态图层(AGSDynamicLayer)获取的数据都是由服务端实时生成的,除了基本信息外,还声明了exportMapImage方法和exportDelegate委托,从对应的地图服务动态获取地图数据,是所有动态服务图层的基类:
图3-2-8 动态图层的继承关系
2.1 动态地图服务图层(AGSDynamicMapServiceLayer)
动态地图服务图层(AGSDynamicMapServiceLayer)对应了动态地图服务,也是ArcGISServer最基本的服务,url结构:http://<server:port>/<instance>/rest/services/<service>/MapServer,以下是图层初始化代码:
NSURL* url = [NSURL URLWithString: @"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/ Specialty/ESRI_StateCityHighway_USA/MapServer"]; NSError *error = nil; //同步获取服务信息的方法,不建议放在主线程中使用。 AGSMapServiceInfo *info = [AGSMapServiceInfo mapServiceInfoWithURL:urlerror:&error]; //确认服务的信息后再初始化动态地图服务图层 ... AGSDynamicMapServiceLayer* layer = [AGSDynamicMapServiceLayerdynamicMapServiceLayerWithMapServiceInfo: info];
2.2 影像服务图层(AGSImageServiceLayer)
影像服务图层(AGSImageServiceLayer)对应了影像服务,是Web动态访问影像数据的最佳选择,url结构:http://<server:port>/<instance>/rest/services/<service>/ImageServer,以下是图层初始化代码:
NSURL* url = [NSURL URLWithString: @"http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Portland/CascadeLandsat/ImageServer"]; AGSImageServiceLayer* layer = [AGSDynamicMapServiceLayerimageServiceLayerWithURL: url]; 此外还提供了一些影像数据特有的属性和方法,如:压缩比、波段组合、镶嵌规则、渲染规则和栅格插值,这里就不一一展开介绍。 //单波段灰度图 NSArray* grayscaleBandIds = [NSArrayarrayWithObject:[NSNumber numberWithInt:0] ]; layer.bandIds = grayscaleBandIds; //Red, Green, Blue多波段组合 NSArray* rgbBandIds = [NSArrayarrayWithObjects:[NSNumber numberWithInt:2], [NSNumber numberWithInt:5],[NSNumber numberWithInt:0], nil ]; layer.bandIds = rgbBandIds;
2.3 WMS服务图层(AGSWMSLayer)
WMS服务图层(AGSWMSLayer)对应了符合OGC WMS1.1\1.1.1\ 1.3标准的网络地图服务,WMS服务是类REST风格,因此可以直接继承AGSDynamicLayer,url结构:http://<server:port>/<instance>/services/<service>/MapServer/WMSServer,以下是图层初始化代码:
NSURL* url = [NSURL URLWithString: @"http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StateCityHighway_USA/MapServer/WMSServer"]; AGSWMSLayer* wmsLayer = [[AGSWMSLayeralloc] initWithURL:url] autorelease];
2.4 图形图层(AGSGraphicLayer)
图形图层(AGSGraphicLayer)比较特殊,不对应任何Service,完全由客户端创建、更新和销毁,是我们响应用户输入、展示查询分析结果的利器。常用的方法包括:addGraphic添加图形,removeGraphic清除图形,dataChanged更新数据等,以下是图层初始化代码:
AGSGraphicsLayer*myGraphicsLayer = [AGSGraphicsLayer graphicsLayer];
在其基础上还衍生出了要素服务图层和草图绘制图层,下面依次进行介绍。
2.5 要素服务图层(AGSFeatureLayer)
要素服务图层(AGSFeatureLayer)对应了要素服务或动态地图服务,要素服务的特点是提供了空间数据编辑能力,包括要素的几何形状、属性和附件。
图3-2-2-9 要素服务图层的继承关系
从功能设计上可以理解为AGSFeatureLayer = AGSQueryTask + AGSGraphicLayer,先从动态服务查询要素,再把结果填充到图形图层中展示,url结构:
http://<server:port>/<instance>/rest/services/<service>/FeatureServer(MapServer)/<layerid>,以下是图层初始化代码:
NSURL* url = [NSURL URLWithString: @"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/0"]; AGSFeatureLayer* featureLayer =[AGSFeatureLayer featureServiceLayerWithURL: url mode:AGSFeatureLayerModeOnDemand];
Mode参数是个枚举值:快照(Snapshot)/按需(On-Demand)/按查询(Selection),其中Snapshot模式会一次性获取所有要素,适合于要素数量少的场景;On-Demand模式按当前视野动态获取要素,适合要素数量多,且更新频率高的场景;Selection模式默认不获取任何要素,按查询条件动态获取。
AGSFeatureLayer常用的操作包括:查询要素(queryDelegate)、过滤显示(selectFeaturesWithQuery)和编辑要素(updateFeatures)。
* AGSFeatureLayer的详细用法将在“在线编辑”里介绍。
2.6 草图编辑图层(AGSSketchGraphicLayer)
草图编辑图层(AGSSketchGraphicLayer)在图形图层基础上对要素的几何编辑操作进行了封装,传承了ArcGIS专业的编辑模式,包括:要素选中,节点拖动,撤销操作、恢复操作、放大镜效果等等。
图3-2-2-10 草图绘制服务图层的继承关系
草图编辑的主要几何对象:
表3-2-1 草图绘制的主要对象
· 节点(Vertex)
· 中点(Mid-point)
· 选中的节点(Selected Vertex)
· 线(Line)
· 面填充(Fill)
使用的一般流程是:创建草图编辑图层-获取要素图形(AGSGraphic对象)-响应触摸操作(点击、长按)-保存图形编辑结果-更新要素图形,以下是图层初始化代码:
AGSSketchGraphicsLayer* sketchLyr =[[[AGSSketchGraphicsLayer alloc] initWithGeometry:nil]autorelease];[self.mapViewaddMapLayer:sketchLyr withName:@"Sketch Layer"];
*AGSSketchGraphicLayer不用不知道,用了都说好:),详细用法将在“在线编辑”里介绍。
- ArcGIS for iOS 开发系列(7) – 基础篇-图层-动态图层
- ArcGIS for iOS 开发系列(6) – 基础篇-图层-动态图层
- 【教程连载】ArcGIS for iOS 开发系列(6) – 基础篇-图层-动态图层
- ArcGIS for iOS 开发系列(6) – 基础篇-图层-静态图层
- ArcGIS for iOS 开发系列(5) – 基础篇-图层-静态图层
- 【教程连载】ArcGIS for iOS 开发系列(5) – 基础篇-图层-静态图层
- ArcGIS Runtime SDK for iOS开发之地图图层-动态地图服务层
- arcgis api for silverlight开发系列之二:缓存图层与动态图层及图层总结
- ArcGIS for IOS 动态图层 分层显示(个人)
- ArcGIS for IOS 动态图层或者图层图例信息(个人)
- arcgis 动态图层
- ArcGIS动态图层
- ArcGIS Runtime SDK for iOS开发地图图层-切片地图服务图层
- ArcGIS Runtime SDK for iOS开发地图图层-影像地图服务图层
- ArcGIS Runtime SDK for iOS开发地图图层-图形图层
- ArcGIS Runtime SDK for iOS移动开发地图图层-草图层
- ArcGIS Runtime for Android开发教程V2.0(5)基础篇---图层
- ArcGIS Runtime for Android开发教程V2.0(5)基础篇---图层
- html5
- 51.黑马程序员-IO流-File类
- PRKP-1037 failed to create cluster database xXX
- Eclipse中配置Java反编译工具
- 人社部报告建议抑制垄断行业薪酬-垄断业-薪酬-抑制
- ArcGIS for iOS 开发系列(7) – 基础篇-图层-动态图层
- ios调试发布出去得软件版本
- 通过并发程序名称,反查所在Menu
- 初学Android,使用Service的音乐播放器(七十二)
- wordpress主循环显示文章方法
- JavaScript monitor hidden input value change
- using System;
- 52.IO流-对象的序列化
- Sqlit3 简单操作