1

可能重复:
如何以编程方式添加 PushPin,我可以让它有一个自定义图像吗?

在使用 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>

任何想法如何偏移或居中这个图钉?

编辑:示例图像:


(来源:goapr.co.uk

带有标准图钉的左图显示提示与地图上的公交站点相匹配(应该如此)。我的自定义图像应该位于右侧图像的中转站之上,但事实并非如此。PositionOrigin 设置过去几乎可以解决这个问题,但在 WP8 中似乎是不可能的。

4

1 回答 1

1

PushPins 对齐,因此它们的左下角位于 GeoCoordinate。这是通过默认将 MapOverlay PositionOrigin 设置为 0,1 来完成的。如果您将 MapOverlay PositionOrigin 设置为 0.5,0.5,则 MapOverlay 会将其中心对准地理坐标。例如,UserLocationMarker 使用 0.5,0.5 的 PositionOrigin 将其视觉中心与坐标对齐。

尝试使用 PushPin.PositionOrigin 看看是否能解决您的问题。PushPin.PositionOrigin 的 0.5,0.5 将是一个很好的起始值,具体取决于您要达到的效果。请记住,PushPin 和 UserLocationMarker 只是花哨的 MapOverlay,所以当有疑问时,可以恢复为普通的 MapOverlay 来测试东西。

<!-- 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 地图自定义数据类型更改为简化的 Point X,Y 结构。

于 2013-01-25T19:26:34.953 回答