How to know which layers are currently visible

502
1
Jump to solution
04-25-2014 10:52 AM
EzequiasRodrigues_da_Rocha
New Contributor III
Hi

I am wondering if it is possible to retrieve the current information of visible layers.

I have found many samples but all relating to what is defined on the map service.

My idea is to retrieve with layers are checked as visible at a certain moment in the application.

I tried lately to add a event listener but I didn't have any success.

AppEvent.addListener(AppEvent.MAP_LAYER_VISIBLE, mapLayerVisibleHandler);

Regards
Ezequias Rocha
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
EzequiasRodrigues_da_Rocha
New Contributor III
Solution

private var _displayLayers:ArrayCollection = new ArrayCollection();

private function loadConfig():void{
_displayLayers.removeAll();
_displayLayers.addAll(getVisibleLayers());
----


private function getVisibleLayers():ArrayCollection
  {
   var layers:ArrayCollection = new ArrayCollection();
   var mapServices:Array = getServices();
   
   var tempLayer:Object;
  for each(var mapService:ArcGISDynamicMapServiceLayer in mapServices)
  {
   if (mapService is ArcGISDynamicMapServiceLayer)
    if (mapService && mapService.visible)
    {
     if (mapService.visibleLayers)
     {            
      for(var i:int = 0; i < mapService.visibleLayers.length; i++)
      {              tempLayer = new Object();
       tempLayer.index = mapService.visibleLayers.getItemAt(i);
       tempLayer.service = mapService.id;
       tempLayer.url = mapService.url; 
       tempLayer.layer = mapService.name;
       
       layers.addItem(tempLayer);        
      }
     }
    }
  }
  
  return layers;
}

View solution in original post

0 Kudos
1 Reply
EzequiasRodrigues_da_Rocha
New Contributor III
Solution

private var _displayLayers:ArrayCollection = new ArrayCollection();

private function loadConfig():void{
_displayLayers.removeAll();
_displayLayers.addAll(getVisibleLayers());
----


private function getVisibleLayers():ArrayCollection
  {
   var layers:ArrayCollection = new ArrayCollection();
   var mapServices:Array = getServices();
   
   var tempLayer:Object;
  for each(var mapService:ArcGISDynamicMapServiceLayer in mapServices)
  {
   if (mapService is ArcGISDynamicMapServiceLayer)
    if (mapService && mapService.visible)
    {
     if (mapService.visibleLayers)
     {            
      for(var i:int = 0; i < mapService.visibleLayers.length; i++)
      {              tempLayer = new Object();
       tempLayer.index = mapService.visibleLayers.getItemAt(i);
       tempLayer.service = mapService.id;
       tempLayer.url = mapService.url; 
       tempLayer.layer = mapService.name;
       
       layers.addItem(tempLayer);        
      }
     }
    }
  }
  
  return layers;
}
0 Kudos