WindowsPhoneエミュレーターを使用しています。私は非常に単純なプログラムを作成しました。ユーザーが地図を1回タップすると、地図上にマーカーを描画します。
次に、map_tapイベントを使用して、次のようにタップされた場所を取得します。
private void map_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Point p = e.GetPosition(null);
GeoCoordinate s = map.ConvertViewportPointToGeoCoordinate(p);
Ellipse myCircle = new Ellipse();
myCircle.Fill = new SolidColorBrush(Colors.Blue);
myCircle.Height = 20;
myCircle.Width = 20;
myCircle.Opacity = 50;
MapOverlay myLocationOverlay = new MapOverlay();
myLocationOverlay.Content = myCircle;
myLocationOverlay.PositionOrigin = new Point(0, 0);
myLocationOverlay.GeoCoordinate = s;
MapLayer myLocationLayer = new MapLayer();
myLocationLayer.Add(myLocationOverlay);
map.Layers.Add(myLocationLayer);
}
問題は、私が得るポイントは、マウス(エミュレーターではマウスですが指ではありません)がクリックしたポイントではないということです。クリックした場所よりも少し離れています(約50ピクセル低くなっています)。
したがって、エミュレーターをクリックすると、クリックした場所の下に円が描画されます。これは、ある種の奇妙なことです。
私のコードに何か問題がありますか?
どうもありがとうございます。