1

我正在阅读移动对象的文件并将它们放入字典(validMovingObjects)。我将每个对象表示为地图(baseMap)上的图钉。当一个对象改变它的位置(纬度或经度)时,我更新validMovingObjects(删除旧实例并插入新实例)。然后我将validMovingObjects 中的所有对象添加到地图层(objectsLayer),然后添加到baseMap。我通过调用下面的 refereshMap 方法对文件的每次读取执行此操作。

问题:

图钉不动。只有移动对象的最后位置在地图上显示为静态图钉。

任何帮助将不胜感激。谢谢

public void refereshMap(MapLayer objectsLayer, Microsoft.Maps.MapControl.WPF.Map baseMap)
{
    System.Threading.Thread.Sleep(500);

    baseMap.Children.Clear();

    objectsLayer.Children.Clear();

    PositionOrigin objectPositionOrigin = PositionOrigin.Center;

    Location objectLocation;

    foreach (KeyValuePair<int, MovingObject> pair in validMovingObjects) 
    {        
        objectLocation = new Location(pair.Value.objectLatitude,pair.Value.objectLongitude);

        objectsLayer.AddChild(pair.Value.objectPin, objectLocation, objectPositionOrigin);
    }

    baseMap.Children.Add(objectsLayer);
}
4

1 回答 1

2

refreshMap通过在循环中重复调用您的方法,您肯定会阻塞 UI 线程。

考虑更新DispatcherTimerTick的事件处理程序中的图钉位置。

另请注意,没有必要经常删除和添加图钉到您的objectLayer. 将图钉添加到 MapLayer 后,您只需更改其MapLayer.Position附加属性即可。

于 2013-07-16T23:01:15.930 回答