C#中的Bing地图 - 更改图钉图像

时间:2017-02-22 12:51:18

标签: c# bing-maps

我一直在研究互联网上有关改变Bing Maps C#控件中图钉图像的方法。我最接近的是使用以下解决方案:

Change image for pushpin WPF

这并不完全是我想要的,因为我希望能够改变推针的颜色以及添加标签。

上述解决方案基本上是一个在推针上绘制的图像,没有附加功能,例如添加标签。我希望能够在具有自定义标签功能的同时轻松更改图像。

还有其他办法吗?另一种方法是使用"标准" Bing推针图形并能够改变大小。但是,似乎C#控件中没有此功能

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

令人惊讶的是,这是SOF中关于此主题的唯一问题(other one已关闭)。要在WPF中完成新手(像我一样),很难找到好的,同时也很难找到简单的信息,所以我将展示如何在VB.NET中以编程方式添加图钉来设法使用自定义图像:

这是我的 MainWindow.xaml 文件:

<Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
        xmlns:local="clr-namespace:MyBingMapsApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ControlTemplate x:Key="PushpinControlTemplate" TargetType="m:Pushpin">
            <Grid>
                <Rectangle Width="24" Height="24">
                    <Rectangle.Fill>
                        <ImageBrush ImageSource= "Resources/marker_green.png"/>
                    </Rectangle.Fill>
                </Rectangle>
            </Grid>
        </ControlTemplate>
    </Window.Resources>
    <Grid>
        <m:Map x:Name="myMap" 
               CredentialsProvider= "xxxxxx mycredentialskey xxxxxxxx" 
               Center="42.13618,-0.40822" 
               ZoomLevel="15">
        </m:Map>
    </Grid>
</Window>

如您所见,您必须定义ControlTemplate TargetType="m:Pushpin" 在那里你可以画任何你需要的东西。最简单的方法是:使用资源中的图像。

重要提示: 更改图片&#34;制作动作&#34;到资源(单击解决方案资源管理器资源文件夹中的图像并在高级设置中更改它)。否则,您必须硬写图像路径或使用Uris或more complicated stuff

现在您可以随时随地创建图钉并分配模板:

mypin = New Pushpin
mypin.Location = New Location(mylat, mylon)
mypin.ToolTip = "This is a pushpin with custom image"

Dim mytemplate As System.Windows.Controls.ControlTemplate = FindResource(“PushpinControlTemplate”) 'here of course you must put the key name of your template
mypin.Template = mytemplate