如何在Windows Phone 8.1上检测用户与“MapControl”的交互?

时间:2015-06-24 22:22:44

标签: c# windows-phone-8.1

我有一个MapControl,想要检测用户是否已平移或缩放地图(或基本上生成了任何指针事件)。

我尝试了很多方法,但还是无法检测到指针事件。例如。 MyMapControl.PointerPressed += ...MyMapControl.AddHandler(UIElement.PointerPressedEvent, ..., true)Window.Current.CoreWindow.PointerPressed +=((Page)this).PointerPressed +=,但未调用它们。在MapControl外面向下触摸时会发出页面和窗口的事件,但在MapControl内部触及时不会发出。

如果我放置了涵盖MapControl的内容,例如一个Rectangle,它会获取事件,但它也会消耗它们,因此它们无法到达MapControl。我希望覆盖层可以看到事件但不消耗它们,但到目前为止还没有成功。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

MapTapped事件处理点击地图,通用Tapped事件无效。

对于平移或缩放,我使用LoadingStatusChanged事件并查找mapControl.LoadingStatus == MapLoadingStatus.Loaded以了解用户何时停止操作地图。

请注意,地图上绘图元素之类的内容也会触发LoadingStatusChanged。如果这是您需要处理的情况,您可以将地图的中心和缩放级别存储在某处,然后在偶数触发时将这些值与地图的当前中心/缩放级别进行比较以了解地图真的被操纵了。

如果您正在使用Interactivity,我会编写一个行为,如果您需要,可以执行所有这些操作。