Как показать или скрыть подслои AGSArcGISMapImageLayer
Я только что обновил свой проект с ArcGIS Runtime 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
тогда он возвращает только два объекта или подслоя. Из-за этого я не смог реализовать функцию show hide
Итак, как я должен использовать вышеупомянутый подход ссылки в моем случае? или есть другой способ сделать это?
1 ответ
Просматривая API, я нашел решение, чтобы скрыть или показать слои dynamicMap (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)
}
}
}
Слои скрытия, как это
для i в 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
}
}
}