UWP:刷新 MapElementsLayer
UWP: Refresh MapElementsLayer
我使用以下方法在我的 MapControl 上定义了一个 MapLayer:
<maps:MapControl x:Name=“MyMap”
[…]
Layers=“{x:Bind ViewModel.Layers}”>
我定义了一个 MapElementsLayer 并将其添加到我的 MapLayer。
我现在以编程方式创建元素并将它们添加到我的 MapElementsLayer。我的问题是,当我添加新元素或删除已经存在的元素时,它们不会 draw/clear 在地图上。我能够让它们更新的唯一方法是删除地图层,然后重新添加它。这个过程是资源密集型的,每次都会暂停 UI 线程数秒。
有没有办法更新MapLayer/MapElementsLayer的内容并触发重绘?我已经搜索了文档,但找不到触发重绘的方法。
谢谢,
约翰
根据你的描述,你可以使用List
插入Layers
,如果你想通过删除源数据来更新图层,请使用ObservableCollection to replace List that could represent a dynamic data collection that provides notifications when items get added, removed, or when the whole list is refreshed. For more please refer to this document。
public ObservableCollection<MapLayer> LandmarkLayer
{ get; } = new ObservableCollection<MapLayer>();
我使用以下方法在我的 MapControl 上定义了一个 MapLayer:
<maps:MapControl x:Name=“MyMap”
[…]
Layers=“{x:Bind ViewModel.Layers}”>
我定义了一个 MapElementsLayer 并将其添加到我的 MapLayer。
我现在以编程方式创建元素并将它们添加到我的 MapElementsLayer。我的问题是,当我添加新元素或删除已经存在的元素时,它们不会 draw/clear 在地图上。我能够让它们更新的唯一方法是删除地图层,然后重新添加它。这个过程是资源密集型的,每次都会暂停 UI 线程数秒。
有没有办法更新MapLayer/MapElementsLayer的内容并触发重绘?我已经搜索了文档,但找不到触发重绘的方法。
谢谢, 约翰
根据你的描述,你可以使用List
插入Layers
,如果你想通过删除源数据来更新图层,请使用ObservableCollection to replace List that could represent a dynamic data collection that provides notifications when items get added, removed, or when the whole list is refreshed. For more please refer to this document。
public ObservableCollection<MapLayer> LandmarkLayer
{ get; } = new ObservableCollection<MapLayer>();