ArcGIS API for Silverlight中的Legend控件
在ArcGIS API for Silverlight中提供了Legend控件来显示地图图层以及图层符号列表,与.NET ADF中的Table of Contents控件类似,实现对地图图层的开关。但该控件对于TiledMapServiceLayer和DynamicLayer的控制稍有差异,对TiledMapServiceLayer只控制到服务,而对DynamicLayer可控制到服务以下的子图层。因为TiledMapServiceLayer是服务器上渲染了的切片图层,无法再对其服务下的图层进行开关控制。
Map:与Legend控件关联的主地图,一般通过绑定与主地图控件进行关联。
Legend的核心属性
Legend.Map:绑定地图控件;
Legend.LayerItemsMode:设置地图显示模式,有Flat和Tree两种模式。其中Tree模式以Tree方式显示图层的完整信息。而Flat显示模式仅显示图层的最后的子图层。

左为Tree模式下的图例,右为Flat模式下的图例
Legend.ShowOnlyVisibleLayers:是否只显示Map控件可见的图层。
Legend.LayerIDs:定义Legend控件列出的图层。默认值为空,即默认情况下Legend显示Map控件的所有图层,也可以通过设置Map控件中图层的ID值让Legend显示指定的图层。如:
LayerIDs="BaseMapLayer,HouseLayer"
默认情况下,Legend控件只显示图层及图层的符号,不提供图层的开关功能。但在实际应用中,经常需要打开或关闭图层,通过修改Legend控件的模版可以实现该功能。控件模版的修改需先设置图层的模版,再设置子图层模版:
<esri:Legend Map="{Binding ElementName=MyMap}" LayerItemsMode="Tree" ShowOnlyVisibleLayers="False" LayerIDs="BaseMapLayer,HouseLayer"> <!--默认不提供图层开关功能,但是可以通过Lenged控件的模版实现--> <esri:Legend.MapLayerTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <CheckBox Content="{Binding Label}" IsChecked="{Binding IsEnabled,Mode=TwoWay}" IsEnabled="{Binding IsInScaleRange}"/> <Slider Maximum="1" Value="{Binding Layer.Opacity,Mode=TwoWay}" Width="50"/> </StackPanel> </DataTemplate> </esri:Legend.MapLayerTemplate> <esri:Legend.LayerTemplate> <DataTemplate> <CheckBox Content="{Binding Label}" IsChecked="{Binding IsEnabled,Mode=TwoWay}" IsEnabled="{Binding IsInScaleRange}"/> </DataTemplate> </esri:Legend.LayerTemplate> </esri:Legend>
这些都依赖Silverlight的强大而灵活的模版功能,可以灵活使用。


浙公网安备 33010602011771号