Я создаю приложение windows для настольных ПК с помощью элемента управления UWP Map (MapControl) и рукописного ввода на основе этого сообщения в блоге .
У меня есть основы работы. может рисовать чернила на холсте и преобразовывать их в местоположения карты, но я не могу правильно проецировать точки на трехмерную поверхность карты.
Я использую mapControl. GetLocationFromOffset для преобразуйте смещение контрольного пространства в положение карты, но независимо от того, какую систему AltitudeReferenceSystem я использую, точки смещены выше или ниже 3D me sh. Я в основном пытаюсь имитировать работу рукописного ввода во встроенном приложении windows Maps. Но поскольку после рисования каждого штриха есть пауза, я думаю, что он выполняет некоторую трансляцию лучей на трехмерное изображение sh. Широта / долгота верны, но высота имеет смещение.
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, синие чернила - это аннотация, показывающая смещение высоты:
Как Могу ли я спроецировать координаты экрана / контрольного пространства на трехмерное изображение sh в элементе управления UWP Map и получить правильную высоту?
Изменить: И ответ - я идиот, Я слишком долго думал о метрах от центра Земли, ie Я думал, что высота - это высота над уровнем моря на карте, но это не так, это высота точек над картой. Так что установка высоты на ноль работает.