Движущийся объект (канцелярская кнопка) на карте
Я читаю файл движущихся объектов и помещаю их в словарь (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);
}
1 ответ
Вы, конечно, блокируете поток пользовательского интерфейса, неоднократно вызывая refreshMap
метод в цикле.
Рассмотрите возможность обновления позиций кнопок в Tick
обработчик события DispatcherTimer.
Обратите внимание, что нет необходимости постоянно удалять и добавлять кнопки в ваш objectLayer
, После добавления кнопки в MapLayer вы можете просто изменить ее MapLayer.Position
собственность