Adi, All of this code was for older versions of the viewer... In the Flex Viewer now all you have to do to combine two base maps is to give them identical labels in the main config.from: http://help.arcgis.com/en/webapps/flexviewer/help/index.html#/Main_configuration_file/01m300000018000000/
Using basemaps and operational layers <basemaps> - List of map services used as a base map in the Viewer. Only one base map can be visible at a time, but a base map can consist of more than one layer. To create hybrid base map, set the name property to be the same on all the layers in the basemaps group that should make up the hybrid base map. When multiple map services are listed in <basemaps>, the Map Switcher widget can be used to enable end users to switch between them. <basemaps> has one child tag that can be repeated multiple times: <layer> - This is a map service displayed as a layer in the Viewer. See Layer tag topic for information on its attributes.
Justin, Here is what needs to be done for FlexViewer 2.xMapManager.mxml is the only file to be changed and two functions need to be altered.This code is developed for combining two basemap layers called "Places" and "Aerial": //basemap menu clicked private function basemapMenuClicked(event:AppEvent):void { var id:String = event.data as String; var configBasemaps:Array = configData.basemaps; if (id) { var BaseMapChoosen:String = ""; var lyrNames:Layer = map.getLayer("Places"); for (var i:Number = 0; i < configBasemaps.length; i++) { var label:String = configBasemaps.label; var lyr:Layer = map.getLayer(label); if (lyr != null) { if (configBasemaps.id == id) { lyr.visible = true; BaseMapChoosen = configBasemaps.label } else { lyr.visible = false; } if(lyrNames){ if(BaseMapChoosen == "Aerial") { lyrNames.visible = true; }else{ lyrNames.visible = false; } } } } } } private function configBasemaps():void { var i:int = 0; for (i = 0; i < configData.basemaps.length; i++) { if (i == configData.basemaps.length - 1) { map.addEventListener(MapEvent.LAYER_ADD, layerloadComplete); } addLayerToMap(configData.basemaps, false); } // remove the excluded basemaps var shownBaseMaps:Array = configData.basemaps.slice(); for (var n:Number = 0; n < shownBaseMaps.length; n++) { if (shownBaseMaps.label == "Places") shownBaseMaps.splice(n, 1); } configData.basemaps = shownBaseMaps; }
//basemap menu clicked private function basemapMenuClicked(event:AppEvent):void { var id:String = event.data as String; var configBasemaps:Array = configData.basemaps; if (id) { var BaseMapChoosen:String = ""; var lyrNames:Layer = map.getLayer("Places"); for (var i:Number = 0; i < configBasemaps.length; i++) { var label:String = configBasemaps.label; var lyr:Layer = map.getLayer(label); if (lyr != null) { if (configBasemaps.id == id) { lyr.visible = true; BaseMapChoosen = configBasemaps.label } else { lyr.visible = false; } if(lyrNames){ if(BaseMapChoosen == "Aerial") { lyrNames.visible = true; }else{ lyrNames.visible = false; } } } } } } private function configBasemaps():void { var i:int = 0; for (i = 0; i < configData.basemaps.length; i++) { if (i == configData.basemaps.length - 1) { map.addEventListener(MapEvent.LAYER_ADD, layerloadComplete); } addLayerToMap(configData.basemaps, false); } // remove the excluded basemaps var shownBaseMaps:Array = configData.basemaps.slice(); for (var n:Number = 0; n < shownBaseMaps.length; n++) { if (shownBaseMaps.label == "Places") shownBaseMaps.splice(n, 1); } configData.basemaps = shownBaseMaps; }
private function configBasemaps():void { var i:int = 0; for (i = 0; i < configData.basemaps.length; i++) { if (i == configData.basemaps.length - 1) { map.addEventListener(MapEvent.LAYER_ADD, layerloadComplete); } addLayerToMap(configData.basemaps, false); } // remove the excluded basemaps var excludeBaseMaps:Array = ["Footprint Boundaries","Imagery Boundaries"]; var shownBaseMaps:Array = configData.basemaps.slice(); for (var n:Number = 0; n < shownBaseMaps.length; n++) { for (var j:Number = 0; j < excludeBaseMaps.length; j++) { if (shownBaseMaps.label == excludeBaseMaps) { shownBaseMaps.splice(n, 1); } } } configData.basemaps = shownBaseMaps; }
if (shownBaseMaps.label == "Footprint Boundaries") shownBaseMaps.splice(n, 1);
if (shownBaseMaps.label == "Footprint Boundaries"|| shownBaseMaps.label== "Imagery Boundaries") shownBaseMaps.splice(n, 1);
if (shownBaseMaps.label == "Footprint Boundaries" || shownBaseMaps.label == "your other layer")
private function basemapMenuClicked(event:AppEvent):void { var id:String = event.data as String; var configBasemaps:Array = configData.basemaps; if(id) { var BaseMapChoosen:String = ""; var lyrNames:Layer =map.getLayer("Footprint Boundaries") } for (var i:Number = 0; i < configBasemaps.length; i++) { var label:String = configBasemaps.label; var lyr:Layer = map.getLayer(label); if (lyr != null) { if (configBasemaps.id == id) { lyr.visible = true; BaseMapChoosen = configBasemaps.label } else { lyr.visible = false; } if(lyrNames){ if(BaseMapChoosen == "SPP Footprint") { lyrNames.visible = true; }else{ lyrNames.visible= false; } } } } if(id) { var BaseMapChoosen:String = ""; var lyrNames:Layer =map.getLayer("Imagery Boundaries") } for (var i:Number = 0; i < configBasemaps.length; i++) { var label:String = configBasemaps.label; var lyr:Layer = map.getLayer(label); if (lyr != null) { if (configBasemaps.id == id) { lyr.visible = true; BaseMapChoosen = configBasemaps.label } else { lyr.visible = false; } if(lyrNames){ if(BaseMapChoosen == "Aerial") { lyrNames.visible = true; }else{ lyrNames.visible= false; } } } } } private function configBasemaps():void { var i:int = 0; for (i = 0; i < configData.basemaps.length; i++) { if (i == configData.basemaps.length - 1) { map.addEventListener(MapEvent.LAYER_ADD, layerloadComplete); } addLayerToMap(configData.basemaps, false); } // remove the excluded basemaps var shownBaseMaps:Array = configData.basemaps.slice(); for (var n:Number = 0; n < shownBaseMaps.length; n++) { if (shownBaseMaps.label == "Footprint Boundaries") shownBaseMaps.splice(n, 1); } configData.basemaps = shownBaseMaps; }
var configMap:Array = []; var maplayerList:XMLList = configXML.map.basemaps.mapservice; basemapGroup = configXML.map.basemaps.@group; if (maplayerList.length() < 1) { maplayerList = configXML.map.basemaps.layer; } for (i = 0; i < maplayerList.length(); i++) if(maplayerList.@label != "Places") { { configMap.push(getLayerObject(maplayerList, i, false, bingKey)); } } configData.basemaps = configMap;
<basemaps menu="menuMap"> <mapservice label="Street Map" type="tiled" visible="true" alpha="1" icon="com/esri/solutions/flexviewer/assets/images/icons/i_highway.png">http://10.2.8.73/ArcGIS/rest/services/Base_Map/Streets_Map/MapServer</mapservice> <mapservice label="Imagery" type="dynamic" visible="false" alpha="1" icon="com/esri/solutions/flexviewer/assets/images/icons/i_shuttle.png">http://10.2.8.73/ArcGIS/rest/services/Base_Map/Imagery/MapServer</mapservice> <mapservice label="Imagery Streets" type="tiled" visible="false" alpha=".5" icon="com/esri/solutions/flexviewer/assets/images/icons/i_shuttle.png">http://10.2.8.73/ArcGIS/rest/services/Base_Map/Imagery_Street_Map/MapServer</mapservice> <mapservice label="Labels" type="tiled" visible="false" alpha="1" icon="com/esri/solutions/flexviewer/assets/images/icons/i_shuttle.png">http://10.2.8.73/ArcGIS/rest/services/Base_Map/Labels/MapServer</mapservice> </basemaps>
private function basemapMenuClicked(event:AppEvent):void { var id:String = event.data as String; var configBasemaps:Array = configData.configBasemaps; for (var i:Number = 0; i < configBasemaps.length; i++) { var label:String = configBasemaps.label; var lyr:Layer = map.getLayer(label); if (lyr != null) { if (configBasemaps.id == id) { lyr.visible = true; } else { lyr.visible = false; } } var lyrNames:Layer = map.getLayer("Labels"); if (id == "1") { lyrNames.visible = true; } else { lyrNames.visible = false; } var lyrNames2:Layer = map.getLayer("Imagery Streets"); if (id == "1") { lyrNames2.visible = true; } else { lyrNames2.visible = false; } } }
private function getBasemapMenuItems(xmlList:XMLList):Array { var menuItems:Array = []; if (xmlList.length() > 1){ for (var i:int = 0; i < xmlList.length(); i++){ if(xmlList.@label != "Labels" && xmlList.@label != "Imagery Streets"){ //if(xmlList.@label != "Labels"){ var itemLabel:String = xmlList.@label; var itemIcon:String = xmlList.@icon; var itemValue:String = i.toString(); var menuItem:Object = { id: i, label: itemLabel, icon: itemIcon, value: itemValue, action: "basemap" } menuItems.push(menuItem); } } } return menuItems; }
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.