UWP Mapcontrol - 绑定到不同 MapElement 的集合并将它们排列在图层中

UWP Mapcontrol - Binding to collections of different MapElement and arranging them in layers

我在 UWP MapControl 上显示几种不同类型的 MapElements,并在用户使用地图时定期更新它们的位置、大小等。目前我在代码中完成所有这些。我想找到一种方便的方法来绑定多个不同的 MapElement 集合,这样我需要维护的代码就会更少。

Microsoft 在 Creator 的秋季更新 16299 中添加了 MapElementsLayer class, 它似乎非常适合这项工作,但我无法让它工作。 当我将它绑定到 MapElement3D 的 ObservableCollection 时,我没有看到它们中的任何一个出现在地图上。我究竟做错了什么?

<Maps:MapControl 
        x:Name="MainMap"           
        MapProjection="Globe"
        ZoomLevel="15.5"

        <Maps:MapElementsLayer x:Name="Cars"  MapElements="{x:Bind _VehicleCollection, Mode=OneWay}"  />

 </Maps:MapControl>

I'd like to find a convenient way of binding multiple different collections of MapElements, as then I'd have less code to maintain.

如您所述,地图分层 API 可以帮助表示您可以将数据绑定到的地图数据集合。与现有的 MapControl.MapElements API 不同,这可用于将元素组作为一个单元独立操作或指定一个联合目的。

但您需要使用MapControl.Layers将数据收集绑定到地图。这是使用 MapElements 集合无法做到的事情。有关地图分层 API 的更多详细信息以及如何操作,请参考 Working with layers。例如:

<Maps:MapControl
    x:Name="myMap"
    Layers="{x:Bind ViewModel.LandmarkLayer}"
    MapProjection="Globe"
    MapServiceToken="Your token" />

您需要将图层集合绑定到 MapControl.Layers 属性。