当用户完成放大/缩小地图时,我需要执行一些代码。当用户放大或缩小时会引发ZoomLevelChanged
事件,因此它不适合我(主要是因为我想要执行的代码是一项非常昂贵的操作)。有什么想法吗?
答案 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上找到更多信息。
祝你好运!!