element 点击控制expend的显示隐藏_四、ArcGIS Runtime SDK for iOS 100.X教程系列之图层控制显示隐藏...

本文介绍如何使用ArcGIS动态图层服务控制特定图层的显示与隐藏,并提供了iOS平台上的具体实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个图层服务上多个图层时,结合服务的链接地址访问查看详细信息进行代码编写会更方便,形如以下这个arcgis服务:

http://arcgis.wuhanrt.cn:6080/arcgis/rest/services/Base/DLG/MapServer

一般会用到arcgis服务的企业,其数据或多或少是涉密的,所以这里仅提供一个图层截图以供参考:

8be84eb515649bc87d9f9ebae16686ca.png
动态图层服务数据结构

​​ 参照这个信息来进行图层控制再方便不过了,iOS控制代码也很简单,如下(比如只显示范围线):

//加载动态图层,一般该图层拿来展示元素以供展示管线数据、管控数据等,还有查询等用途
    AGSArcGISMapImageLayer *dynamicLayer = [AGSArcGISMapImageLayer ArcGISMapImageLayerWithURL:[NSURL URLWithString:@"http://地址及端口号/arcgis/rest/services/CJXCMap/CJXCMapService/MapServer"]];
    [self.map.operationalLayers addObject:dynamicLayer];
    [dynamicLayer loadWithCompletion:^(NSError * _Nullable error) {
        if (!error) {
            //获取子图层
            for (AGSArcGISMapImageSublayer *subLayer in dynamicLayer.mapImageSublayers) {
                if (subLayer.sublayerID != 14) {
                    //控制隐藏或者显示
                    [subLayer setVisible:NO];
                }
            }
        }
    }];

可能是100.X还没写好,明明AGSArcGISMapImageSublayer类有个sublayers属性,但是一旦调用就会造成死循环,项目闪退,因此,多个元素图层层级的需要迂回获取,代码如下:

[dynamicLayer loadWithCompletion:^(NSError * _Nullable error) {
        if (!error) {
            //获取子图层
            for (AGSArcGISMapImageSublayer *subLayer in dynamicLayer.mapImageSublayers) {
                NSLog(@"所有图层id:%@",@(subLayer.sublayerID));//第一层级元素图层
                for (id<AGSLayerContent>subSubLayer in subLayer.subLayerContents) {
                    if ([subLayer isKindOfClass:[AGSArcGISSublayer class]]) {
                        AGSArcGISSublayer *subSubGisLayer = (AGSArcGISSublayer *)subSubLayer;
                        NSLog(@"所有子图层id:%@",@(subSubGisLayer.sublayerID));//第二层级元素图层
                        [subSubGisLayer setVisible:NO];//控制显示隐藏
                    }
                }
            }
        }
    }];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值