我们会看到ArcGIS中发布的图层不止有底图,还会有要素图层服务。那我们该如何加载要素图层服务呢,这里我们会讲解如何加载要素图层服务,对要素图层服务中的要素项进行筛选展示等等。
我们这边主要的讲解是iOS端这边是如何处理,具体的服务端发布图层服务的过程详见:
https://www.jianshu.com/p/30be7f1b0b80
PC端的过程我们就不详细说明了,由客户端成功获取了要素图层服务地址后:
1.加载要素图层服务
在我们第二章创建的AGSMapView子类中初始化底层服务
使用的
NSURL *elementMapURL = [NSURL URLWithString:@"要素图层服务地址"];
self.elementMapLayer = [AGSDynamicMapServiceLayer dynamicMapServiceLayerWithURL:elementMapURL];
self.elementMapLayer.imageFormat = AGSImageFormatJPGPNG;
[self insertMapLayer:self.elementMapLayer withName:@"MAP_ELEMENT_NAME" atIndex:1];
直接将要素图层服务加载到底图上,就可以看到一个完整的带底图的图层服务
image.png
可以看到要素图层被覆盖在底图上。
2.对要素图层服务的子图层进行选择展示
发布的要素图层服务后可以通过直接在浏览器中打开,查看该图层服务的具体情况:
image.png
类似以上的AGSDynamicMapServiceLayer图层 下有六个子图层服务。子图层的名字后面的数字即是对应的layerId,将对应的图层layerId,传入以下代码即可展示对应的图层服务
AGSDynamicMapServiceLayer *elementMapLayer = (AGSDynamicMapServiceLayer *)[self mapLayerForName:@"MAP_ELEMENT_NAME"];
resourceMapLayer.visibleLayers = [NSArray arrayWithArray:@[@0,@1,@2,@3];
[resourceMapLayer refresh];
AGSMapView 可以通过 mapLayerForName:MAPNAME 直接获取对应的图层服务
3.对要素图层服务的子图层进行筛选
在发布要素图层服务时,可以选择要素的属性项,发布成功后即可在对应子图层的链接中查找到要素子图层的属性项。按照指定的信息可以对要素子图层的属性项进行筛选展示
image.png例如:
我发布的子图层服务里有一些周边商店信息,我需要对筛选周边商店为: 911 的店面,
需要使用到AGSLayerDefinition这个对象
注: 所发布的图层服务中需要有对应的属性信息
// layerId 为对应的子图层id
NSString *definitionString = [NSString stringWithFormat:@"STORENAME = %@",@”911“];
AGSLayerDefinition *definition = [AGSLayerDefinition layerDefinitionWithLayerId:layerid definition:definitionString];
AGSDynamicMapServiceLayer *resourceMapLayer = (AGSDynamicMapServiceLayer *)[self.mapView mapLayerForName:@"MAP_ELEMENT_NAME"];
resourceMapLayer.layerDefinitions = [NSArray arrayWithArray:definitions];
[resourceMapLayer refresh];
网友评论