1

重複の可能性:
プログラムでPushPinを追加するにはどうすればよいですか?また、カスタムイメージを作成できますか?

ビングマップコントロールを使用するWP7では、画像を画鋲として使用しましたが、画鋲のレンダリング方法によってわずかにオフセットされていたため、PositionOriginを使用して次のように適切に中央揃えにしました。

 <my:Pushpin Location="{Binding Location}" 
                                    PositionOrigin="Center"MouseLeftButtonUp="pin_click"
                                    Template="{StaticResource PushpinControlTemplate1}" >
                    </my:Pushpin>

WP8の新しいマップコントロールで、この設定を試してみましたが、アプリは情報なしでApp.xaml.csの未処理の例外にクラッシュします。

これは、WindowsPhone8のコードです。

  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

画鋲は、左下の点が 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 であるため、疑わしい場合はプレーンな 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 にアップグレードするときに例外が発生する理由の 1 つは、PositionOrigin が Bing Maps カスタム データ型から単純化された Point X,Y 構造に変更されたためです。

于 2013-01-25T19:26:34.953 に答える