Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting
TIMEWEB
x
Dec. 19, 2018, 12:40 p.m.

Как в QML на объекте Map наиболее оптимизированно показать часть QGeoPath?

qt5, qt, трек, qml

Имеется объект класса QGeoPath , который хранит ~3500 точек. Заказчик требует, чтобы в программе была настройка, какую часть запомненного трека отрисовывать. Условно говоря, 150 точек, 300 точек, 500 точек, 1000, 2000, полный трек.

В самом классе QGeoPath нет возможности указать, на какой точке остановиться при отрисовке трека. Поэтому с таким классом видится только два пути:

  1. Делать копию объекта, укорачивать до нужной длинны, и этот объект и отрисовывать на карте Map .
  2. Или копировать только нужные данные из этого объекта в отображаемый и отрисовывать его на карте Map . (Возможно, это более оптимизированно, чем вариант 1, но не факт).

Небольшие подробности: экземпляр QGeoPath пополняется новыми точками 10 раз в секунду. Пока трек не достиг длинны 3500 точек, новые точки просто добавляются в «голову». Когда длинна становится 3500, работает алгоритм «змейки», то есть в голову добавляется точка, и в «хвосте» точка удаляется.

Класс QGeoPath - это, по сути,

QList<QGeoCoordinate>
. То есть, это не массив, а очень фрагментированная в памяти структура. Делать с нее копию таких данных 10 раз в сек, только для того, чтобы показать часть данных - это какой-то дикий оверхед.

Вопрос: как можно извратиться так, чтобы отображать часть трека наиболее оптимизированным способом?

10% refund of hotel reservation amount on Booking
10% refund of hotel reservation amount on Booking
We offer a link with a 10% return on the amount of the order when booking a hotel through Booking
1

Думаю, что в любом случае придётся держать оригинальный список точек.

QGeoPath имеет методы добавления, удаления и замены точек. думаю, что можно брать QGeoPath, который вы поместили в карту для отображения (напомните пожалуйста в каком объекте QGeoPath используется? я не занимаюсь той частью Qt в силу отсутствия необходимости), и просто удалять и добавлять необходимые точки. Но оригинальный набор точек наверняка придётся держать.

А вообще, мне кажется, что вы занимаетесь экономией на спичках в данном случае. Поскольку сама по себе карта в системе позиционирования отнимает гораздо больше ресурсов, да и графический интерфейс на QML будет в разы тяжелее, чем QList с 3500 точек.

Наверняка у вас есть места, которые имеют больше необходимости в оптимизации, например, какой-нибудь Stack Page, который приличную часть времени скрыт от глаз пользователя, но при этом всё время висит в памяти, вместо того, чтобы создаваться по запросу (клику по кнопке)

0

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Last comments
March 19, 2019, 12:57 p.m.
AlexanderBardin

Добрый день. А проверить работоспособность локально как-то можно не указывая реальнй сайт (еще в разработке)
March 16, 2019, 1:55 p.m.
Дмитрий

Спасибо за статью. Давно итересует следующий вопрос: с помощью переменных QMAKE_TARGET_COMPANYQMAKE_TARGET_PRODUCTQMAKE_TARGET_DESCRIPTIONможно задать свойства компилируемой программы, о...
JS
March 12, 2019, 10:19 a.m.
Jean Stefanovich

Большое спасибо за разъяснения!
March 12, 2019, 10:04 a.m.
Евгений Легоцкой

Hello, In fact, this functionality or is not implemented, or is not documented. I'm not sure. But I think, that it should be implemented in Text QML Type. Because of we can write text in...
March 12, 2019, 9:51 a.m.
Евгений Легоцкой

Да вы правы. На самом деле проще через QSqlQueryModel, сколько не пытался использовать эти дженерики типо QSqlTableModel и QSqlRelationalTableModel, то всегда упирался в какие-то их ограничени...
Now discuss on the forum
March 19, 2019, 1:43 p.m.
AlexanderBardin

Очень интересная тема. У вас случайно нет статьи с полным циклом интреграции нескольких языков?Так сказать с нуля, что нужно, какие пакеты ставить, что куда писать. Тут вроде информации не ма...
March 17, 2019, 10:47 p.m.
Евгений Легоцкой

Добрый день. Вот, нашлось у меня немного времени. Делается это через шаблон проектирования наблюдатель. GraphKS_mfvSlup.zip
ЧГ
March 15, 2019, 9:52 p.m.
Чарльз Грин

спасибо, попробую, отпишусь
m
March 15, 2019, 7:41 p.m.
mihamuz

Сори догадался)
n
March 12, 2019, 4:57 p.m.
newbie.works.with.QT

Большооооое спасибо!!!!!Не передать как я вам благодарен, спасибо что всегда отзываетесь.Теперь я смогу продолжить работу в QT!!! (пробую писать бота (Я как вы могли догадаться немного не пр...
Join us in social networks

For registered users on the site there is a minimum amount of advertising