UWP:地图控制ZoomFinished事件

时间:2016-08-25 06:55:08

标签: c# xaml windows-10 uwp uwp-maps

当用户完成放大/缩小地图时,我需要执行一些代码。当用户放大或缩小时会引发ZoomLevelChanged事件,因此它不适合我(主要是因为我想要执行的代码是一项非常昂贵的操作)。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果表演是主要问题,你可以"重新渲染"仅当缩放级别从一个整数变为另一个整数(1-> 2,2-> 3等等)时(在昏迷后滑动部分),才能使用地图元素。据我所知,ZoomLevel的最大值为20(对于2D)模式。所以我认为它必须足够顺利,以便用户不要注意。

一些代码:

public int ZoomLevel {get; set;} = initialZoomLevel;

private void OnZoomLevelChanged(object sender, EventArgs args)
{
    if((int)Map.ZoomLevel!=ZoomLevel)
    {
        //Rerender stuff
    }
}

答案 1 :(得分:0)

我认为更好的解决方案是收听LoadingStatusChanged事件,然后在您回来MapLoadingStatus.Loaded时采取行动。

public void LoadingStatusChangedEventHandler(MapControl sender, Object o)
{
    if (sender.LoadingStatus == MapLoadingStatus.Loaded)
    {
        // The map has stopped moving and finished rendering
        // If necessary, check that zoom level is different
        DoExpensiveOperation();
    }
}

我知道该活动的文档不是很好,但是this code sample还有更多信息,您可以在git repo上找到更多信息。

祝你好运!!