Карты и навигация (QML)
Карты и навигация предоставляют типы пользовательского интерфейса QtQuick для отображения географической информации на карте, а также для взаимодействия пользователя с объектами наложения карты и самим отображением. Также содержит утилиты для геокодирования (поиск географических координат по адресу) и навигации (включая автомобильные и пешеходные маршруты).
Основано на концепциях и типах API в API позиционирования QML. Более практическое введение в типы карт и навигации можно найти в учебном пособии по картам и навигации.
Карты
Отображение карт
Отображение карты выполняется с помощью типов QML Map. Тип Map поддерживает взаимодействие пользователя через тип QML MapGestureArea. Объект Map отображает карту на экране с использованием OpenGL (ES), что позволяет использовать ускоренную отрисовку аппаратным обеспечением, где это возможно.
Ключевые типы
| Плагин | Плагин сервисов местоположения предоставляет данные, включая данные карты, которые затем отображаются в объекте Map. |
| Карта | Элемент QtQuick для отображения карты на экране. |
| MapGestureArea | Помощник для взаимодействия при панорамировании, пощёлкивании и масштабировании карты. |
Обратите внимание, что клиент должен создать объект Плагин перед использованием типа Карта, чтобы получить доступ к данным карты для отображения.
Размещение объектов на карте (объекты наложения карты)
Карты также могут содержать объекты наложения карты, которые используются для отображения информации на ее поверхности. Существует набор основных предопределенных объектов наложения карты, а также возможность реализации пользовательских объектов наложения карты с помощью типа MapQuickItem, который может содержать любой стандартный элемент QtQuick.
Ключевые типы
| MapCircle | Географическая окружность (все точки на заданном расстоянии от центра), необязательно с границей. |
| MapRectangle | Прямоугольник, верхние левые и нижние правые точки которого задаются как типы координат, необязательно с границей. |
| MapPolygon | Многоугольник, составленный из произвольного списка координат. |
| MapPolyline | Полилиния, составленная из произвольного списка координат. |
| MapQuickItem | Превращает любой произвольный элемент QtQuick в объект наложения карты. MapQuickItem позволяет задавать пользовательские объекты наложения карты. |
Модель-представление с объектами наложения карты
Для автоматической генерации объектов наложения карты на основе содержимого модели QtQuick (например, элемента ListModel), доступен тип MapItemView. Он принимает любой объект наложения карты в качестве делегата и может быть создан только внутри Map.
Ключевые типы
| MapItemView | Заполняет карту объектами наложения карты на основе данных, предоставляемых моделью. |
Взаимодействие с объектами наложения карты
Свойства объектов наложения карты, которые влияют на их отображение на дисплее, могут быть изменены в любое время, и многие из них также могут быть использованы в анимациях. Анимация объектов наложения карты, основанных на координатах, таких как MapPolygon и MapPolyline, пока недоступна.
Геокодирование — адрес в координаты и наоборот
Геокодирование — это преобразование географических координат в адреса или наоборот. Такое преобразование обычно включает отправку исходных данных на сервер, который затем выполняет преобразование и возвращает результаты, хотя некоторые провайдеры сервисов местоположения плагины могут обеспечить некоторую функциональность геокодирования без отправки данных на удаленный сервер. Доступность и точность преобразования обычно зависит от местоположения или адреса, поскольку разные области Земли отображаются с различной точностью.
Запрос геокодирования в QML выполняется с помощью типа GeocodeModel. Для запроса адреса в координаты его свойство query может быть установлено либо на объект Address, либо на строку, содержащую текстовую форму адреса для поиска. Для обратного преобразования это же свойство можно установить на координаты вместо этого. Результаты становятся доступны в содержимом модели.
Ключевые типы
| Плагин | Плагин сервисов местоположения предоставляет данные, включая результаты преобразования геокодирования, которые предоставляются клиентам через GeocodeModel. |
| GeocodeModel | Запрашивает у плагина преобразования геокодирования и предоставляет доступ к результатам через индексы в модели. |
| Адрес | Структурированный адрес для использования в запросах и результатах геокодирования. |
Обратите внимание, что клиент должен создать объект Плагин перед использованием объекта GeocodeModel. Это позволит получить доступ к услугам преобразования геокодирования и, следовательно, к данным для отображения.
Маршрутизация и навигация
Маршрутизация — это определение навигационного пути от одной точки к другой на карте. Учитывая карту, которая осведомлена о характеристиках, помогающих или препятствующих навигации, таких как мосты, водные пути и так далее, можно построить ряд сегментов, составляющих путешествие. Если эти RouteSegments простые, то мы можем добавить информацию о навигации в соединительных точках, RouteManeuvers, между сегментами.
Ключевые типы
| Маршрут | Весь путь, который нужно пройти. |
| RouteSegment | Отдельные компоненты маршрута. |
| RouteManeuver | Информация о навигации, соединяющая сегменты. |
| RouteModel | Средство для выполнения запросов на бэкенде для предоставления информации о маршруте. |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/location-maps-qml.html