6

我想在 Windows 10 UWP 地图控件中添加 3D 对象。

该对象将是“具有高度的多边形”,例如房屋的简单表示 - 长方体或立方体。

插图图片:

插图

我知道我可以添加 Xaml 控件(并在其中添加 3D 对象,例如 Cube),但是这个 Cube 不是“地图对象”,只是固定到某个纬度/经度。

知道如何实现吗?

4

1 回答 1

5

微软在 Windows 10 Insider Preview v10.0.16257.0 中添加了 MapElement3D。- 这是瀑布创作者更新。它允许您添加对象、转动它们、控制它们的大小和方向。你也可以让他们动起来!

例子

例子

如何

表示在 MapControl 上显示的 3D 元素。

它的用法似乎与其他 MapElements 非常相似,例如MapIconsMapBillboards

map3dSphereStreamReference = RandomAccessStreamReference.CreateFromUri
   (new Uri("ms-appx:///Assets/trainengine.3mf"));    

 var myModel = await MapModel3D.CreateFrom3MFAsync(map3dSphereStreamReference,
     MapModel3DShadingOption.Smooth);

 var my3DElement = new MapElement3D();
 my3DElement.Location = myMap.Center;
 my3DElement.Model = myModel;

 myMap.MapElements.Add(my3DElement);   

当心两个未记录的问题:

  • 尝试将相同的 3DMapElement 添加到两个不同的 MapControl 将导致 System.AccessViolationException。如果您缓存了 3D 模型而不是带有地图控件的页面,则可能会发生这种情况。

HResult=-2147467261 消息=试图读取或写入受保护的内存。这通常表明其他内存已损坏。

  • 尝试MapModel3D.CreateFrom3MFAsync()从非 Ui 线程调用会导致崩溃。这必须从 UI 线程调用。
于 2017-07-07T00:51:54.450 回答