在Windows Phone地图控件上禁用平移和缩放事件

本文关键字:缩放 事件 Phone Windows 地图 控件 | 更新日期: 2023-09-27 18:15:56

我正在为Windows Phone开发一个应用程序。

我的想法是在全景控件上显示地图-带有选定的图钉-当按下图钉时,用户会看到地图的较大版本。

然而,看了,我找不到一种方法来禁用缩放,平移和轻弹事件从地图控件。因为这个地图只是一个预览,我不希望能够像地图一样实际使用它(但是因为我想要有图钉,它仍然需要是一个地图)。

是否有办法禁用地图控件上的手势事件?还是有更好的方法来做我想做的事?

谢谢。

在Windows Phone地图控件上禁用平移和缩放事件

我最近研究了如何解决WP7浏览器的这个问题。我的解决方案是深入研究可视化树,捕获操作事件并取消它们:

http://www.scottlogic.co.uk/blog/colin/2011/11/suppressing-zoom-and-scroll-interactions-in-the-windows-phone-7-browser-control/

但是,对于Map控件,我认为有一个更简单的解决方案。尝试在地图的顶部放置一个透明元素,并使用它来捕获操作事件。

尝试将不透明元素定位在不透明度=0的地图上,这对我来说很有效:

<Grid>
    <maps:Map x:Name="Map" Height="200" />
    <Grid Height="200" Background="Black" Opacity="0" Tap="MapGrid_OnTap">
        <!--background is black to disable map pan & zoom, if backround is transparent, map still can capture gestures-->
    </Grid>
</Grid>

这就是我在Windows Phone上禁用平移的方法。

为Map Control添加一个MapPan的事件处理程序,然后在处理程序中设置要处理的事件。

private void mapControl_MapPan( object sender, MapDragEventArgs e )
{
  e.Handled = true;
}

这将阻止地图控件平移。

void MapControl_MapZoom(object sender, MapZoomEventArgs e)
{
    e.Handled = true;
}

这将阻止地图控件通过手势缩放,但地图仍然可以通过地图缩放级别条缩放。这就实现了地图控件的整体缩放级别