UWP MapControl: MapPolyLine искажен / искажен

Я разрабатываю приложение UWP и использую MapControl, Я также добавляю такие элементы, как MapIcon а также MapPolyLine к MapControlно у меня проблемы с MapPolyLine:

Иногда при добавлении такой ломаной линии она выглядит полностью искаженной / искаженной: Неправильная PolyLine

При изменении уровня зумирования MapControl он часто возвращается к намеченной ломаной линии, но при использовании предыдущего уровня масштабирования в конечном итоге он снова будет выглядеть искаженным. Хорошо сформированная PolyLine

(На скриншотах 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 для построения своих полилиний, пропуская первую точку графика (это начало нового сегмента), а затем переходя от этой начальной точки к следующей... к следующей... к следующей...

Другие вопросы по тегам