UWP MapControl: MapPolyLine искажен / искажен
Я разрабатываю приложение UWP и использую MapControl
, Я также добавляю такие элементы, как MapIcon
а также MapPolyLine
к MapControl
но у меня проблемы с MapPolyLine
:
Иногда при добавлении такой ломаной линии она выглядит полностью искаженной / искаженной:
При изменении уровня зумирования MapControl
он часто возвращается к намеченной ломаной линии, но при использовании предыдущего уровня масштабирования в конечном итоге он снова будет выглядеть искаженным.
(На скриншотах MapControl
использует OSM-слой, но это также происходит со стандартным Bing-Maps-Layer; оба скриншота показывают то же самое MapPolyLine
с разных точек зрения)
2 ответа
Похоже, вы тоже храните высоту? Я думаю, что элемент управления картой при масштабировании отображает точку в трехмерном пространстве.
Попробуй это:
// We are not Plotting Alititue to keep map 'flat' [ Also Emulator sets Altitude = 0 ]
BasicGeoposition _newPlotPos = new BasicGeoposition() {
Latitude = position.Latitude,
Longitude = position.Longitude,
Altitude = 0
};
Может быть, я скучаю по пониманию проблемы, так как со скриншотов я на самом деле не вижу, где "искаженные" линии? Они просто убегают с экрана?
Если это линии, уходящие в отдаленную точку, то это может быть той же проблемой, что и у меня, по двум причинам. Во-первых, если вы используете эмулятор, иногда первая позиция GPS, когда она начинается, находится где-то далеко в Сиэтле, и это может быть первая точка, которую вы получите, например, если вы вытаскиваете данные 'local geo' из базы данных, например, и первая точка - Сиэтл, затем следующая точка - ваши локальные данные, вы отправляетесь в Сиэтл. Во-вторых, MapPloyLine работает точка-точка в виде списка, поэтому каждая запись в строке ploy находится здесь -> здесь. Так что, если в ваших позиционных данных есть "пробелы", вы можете увидеть огромные линии, оттянутые к позициям, которые выглядят странно, но правильно. Я записываю данные из GPS в базу данных, и если регистрация прекращается, я увеличиваю 'RecordingCount' в данных для представления и нового 'сегмента'. Я также использую буфер FIFO для построения своих полилиний, пропуская первую точку графика (это начало нового сегмента), а затем переходя от этой начальной точки к следующей... к следующей... к следующей...