Карты и навигация (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. Это позволит получить доступ к услугам геокодирования и, следовательно, к данным для отображения.
Маршрутизация и навигация
Маршрутизация — это определение навигационного пути от одной точки к другой на карте. Учитывая карту, которая знает о факторах, которые помогают или препятствуют навигации, таких как мосты, водные пути и так далее, можно построить серию сегментов, составляющих маршрут. Если эти RouteSegment простые, то мы можем добавить информацию о навигации в соединяющих точках, RouteManeuver, между сегментами.
Ключевые типы
| Маршрут | Весь путь, по которому необходимо пройти. |
| Сегмент маршрута | Отдельные компоненты маршрута. |
| Маневр маршрута | Информация о навигации, которая соединяет сегменты. |
| Модель маршрута | Средство для отправки запросов на сервер для получения информации о маршруте. |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/location-maps-qml.html