<Grid x:Name="LayoutRoot"> <esri:Map x:Name="MyMap"> <esri:ArcGISDynamicMapServiceLayer ID="MyLayers" Url="http://srajput/arcgis/rest/services/LCEC20/MapServer" Initialized="ArcGISDynamicMapServiceLayer_Initialized" /> </esri:Map> <Border Background="#779DE26F" BorderThickness="1" CornerRadius="5" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="20,20,20,30" Padding="10" BorderBrush="Black"> <Border.Effect> <DropShadowEffect/> </Border.Effect> <Grid> <Grid.RowDefinitions> <RowDefinition Height="15" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <TextBlock Text="Layers in LCEC20" FontWeight="Bold" Grid.Row="0" /> <ListBox Margin="0,5,0,0" ItemsSource="{Binding ElementName=MyMap, Path=Layers.[0].Layers}" Grid.Row="1"> <ListBox.ItemTemplate> <DataTemplate> <CheckBox Margin="2" Name="MyLayers" Content="{Binding Name}" IsChecked="{Binding DefaultVisibility}" Tag="{Binding ID}" ClickMode="Press" Click="CheckBox_Click" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> </Border> </Grid> CODE BEHIND FILE: private void CheckBox_Click(object sender, RoutedEventArgs e) { CheckBox tickedCheckBox = sender as CheckBox; string serviceName = tickedCheckBox.Name; bool visible = (bool)tickedCheckBox.IsChecked; int layerIndex = (int)tickedCheckBox.Tag; ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer dynamicServiceLayer = MyMap.Layers[serviceName] as ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer; List<int> visibleLayerList = dynamicServiceLayer.VisibleLayers != null ? dynamicServiceLayer.VisibleLayers.ToList() : new List<int>(); if (visible) { if (!visibleLayerList.Contains(layerIndex)) visibleLayerList.Add(layerIndex); } else { if (visibleLayerList.Contains(layerIndex)) visibleLayerList.Remove(layerIndex); } dynamicServiceLayer.VisibleLayers = visibleLayerList.ToArray(); } private void ArcGISDynamicMapServiceLayer_Initialized(object sender, EventArgs e) { ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer dynamicServiceLayer = sender as ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer; if (dynamicServiceLayer.VisibleLayers == null) dynamicServiceLayer.VisibleLayers = GetDefaultVisibleLayers(dynamicServiceLayer); } private int[] GetDefaultVisibleLayers(ESRI.ArcGIS.Client.ArcGISDynamicMapServiceLayer dynamicService) { List<int> visibleLayerIDList = new List<int>(); ESRI.ArcGIS.Client.LayerInfo[] layerInfoArray = dynamicService.Layers; for (int index = 0; index < layerInfoArray.Length; index++) { if (layerInfoArray[index].DefaultVisibility) visibleLayerIDList.Add(index); } return visibleLayerIDList.ToArray(); }
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.