我正在读取移动对象的文件,并将它们放入字典中(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);
}
答案 0 :(得分:2)
您肯定是通过在循环中反复调用refreshMap
方法来阻止UI线程。
考虑更新DispatcherTimer的Tick
事件处理程序中的图钉位置。
另请注意,不必经常删除和添加图钉objectLayer
。将图钉添加到MapLayer后,您可以更改其MapLayer.Position
附加属性。