可能重复:
How can I add programmatically add a PushPin, and could I make it have a custom image?
在使用bing贴图控件的WP7中,我使用了一个图像作为图钉,但由于它呈现图钉的方式略有偏移,所以我使用PositionOrigin将它正确地居中,如下所示:
<my:Pushpin Location="{Binding Location}"
PositionOrigin="Center"MouseLeftButtonUp="pin_click"
Template="{StaticResource PushpinControlTemplate1}" >
</my:Pushpin>
在WP8的新地图控件中,我尝试并演唱此设置,应用程序只是崩溃到App.xaml.cs中没有信息的未处理异常。
这是Windows Phone 8代码:
toolkit:Pushpin PositionOrigin="Center" MouseLeftButtonUp="pin_click"
GeoCoordinate="{Binding Location1}" Template="{StaticResource PushpinControlTemplate1}"/
他们都使用这个模板:
<ControlTemplate x:Key="PushpinControlTemplate1" TargetType="my:Pushpin">
<Grid>
<Image Width="45" Height="45" Source="{Binding Arrow}"/>
</Grid>
</ControlTemplate>
任何想法如何抵消或集中此图钉?
编辑:示例图片:
http://www.goapr.co.uk/pins.gif
带有标准图钉的左图显示了尖端与地图上的运输停靠点匹配(应该如此)。我的自定义图像应位于右侧图像的传输站点之上,但它们不是。 PositionOrigin设置用于解决此问题,但似乎在WP8中无法实现。
答案 0 :(得分:1)
PushPins已对齐,因此它们的左下角位于GeoCoordinate。这是由他们的MapOverlay PositionOrigin的默认值设置为0,1完成的。如果将MapOverlay PositionOrigin设置为0.5,0.5,MapOverlay将使其与GeoCoordinate对齐。例如,UserLocationMarker使用0.5,0.5的PositionOrigin将其视觉中心与坐标对齐。
尝试使用PushPin.PositionOrigin,看看是否能解决您的问题。 PushPin.PositionOrigin为0.5,0.5将是一个很好的起始值,取决于您尝试实现的效果。请记住,PushPin和UserLocationMarker只是花哨的MapOverlay,所以如果有疑问,请回到普通的MapOverlays来测试东西。
<!-- Default Style used for Pushpin -->
<Style TargetType="maptk:Pushpin">
<Setter Property="PositionOrigin" Value="0,1" />
</Style>
<!-- Default Style used for MePOI -->
<Style TargetType="maptk:UserLocationMarker">
<Setter Property="PositionOrigin" Value="0.5,0.5" />
</Style>
从WP7.5升级到WP8时,您可能遇到异常的一个原因是因为PositionOrigin已从Bing Maps自定义数据类型更改为简化的Point X,Y结构。