Имеется объект класса QGeoPath, который хранит ~3500 точек. Заказчик требует, чтобы в программе была настройка, какую часть запомненного трека отрисовывать. Условно говоря, 150 точек, 300 точек, 500 точек, 1000, 2000, полный трек.
В самом классе QGeoPath нет возможности указать, на какой точке остановиться при отрисовке трека. Поэтому с таким классом видится только два пути:
1. Делать копию объекта, укорачивать до нужной длинны, и этот объект и отрисовывать на карте Map.
2. Или копировать только нужные данные из этого объекта в отображаемый и отрисовывать его на карте Map. (Возможно, это более оптимизированно, чем вариант 1, но не факт).
Небольшие подробности: экземпляр QGeoPath пополняется новыми точками 10 раз в секунду. Пока трек не достиг длинны 3500 точек, новые точки просто добавляются в «голову». Когда длинна становится 3500, работает алгоритм «змейки», то есть в голову добавляется точка, и в «хвосте» точка удаляется.
Класс QGeoPath - это, по сути, QList<QGeoCoordinate>. То есть, это не массив, а очень фрагментированная в памяти структура. Делать с нее копию таких данных 10 раз в сек, только для того, чтобы показать _часть_ данных - это какой-то дикий оверхед.
Вопрос: как можно извратиться так, чтобы отображать часть трека наиболее оптимизированным способом?