在Windows Phone 8中如何将触控事件/鼠标按下事件映射到地图上?

3
我是使用Windows Phone模拟器。我写了一个非常简单的程序:当用户轻触地图时,在地图上绘制一个标记。

然后,我使用了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像素)的位置。

所以无论我在模拟器中点击哪里,圆圈都会绘制在比我点击的位置下方一些,好像有点奇怪。

我的代码哪里出错了吗?

非常感谢。

1个回答

6

GestureEventArgs.GetPosition()方法需要一个参数,指定要获取相对坐标的UIElement(请参阅MSDN文档)。因此,请尝试执行以下操作:

Point p = e.GetPosition(map);

而不是。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接