Silverlight - 必应地图 - 自定义图钉样式

4
3个回答

6
你有两种选择: (1) 创建任何UIElement并将其传递给PushPinLayer.AddChild方法。AddChild方法将接受任何UIElement,例如此情况下的图像:
MapLayer m_PushpinLayer = new MapLayer();
Your_Map.Children.Add(m_PushpinLayer);
Image image = new Image();
image.Source = ResourceFile.GetBitmap("Images/Me.png", From.This);
image.Width = 40;
image.Height = 40;
m_PushpinLayer.AddChild(image,
    new Microsoft.Maps.MapControl.Location(42.658, -71.137),  
        PositionOrigin.Center);

(2) 创建本地PushPin对象以传递到PushpinLayer.AddChild,但首先设置其模板属性。请注意,PushPin是ContentControl,具有可以从XAML中定义的资源中设置的模板属性:

MapLayer m_PushpinLayer = new MapLayer();
Your_Map.Children.Add(m_PushpinLayer);
Pushpin pushpin = new Pushpin();
pushpin.Template = Application.Current.Resources["PushPinTemplate"]  
    as (ControlTemplate);
m_PushpinLayer.AddChild(pushpin,
    new Microsoft.Maps.MapControl.Location(42.658, -71.137),  
        PositionOrigin.Center);


<ResourceDictionary
    xmlns="http://schemas.microsoft.com/client/2007"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ControlTemplate x:Key="PushPinTemplate">
        <Grid>
            <Ellipse Fill="Green" Width="15" Height="15" />
        </Grid>
    </ControlTemplate>
</ResourceDictionary>

用户70192,这个回答解决了您的问题吗?如果是的话,能否将其标记为已回答? - Jim McCurdy

1
我会通过创建一个图层,然后将我的推针添加到该图层来实现这一点。
// during initial load
MapLayer lay = new MapLayer();
MapControl.Children.Add(lay);


// for each pushpin you want to add
Image image = new Image();
// this assumes you have an "Images" folder on the root of your host web application
image.Source = new BitmapImage(new Uri(App.Current.Host.Source, "../Images/PushPin.png"));
var lat = 40.4d;
var long = -81.8d;
Location location = new Location(lat, long, 0d);

//Define the image display properties
image.Opacity = 1.0;
image.Stretch = Stretch.None;

// Center the image around the location specified
PositionOrigin position = PositionOrigin.Center;

//Add the image to the defined map layer
lay.AddChild(image, location, position);

1
Private Sub MainPage_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
    Dim pushpin As Microsoft.Maps.MapControl.Pushpin = New Microsoft.Maps.MapControl.Pushpin
    pushpin.Template = Application.Current.Resources("PushPinTemplate")
End Sub

不要报错...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接