我正在读取一个移动对象的文件,并将它们放入字典(validMovingObjects)。我将每个对象表示为地图上的图钉(baseMap)。当一个对象更改其位置(纬度或经度)时,我会更新有效的MovingObjects(删除旧实例并插入新实例)。然后,我将validMovingObjects中的所有对象添加到贴图层(objectsLayer),然后添加到baseMap。我通过调用下面的refreshMap方法,对文件的每次读取都执行此操作。
问题:
图钉不会移动。只有移动对象的最后一个位置在地图上显示为静态图钉。
任何帮助都将不胜感激。感谢
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);
}
在循环中重复调用refreshMap
方法肯定会阻塞UI线程。
考虑更新DispatcherTimer的Tick
事件处理程序中的图钉位置。
还要注意的是,没有必要不断地在objectLayer
中移除和添加图钉。将图钉添加到MapLayer后,可以只更改其附着的MapLayer.Position
特性。