C# 在地图上移动对象(图钉)

C# 在地图上移动对象(图钉),c#,wpf,pushpin,C#,Wpf,Pushpin,我正在阅读一个移动对象的文件,并将它们放入字典(validMovingObjects)。我将每个对象表示为地图(底图)上的图钉。当对象更改其位置(纬度或经度)时,我会通过(删除旧实例并插入新实例)更新ValidMovingObject。然后,我将validMovingObjects中的所有对象添加到地图层(objectsLayer),然后添加到baseMap。我通过调用下面的refereshMap方法,每次读取文件时都会执行此操作 问题是: 这些图钉不动。只有移动对象的最后位置在地图上显示为静态

我正在阅读一个移动对象的文件,并将它们放入字典(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
附加属性。

非常感谢。现在,对象正在移动。我将尝试只更改位置,而不将其从层中移除。谢谢,谢谢。如果你回答了这个问题,你可以考虑接受它。看看它是如何工作的。