Repost of "Sample Map Viewer 1.3 Base Map Switcher Buttons"

3250
2
09-20-2010 05:25 AM
JoshCalhoun
Emerging Contributor
Ok, this is a repost from the one down below(view link). I have a new problem (see below link). I would like to share and hopefully get help with it. Any help you all can give me will be greatly appreciated.

post below.


Ok,,, I was able to toggle between two maps with no problem but now my boss wants three maps to toggle between. I tried adding a third map and I used a case statement to switch between maps. Now I can not switch any map and the map I had at the bottom of the list shows up in the map. I can still switch maps in the "menumap" menu but I can not toggle back and fourth between maps. Below is my code.



<mx:Application xmlns:mx   ="http://www.adobe.com/2006/mxml"
             xmlns    ="com.esri.solutions.flexviewer.*"
             layout    ="absolute"
             applicationComplete ="registerGlobalKeyHandler()"
             styleName   ="plain"
             backgroundColor  ="#6E6E6E"
             >

<!--
/**
* The site container has six major components:
*  - ConfigManager: loads configuration file (config.xml), parse it and submit to event bus.
*  - Controller   : holds branding UI elements and application navigation items such as menus.
*  - DataManager  : manages data generated during a user session.
*  - WidgetManager: manages widgets during the user session.
*  - MapManager   : manages map(s) such as base map and live maps used during the user session.
*/
-->

<mx:Script>
  <![CDATA[
 
   import com.esri.solutions.flexviewer.AppEvent;
   import com.esri.ags.layers.Layer; 
   import mx.managers.IDragManager;
   import mx.managers.HistoryManager;
  
   private var iDragManager:IDragManager;
   private var hist:HistoryManager;
  
   private function registerGlobalKeyHandler() :void
   {
    stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
   
   }
  
 
   private function handleKeyDown(event:KeyboardEvent) :void
   {
    if ((event.shiftKey) && (event.keyCode == 27))
    {
     SiteContainer.dispatchEvent(new AppEvent(AppEvent.SET_MAP_NAVIGATION, false, false, null));
    }
   }
  
     
      private function setBasemap(basemap:String):void
   {
    var lyr:Layer = SiteContainer.getInstance().controller.map.getLayer("Leaf Collection Map");
    var lyr2:Layer = SiteContainer.getInstance().controller.map.getLayer("Recycle Collection Map");
    var lyr3:Layer = SiteContainer.getInstance().controller.map.getLayer("Garbage Collection Map");
    switch(basemap)
     {
      case lyr:Layer:
       {
       lyr.visible = true;
       lyr2.visible = false;
       lyr3.visible = false;
       break;
       }
    
    
      case lyr2:Layer:
       {
       lyr.visible = false;
       lyr2.visible = true;
       lyr3.visible = false;
       break;
       }
    
    
      case lyr3:Layer:
       {
       lyr.visible = false;
       lyr2.visible = false;
       lyr3.visible = true;
       break;
       }
     }
   }

  ]]>
</mx:Script>

<SiteContainer id="container">
    <configManager> <ConfigManager/> </configManager>
       <uiManager>     <UIManager/>     </uiManager>
       <controller>    <Controller x="20" y="20"/>    </controller>
       <dataManager>   <DataManager/>   </dataManager>
       <widgetManager> <WidgetManagerDocked/> </widgetManager>

       <mapManager>  <MapManager/> </mapManager>
</SiteContainer>

<mx:HBox left="500" top="5">
  <mx:Button id="map1Button" label="Leaf Collection Map" click="setBasemap('Leaf Collection Map')"  labelPlacement="left" width="261" fontSize="17">
   <mx:icon>@Embed(source='com/esri/solutions/flexviewer/assets/images/icons/fall_leaf.png')</mx:icon>
  </mx:Button>
  <mx:Button id="map2Button" label="Recycle Collection Map" click="setBasemap('Recycle Collection Map')" />
  <mx:Button id="map3Button" label="Garbage Collection Map" click="setBasemap('Garbage Collection Map')" />
</mx:HBox>





</mx:Application>
Tags (2)
0 Kudos
2 Replies
RobertScheitlin__GISP
MVP Emeritus
Josh,

  Same as I replied to the other post.

private function setBasemap(basemap:String):void
            {
                var lyr:Layer = SiteContainer.getInstance().controller.map.getLayer("Leaf Collection Map");
                var lyr2:Layer = SiteContainer.getInstance().controller.map.getLayer("Recycle Collection Map");
                var lyr3:Layer = SiteContainer.getInstance().controller.map.getLayer("Garbage Collection Map");
                switch(basemap)
                {
                    case "Leaf Collection Map":
                    {
                        lyr.visible = true;
                        lyr2.visible = false;
                        lyr3.visible = false;
                        break;
                    }
                    case "Recycle Collection Map":
                    {
                        lyr.visible = false;
                        lyr2.visible = true;
                        lyr3.visible = false;
                        break;
                    }
                    case "Garbage Collection Map":
                    {
                        lyr.visible = false;
                        lyr2.visible = false;
                        lyr3.visible = true;
                        break;
                    }
                }
            }
0 Kudos
JoshCalhoun
Emerging Contributor
Robert,

Thanks for your help. That worked perfectly.

thanks a bunch.

One question though. What does one have to do to become a forums MVP?



Josh Calhoun
GIS Technician
City of Chattanooga Public Works GIS.
0 Kudos