/// <summary> /// Toggle the visibility of a feature layer in an ArcGIS Dynamic Map Service Layer /// </summary> private void OnToggleFeatureLayer(object sender, RoutedEventArgs e) { HideConextMenu(); TOCNodeInfo nodeInfo = null; TreeViewItem treeNode = null; if (sender is CheckBox) { CheckBox checkBox = sender as CheckBox; treeNode = checkBox.Tag as TreeViewItem; nodeInfo = treeNode.Tag as TOCNodeInfo; } else if (sender is RadioButton) { RadioButton radioBox = sender as RadioButton; treeNode = radioBox.Tag as TreeViewItem; nodeInfo = treeNode.Tag as TOCNodeInfo; } if (treeNode != null && nodeInfo != null) { TreeViewItem mapNode = GetMapLayerNode(treeNode); ArcGISDynamicMapServiceLayer dynamicLayer = this.MapControl.Layers[nodeInfo.MapID] as ArcGISDynamicMapServiceLayer; int[] oldVisibles = (int[])dynamicLayer.VisibleLayers.Clone(); List <int> visLayers = new List <int>(); GetVisibleLayerIDs(mapNode, visLayers); dynamicLayer.VisibleLayers = visLayers.ToArray(); EventCenter.DispatchMapLayerVisibilityChangeEvent(this, new MapLayerVisibilityChangeEventArgs(dynamicLayer, oldVisibles)); } }
/// <summary> /// Toggle the Visibilities of a Group of Layers /// </summary> private void MenuItemToggleGroup_Click(object sender, MenuItemClickEventArgs e) { if (e.ItemTag is TreeViewItem) { bool show = (sender == MenuItemShowAll); TreeViewItem treeItem = e.ItemTag as TreeViewItem; ToggleChildNodes(treeItem, show); string mapID = ""; bool isMapNode = false; TreeViewItem mapLayerNode = null; if (treeItem.Tag is LivingMapLayer) { mapID = (treeItem.Tag as LivingMapLayer).ID; mapLayerNode = treeItem; isMapNode = true; } else if (treeItem.Tag is TOCNodeInfo) { mapID = (treeItem.Tag as TOCNodeInfo).MapID; mapLayerNode = GetMapLayerNode(treeItem); } if (treeItem.Header is CheckBox) { (treeItem.Header as CheckBox).IsChecked = show; } else if (treeItem.Header is RadioButton) { (treeItem.Header as RadioButton).IsChecked = show; } if (mapID != "") { ArcGISDynamicMapServiceLayer dynamicMap = this.MapControl.Layers[mapID] as ArcGISDynamicMapServiceLayer; int[] oldVisibles = (int[])dynamicMap.VisibleLayers.Clone(); List <int> layerIDs = new List <int>(); GetVisibleLayerIDs(mapLayerNode, layerIDs); dynamicMap.VisibleLayers = layerIDs.ToArray(); if (isMapNode) { dynamicMap.Visible = show; } EventCenter.DispatchMapLayerVisibilityChangeEvent(this, new MapLayerVisibilityChangeEventArgs(dynamicMap, oldVisibles)); } HideConextMenu(); } }
/// <summary> /// Toggle the visibility of an ArcGIS Map Service Layer (Living Maps) /// </summary> private void OnToggleMapLayer(object sender, RoutedEventArgs e) { HideConextMenu(); if (sender is CheckBox) { CheckBox check = sender as CheckBox; LivingMapLayer mapConfig = (check.Tag as TreeViewItem).Tag as LivingMapLayer; Layer theLayer = this.MapControl.Layers[mapConfig.ID] as Layer; if (theLayer != null) { theLayer.Visible = check.IsChecked.Value; EventCenter.DispatchMapLayerVisibilityChangeEvent(this, new MapLayerVisibilityChangeEventArgs(theLayer)); } } }
private void OnLegendInfoSucceed(LayerLegendInfo legendInfo, TreeViewItem mapTreeNode) { layerCount++; // Count Legend-Initialized LivingMap if (mapTreeNode != null && mapTreeNode.Tag != null) { LivingMapLayer mapConfig = mapTreeNode.Tag as LivingMapLayer; if (legendInfo.LayerLegendInfos != null) { if (this.MapControl.Layers[mapConfig.ID] is ArcGISDynamicMapServiceLayer) { ArcGISDynamicMapServiceLayer dynamicLayer = this.MapControl.Layers[mapConfig.ID] as ArcGISDynamicMapServiceLayer; List <int> layerIDs = GetDynamicMapLayerIDs(mapConfig, dynamicLayer.Layers); List <int> visibleLayerIDs = new List <int>(); CreateDynamicLayerTree(mapConfig.ID, legendInfo, mapTreeNode, dynamicLayer.Layers, layerIDs, visibleLayerIDs, mapConfig.ToggleLayer, true); // Initialize map visibilities dynamicLayer.VisibleLayers = visibleLayerIDs.ToArray(); EventCenter.DispatchMapLayerVisibilityChangeEvent(this, new MapLayerVisibilityChangeEventArgs(dynamicLayer, new int[0])); } else { CreateCachedLayerTree(mapConfig.ID, legendInfo, mapTreeNode); } } else if (legendInfo.LegendItemInfos != null) // Feature Layer { mapTreeNode.ItemTemplate = this.Resources["SymbolTreeNode"] as DataTemplate; mapTreeNode.ItemsSource = legendInfo.LegendItemInfos; } } if (layerCount == MapContentTree.Items.Count) { this.IsBusy = false; } }