コード例 #1
0
        /// <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));
            }
        }
コード例 #2
0
        /// <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();
            }
        }
コード例 #3
0
        /// <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));
                }
            }
        }
コード例 #4
0
        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;
            }
        }