C# 在地图上移动对象(图钉)
我正在阅读一个移动对象的文件,并将它们放入字典(validMovingObjects)。我将每个对象表示为地图(底图)上的图钉。当对象更改其位置(纬度或经度)时,我会通过(删除旧实例并插入新实例)更新ValidMovingObject。然后,我将validMovingObjects中的所有对象添加到地图层(objectsLayer),然后添加到baseMap。我通过调用下面的refereshMap方法,每次读取文件时都会执行此操作 问题是: 这些图钉不动。只有移动对象的最后位置在地图上显示为静态图钉 任何帮助都将不胜感激。谢谢C# 在地图上移动对象(图钉),c#,wpf,pushpin,C#,Wpf,Pushpin,我正在阅读一个移动对象的文件,并将它们放入字典(validMovingObjects)。我将每个对象表示为地图(底图)上的图钉。当对象更改其位置(纬度或经度)时,我会通过(删除旧实例并插入新实例)更新ValidMovingObject。然后,我将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);
}
public void refereshMap(MapLayer objectsLayer,Microsoft.Maps.MapControl.WPF.Map baseMap)
{
系统.线程.线程.睡眠(500);
baseMap.Children.Clear();
objectsLayer.Children.Clear();
PositionOrigin对象PositionOrigin=PositionOrigin.Center;
位置对象位置;
foreach(validMovingObjects中的KeyValuePair对)
{
objectLocation=新位置(pair.Value.objectLatitude,pair.Value.objectLatitude);
AddChild(pair.Value.objectPin、objectLocation、objectPositionOrigin);
}
baseMap.Children.Add(objectsLayer);
}
在循环中反复调用refreshMap
方法,肯定是在阻塞UI线程
考虑更新事件处理程序的勾选
事件处理程序中的图钉位置
还要注意的是,没有必要经常移除图钉并将其添加到
objectLayer
。将图钉添加到MapLayer后,您可以更改其MapLayer.Position
附加属性。非常感谢。现在,对象正在移动。我将尝试只更改位置,而不将其从层中移除。谢谢,谢谢。如果你回答了这个问题,你可以考虑接受它。看看它是如何工作的。