【发布时间】:2020-05-29 07:10:15
【问题描述】:
我正在使用 UWP 地图控件 (MapControl) 和基于 this blog post 的墨迹创建 Windows 桌面应用程序。
我有基本的工作。可以在画布上绘制墨水并将它们转换为地图位置,但我无法将点正确投影到地图 3D 表面上。
我正在使用 mapControl.GetLocationFromOffset 将控制空间偏移转换为地图位置,但无论我使用什么 AltitudeReferenceSystem,这些点都在 3D 网格上方或下方偏移。我基本上是在尝试模拟墨迹在内置 Windows 地图应用程序中的工作方式。但由于在绘制每个笔画后都会暂停,我认为它正在对 3D 网格进行一些光线投射。纬度/经度是正确的,但高度有偏移。
Geopoint GeopointFromPoint(Point point)
{
Geopoint geoPoint = null;
this.map.GetLocationFromOffset(point, AltitudeReferenceSystem.Geoid, out geoPoint); // Tried all alt ref systems here
return (geoPoint);
}
...
BasicGeoposition curP;
foreach (var segment in firstStroke.GetRenderingSegments())
{
curP = GeopointFromPoint(segment.Position).Position;
geoPoints.Add(curP);
}
...
这是我在地图应用程序中的一片草地上画的,它确定了正确的高度:
和同一个区域使用Map控件+GetLocationFromOffset,蓝色墨水是标注显示高度偏移:
如何将屏幕/控制空间坐标投影到 UWP Map 控件中的 3D 网格上并获得正确的高度?
编辑:答案是我是个白痴,一直在考虑距离地球中心的米太久,即我认为高度是地图位置的海拔高度,但是不是,是地图上方的点高度。因此,只需将高度设置为零即可。
【问题讨论】:
-
NP,上次我尝试过,我必须等待 2 天,但显然我现在可以做到
标签: c# uwp geolocation geospatial uwp-maps