Как показать или скрыть подслои 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
    }
   }
 } 
Другие вопросы по тегам