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的强大而灵活的模版功能,可以灵活使用。

 

 

posted @ 2014-04-27 19:09  Giser-Liang  阅读(631)  评论(0)    收藏  举报