在Silverlight中向Bing地图添加自定义图钉

时间:2012-04-27 06:04:04

标签: xaml bing silverlight-5.0

我是Bing Maps Concept的新手

要求:需要使用自定义图钉和Bing地图上的多个图层设计Bing地图 完成工作:创建一个带有Key和2 DLL的Bing地图,添加了多个Pushpins,使用MapPolygon在地图上添加了一个形状

的问题:

  1. 我需要将自定义图钉添加到Bing地图(我的项目文件夹中有一个图像,我需要在指定位置时在Bing地图上显示)。我经历过许多链接,没有人为我工作。因此,请告诉我在Bing地图上显示自定义图钉的方法。

  2. 我需要在Bing地图上添加多个图层,而我对它的了解最少。所以请指导我关于Silverlight Bing Maps中的分层概念。

  3. 急需帮助:(

1 个答案:

答案 0 :(得分:0)

您是否尝试过Microsoft提供的interactive SDK?它帮助了我。

您似乎只需要放置MapLayer并在其中放置Pushpin控件。您可以使用MapLayer.Position附加属性将该地图图层中的任何内容固定到地图上;所以,当用户移动地图时,它说。此附加属性的类型为Location,这是Bing Map控件专有的类型,包含经度(双精度)和纬度(双精度)值。如果您需要绑定所述位置的集合,则可以使用MapItemsControl内的MapLayer将其ItemsSource属性绑定到您的集合。您还可以创建数据模板;请记住,您的模板根必须使用MapLayer.Position附加属性来指定其在地图上的位置。这可以绑定到任何Location类型的值。

    <UserControl x:Class="MapControlInteractiveSdk.Tutorials.DataBinding.TutorialMapItemsControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:t="clr-namespace:MapControlInteractiveSdk.Tutorials.DataBinding"
    xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl">
    <UserControl.Resources>
        <DataTemplate x:Key="LogoTemplate">
            <!-- This doesn't have to be a pushpin control - it can be anything just apply 
                    the "m:MapLayer.Position" property to whatever is the root of the
                    template.
               -->
            <m:Pushpin m:MapLayer.Position="{Binding Location}" />
        </DataTemplate>
    </UserControl.Resources>
    <Grid x:Name="LayoutRoot" Background="White">
        <m:Map CredentialsProvider="Your Key">
            <m:MapLayer>
                <m:MapItemsControl x:Name="ListOfItems"
                            ItemTemplate="{StaticResource LogoTemplate}"
                            ItemsSource="{Binding MyLocalizedEntities}">
                </m:MapItemsControl>
            </m:MapLayer>
            <m:MapLayer>
                <!-- You can have content in multiple layers: Latter layers are infront of former ones. -->
            </m:MapLayer>
        </m:Map>
    </Grid>
</UserControl>