3

基本的に私の問題は、ここにあるコードを適応させたことです

http://social.msdn.microsoft.com/Forums/en-US/vemapcontroldev/thread/62e70670-f306-4bb7-8684-549979af91c1

これは、私がやりたいことを正確に行います。つまり、地図のズームレベルに応じて画鋲の画像を拡大縮小します。唯一の問題は、このコードを bing maps Silverlight コントロール (元の例のような仮想地球ではない) で実行するように調整したことです。現在、画像は正しくスケーリングされていますが、位置が変更され、ズーム レベルのときにのみ目的の位置に到達します。最大です。理由はありますか?助けていただければ幸いです:)

以下の変更されたコード:

var layer = new MapLayer();
map.AddChild(layer);

//Sydney
layer.AddChild(new Pin
{
    ImageSource = new BitmapImage(new Uri("pin.png", UriKind.Relative)),
    MapInstance = map
}, new Location(-33.86643, 151.2062), PositionMethod.Center);

のようなものになります

layer.AddChild(new Pin
{
    ImageSource = new BitmapImage(new Uri("pin.png", UriKind.Relative)),
    MapInstance = map
}, new Location(-33.92485, 18.43883), PositionOrigin.BottomCenter);

bing マップがその UI 要素を固定する別の方法と関係があると思います。その詳細も非常に便利です。ありがとうございました!

4

3 に答える 3

1

Earthware の回答のおかげで、問題を解決することができました。画像を直接追加し (画鋲クラスは関係ありません)、それに固定サイズを追加し、それに応じてスケーリングの CenterX および CenterY プロパティを設定するだけです。コードサンプルは次のとおりです。

image.Source = new BitmapImage(new Uri("pin.png", UriKind.Relative));
image.Stretch = System.Windows.Media.Stretch.None;
image.Height = 152;
image.Width = 116;

layer.AddChild(image, new Location(-33.86643, 151.2062), PositionOrigin.BottomCenter);
image.RenderTransform = scaleTr;

scaleTr.CenterX = image.Width / 2; //image is alligned bottom center (see above)
scaleTr.CenterY = image.Height;
于 2010-04-06T14:26:13.307 に答える
1

画鋲クラスを使用するのではなく、独自の固定サイズのビットマップ画像をマップに追加してみてください

于 2010-04-06T01:35:52.360 に答える
0

以下は、(Image オブジェクトの代わりに) Pushpin オブジェクトを使用して Map の ZoomLevel で Pushpins を Auto Scale し、それらを正しい位置に保持する方法を示す例です。カスタムの IValueConverter、ScaleTransform、および少しのデータ バインディングの助けを借りてすべてを行います。

http://pietschsoft.com/post/2010/06/04/Resizing-and-Auto-Scaling-Pushpin-in-Bing-Maps-Silverlight.aspx

于 2010-06-04T06:18:43.563 に答える