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



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

相关内容

  • 没有找到相关文章

最新更新