ios - 如何显示或隐藏 AGSArcGISMapImageLayer 子图层
问题描述
我刚刚将我的项目从arcgis 运行时 10.2 升级到 100.2.1,我能够运行 AGSFeature 图层,但AGSArcGISMapImageLayer出现问题
我只是加载包含子图层的AGSArcGISMapImageLayer图层并像这样获取它们的数据
let mapServiceInfo = (dynamicMapServiceLayer as? AGSArcGISMapImageLayer).mapServiceInfo
if let layerInfos = mapServiceInfo?.layerInfos {
for layerInfo in layerInfos {
//get the sublayer data
}
}
现在我只是根据用户要求显示和隐藏图层
为此,我检查了此 arcgis 链接:-显示隐藏图像层的链接
但是,在使用上述程序获取子层数据的同时,它给了我 10 个子层数据
但是根据我使用该方法时的链接
dynamicMapServiceLayer.mapImageSublayers.count
然后它只返回两个对象或子层 因此我无法实现显示隐藏功能
那么在我的情况下我应该如何使用上述链接方法?还是有其他方法可以做到这一点?
解决方案
通过搜索 api,我找到了隐藏或显示动态地图图层的解决方案(AGSArcGISMapImageLayer)
**layersHidden** is an array which contain the url of layers which I want to hide from map
let mapServiceInfo = dynamicMapServiceLayer?.mapServiceInfo
let layerInfos = mapServiceInfo?.layerInfos
for layerInfo in layerInfos {
if layerInfo.sublayerIDs.count == 0 {
// Get the url for the layer.
let layerUrl = "\(mapServiceInfo?.url?.absoluteString ?? "")/\(UInt(layerInfo.id))"
// add the name of layers which we want to hide from map in visibleLayers array
if layersHidden.contains(layerUrl) {
visibleLayers.append(layerInfo.name)
}
}
}
像这样的隐藏层
对于我在 0...((dynamicMapServiceLayer?.mapImageSublayers.count)!-1) { let layer = dynamicMapServiceLayer?.mapImageSublayers[i] as!AGSArcGISMapImageSublayer
for subLayer in layer.subLayerContents {
if visibleLayers.contains(subLayer.name) {
subLayer.isVisible = false
}
else {
subLayer.isVisible = true
}
}
}
推荐阅读
- reactjs - 如何使用 Storybook AddOns optionsKnob 解析值
- css - 使用css滚动快照获得两列粘性
- javascript - 可以授予对我的 Amazon S3 存储桶中某些对象的公共读取访问权限吗?
- react-native - React Navigation v5:屏幕过渡动画
- multithreading - kotlin协程和asyncTask类和multiThread有什么区别
- javascript - 将点击功能从 更改为
- java - 当查询方法的同一字段名称中有两个连续的大写字母时,spring jpa无法找到该字段
- jenkins - 在 Github PR 中显示 Jenkins 构建的实时状态
- html - 使 HTML/CSS 中的动画更流畅
- firebase - Angularfire snapshotChanges() vs Firestore javscript 库 onSnapshot()