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