在Windows Phone 8.1应用程序中向Map添加大量Map图标

时间:2014-12-19 15:27:08

标签: windows-phone-8.1 bing-maps

Windows Phone 8.1应用程序中存在问题,我必须添加大约2000 MapIcons才能映射:

while (r.Step() == SQLiteResult.ROW)
{
    ...
    Map.MapElements.Add(MapIcon1);
}

此代码执行速度非常慢,仅对250个引脚执行约10秒,并阻止任何用户输入。 我试图创建没有结果的异步方法,似乎方法Map.MapElements.Add(MapIcon1);内的逻辑总是在主线程中执行。有没有办法在循环中调用某些函数来处理UI?

编辑:代码中最慢的部分是Map.MapElements.Add(MapIcon1);,当我删除它时,代码执行时间<1秒。

谢谢。

2 个答案:

答案 0 :(得分:1)

正如Nicolas所提到的,在使用大量图钉时,您可能需要考虑添加群集。我有一个Windows Phone 8.1的群集解决方案,可作为此空间工具箱库的一部分提供:http://mapstoolbox.codeplex.com/

答案 1 :(得分:0)

通过在循环体中添加await Task.Delay(1);并使此方法成为async来解决问题。所以整个代码是:

async void update()
{
    ...
    while (r.Step() == SQLiteResult.ROW)
    {
        ...
        Map.MapElements.Add(MapIcon1);
        await Task.Delay(1);
    }
}