`
mywebcode
  • 浏览: 995180 次
文章分类
社区版块
存档分类
最新评论

ArcGIS API For IOS 实现图层显示控制

 
阅读更多

ArcGIS API For IOS 实现图层显示控制分两个粒度,分别是服务的显示控制,然后是图层的显示控制。

1)服务的显示控制

服务的显示控制用AGSMapView Class实现。每个UIViewController界面如果加载地图都会有一个AGSMapView对象实例,那么设置这个AGSMapView 实例的hidden=TRUE;
比如:
AGSTiledMapServiceLayer *tiledLayer = [[AGSTiledMapServiceLayer alloc] initWithURL:[NSURL URLWithString:kTiledEMapZoneMapService<wbr>URL ]];<br> UIView *emapzoneTiledMap = [self.mapView addMapLayer:tiledLayer withName:@"Tiled Layer"];<br> emapzoneTiledMap.hidden = NO;</wbr>
<wbr></wbr>
2)地图视图上服务的显示控制
单个地图服务的显示控制用AGSDynamicLayerView或AGSTiledLayerView实现,比如:
NSDictionary *dict=self.mapView.mapLayerViews;
NSArray *arr=[dict allValues];
for (int i = 0; i < [arr count]; i++) {
<wbr><wbr>AGSDynamicLayerView *mapLayerView=[arr objectAtIndex:i];<br><wbr><wbr>if (显示控制条件) {<br><wbr><wbr>mapLayerView.hidden=TRUE;<br><wbr><wbr>}<br> }<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
3)单个服务内有多个图层的显示控制
NSURL* url = [NSURL URLWithString: @"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer"];AGSDynamicMapServiceLaye<wbr>r* layer = [AGSDynamicMapServiceLaye<wbr>r dynamicMapServiceLayerWi<wbr>thURL: url];<br> //<span style="color:red">only display ‘ushigh’ (id=0) and ‘states’ (id=1) layer<br></span>layer.visibleLayers = [NSArray arrayWithObjects:[NSNumber numberWithInt:0],[NSNumber numberWithInt:1], nil];<br> 通过设置visibleLayers 来确定图层是否可见。<br><br> 4) 小结</wbr></wbr></wbr>

对象模型图如下:

<wbr></wbr>

实际上AGSMapView 、AGSLayerView对象都是UIView的子类,所以最终控制的是UIView是否可见。这样通过设置UIView是否隐藏来进行图层显示的控制。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics