Плагин Qt Location Mapbox GL
Обзор
Этот плагин геосервисов позволяет приложениям получать доступ к картографическим сервисам Mapbox с помощью API Qt Location. Использование этих сервисов регулируется условиями предоставления услуг Mapbox.
Этот плагин отличается от плагина Mapbox, поскольку он использует движок карты Mapbox GL для отображения как растровых, так и векторных тайлов в реальном времени. Преимущества включают: текст, который остается вертикальным, антиалиасинг шрифтов, метки, которые плавно перетекают между уровнями масштабирования, плавное перемещение, наклон, поворот и непрерывное масштабирование.
Внешний вид и поведение векторных карт можно настроить, создав пользовательские стили карты. Это можно сделать с помощью инструментов, таких как Mapbox Studio.
Плагин геосервисов Mapbox GL может быть загружен, используя ключ плагина "mapboxgl".
Оба плагина геосервисов Mapbox требуют токен доступа для доступа к стилям и тайлам карты, размещённым на серверах Mapbox. Чтобы создать аккаунт Mapbox, посетите https://www.mapbox.com/pricing.
Примечание: API этого плагина представлен в Qt 5.9 как технологический предварительный просмотр.
Поддержка платформ
Плагин Qt Location Mapbox GL поддерживает следующие платформы:
- Microsoft Windows (win32) - Поддерживается, требуется MinGW 5.0+
- Linux X11 - Поддерживается, требуется GCC 4.9+
- macOS - Поддерживается
- Android - Поддерживается
- Встраиваемый Linux - Поддерживается, требуется GCC 4.9+
- iOS - Поддерживается
- WinRT - Не поддерживается
Параметры
Необязательные параметры плагина
В следующей таблице перечислены необязательные параметры, которые можно передать плагину Mapbox.
| Параметр | Описание |
|---|---|
| mapboxgl.access_token | Токен доступа, предоставленный Mapbox. Токен также можно указать, используя переменную среды MAPBOX_ACCESS_TOKEN, но если он также задан с помощью параметра плагина, то этот последний параметр будет иметь приоритет над переменной среды. Если не задано, то по умолчанию будет использоваться токен разработки. Токен разработки подлежит условиям Условий предоставления услуг Mapbox и не должен использоваться в производственной среде. Это свойство не влияет на стили, размещенные вне серверов Mapbox. |
| mapboxgl.china | Использовать базовые URL-адреса и стили API Mapbox China. Обратите внимание, что Mapbox China требует специального токена доступа. Для получения дополнительной информации обратитесь в службу продаж Mapbox. |
| mapboxgl.mapping.additional_style_urls | Дополнительные, разделенные запятыми, URL-адреса стилей Mapbox, которые нужно добавить к доступным URL-адресам стилей. Дополнительные стили будут добавлены в начало свойства supportedMapTypes элемента Map. |
| mapboxgl.mapping.cache.directory | Абсолютный путь к каталогу кэша тайлов карты, используемому в качестве кэша сети. По умолчанию кэш находится в подкаталоге Это кэш по умолчанию, который будет заполняться по мере необходимости до достижения максимального размера, и когда это произойдет, наименее используемые тайлы будут удалены. Этот кэш также может быть использован для хранения оффлайн-тайлов, но база данных офлайн-тайлов должна быть создана с помощью инструмента офлайн-инструмента. База данных офлайн-тайлов будет работать вместе с кэшем по умолчанию в одном файле. Убедитесь, что вы соблюдаете Условия предоставления услуг Mapbox перед созданием базы данных офлайн-тайлов. Примечание: Имя файла кэша тайлов карты должно быть "mapboxgl.db". При использовании инструмента офлайн-инструмента выходной файл по умолчанию - "offline.db". Для использования выходного файла, созданного офлайн-инструментом, его необходимо переместить в соответствующий каталог и переименовать в "mapboxgl.db". Инструмент офлайн-инструмента также предоставляет параметр "--output" для указания имени выходного файла. |
| mapboxgl.mapping.cache.memory | Флаг, определяющий, должен ли кэш храниться только в памяти. Допустимые значения - true и false. Значение по умолчанию - false. Если установлено значение true, кэш на диске никогда не будет создан. Кэш по умолчанию будет работать в памяти, но база данных офлайн-тайлов не может использоваться при включённом этом параметре. |
| mapboxgl.mapping.cache.size | Размер кэша ресурсов карты в байтах. По умолчанию размер кэша составляет 50 МБ. Убедитесь, что вы соблюдаете Условия предоставления услуг Mapbox перед увеличением этого значения. |
| mapboxgl.mapping.use_fbo | Устанавливает, следует ли использовать объект буфера кадра для рендеринга Mapbox GL Native. Допустимые значения — true и false. Значение по умолчанию — true. Если установлено значение false, карта отрисовывается путём прямого вызова команд OpenGL через QSGRenderNode для повышения производительности рендеринга. Этот режим экспериментальный и не поддерживает преобразования QQuickItem и обрезку по маске. Также могут возникать артефакты рендеринга, например, при добавлении в элемент Flipable. |
| mapboxgl.mapping.items.insert_before | Некоторые элементы карты, такие как MapPolyline, MapPolygon и MapRectangle, будут отображаться после самого верхнего слоя стиля. При установке этого параметра элементы карты будут отображаться перед слоем со значением ID, указанным в параметре, если этот слой отсутствует в текущем стиле, в этом случае будет использоваться поведение по умолчанию. Этот параметр может быть использован для отображения линий маршрута под метками. |
Необязательные параметры карты
Элемент Map, использующий этот плагин, также может быть настроен с помощью MapParameters, что позволяет изменять стиль и данные карты во время выполнения.
Примеры того, что в настоящее время можно контролировать с помощью MapParameter:
- Скрыть и показать части карты, такие как дороги и здания.
- Изменить свойства заливки, такие как цвет и непрозрачность различных частей карты.
- Изменить свойства макета, такие как толщина и соединения линий.
- Добавить данные на карту.
- Добавить спрайты на карту.
За исключением свойств экструзии и стилей, основанных на данных, каждое свойство, описанное в Спецификации стиля Mapbox, может быть изменено во время выполнения.
У MapParameters, используемых для управления стилем карты во время выполнения, всегда есть свойство type, за которым следуют пользовательские свойства, которые стараются соответствовать именованию Спецификации стиля Mapbox по возможности, заменяя дефис на верхний регистр (например, line-cap будет преобразовано в lineCap).
| Тип параметра | Описание | |
|---|---|---|
| source | Данные стиля source. При использовании источника типа sourceType geojson, свойство data может быть как внедренным, так и получено из qrc. | Поддерживаемые типы источников: vector, raster, raster-dem и geojson. 'geojson'. |
| layer | Добавляет новый слой стиля на карту. На карте Mapbox GL слои используются в стилях для добавления правил стилизации к определенным подмножествам данных. Слой будет содержать ссылку на данные, для которых он определяет стиль. Используйте атрибут before для вставки слоя перед существующим слоем. | |
| paint | Определяет, как будет окрашен слой. Свойства paint могут использоваться для изменения цвета и непрозрачности дорог на карте или цвета земли, среди прочего. | |
| layout | Определяет, как будет выстроен слой. Свойства layout могут использоваться для установки видимости слоя и определения интервала между штрихами пунктирной линии, среди прочего. | |
| image | Добавляет спрайт на карту для использования слоем стиля. Это свойство необходимо, если какой-либо слой стиля использует свойства, такие как backgroundPattern, fillPattern, linePattern или iconImage. | |
| filter | Фильтр выбирает определенные объекты из слоя. Это можно использовать для добавления слоя из источника GeoJSON, основанного на определенных частях источника данных, например, используя только точки в GeoJSON. |
Пример использования
В этом примере добавляются данные GeoJSON в карту. Простое добавление source недостаточно для отображения данных. Необходимо также создать layer, основанный на этом source. После добавления слоя также необходимо задать свойства paint и layout. В этом случае меняется цвет линии на синий и ширина линии на 8 пикселей, а также устанавливаются круглые соединения и окончания линии.
Map {
plugin: Plugin { name: "mapboxgl" }
center: QtPositioning.coordinate(60.170448, 24.942046) // Helsinki
zoomLevel: 12
MapParameter {
type: "source"
property var name: "routeSource"
property var sourceType: "geojson"
property var data: '{ "type": "FeatureCollection", "features": \
[{ "type": "Feature", "properties": {}, "geometry": { \
"type": "LineString", "coordinates": [[ 24.934938848018646, \
60.16830257086771 ], [ 24.943315386772156, 60.16227776476442 ]]}}]}'
}
MapParameter {
type: "layer"
property var name: "route"
property var layerType: "line"
property var source: "routeSource"
// Draw under the first road label layer
// of the mapbox-streets style.
property var before: "road-label-small"
}
MapParameter {
type: "paint"
property var layer: "route"
property var lineColor: "blue"
property var lineWidth: 8.0
}
MapParameter {
type: "layout"
property var layer: "route"
property var lineJoin: "round"
property var lineCap: "round"
}
} Обратите внимание, что порядок добавления параметров важен, так как между параметрами существует зависимость. Добавление слоя перед добавлением источника создаст некорректный слой, то же самое относится к добавлению свойства paint для слоя, который не существует.
Свойства paint и layout также могут использоваться для стилизации существующих слоев текущего стиля, а не только слоев, созданных во время выполнения. Mapbox Studio можно использовать для просмотра слоев данного стиля.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/location-plugin-mapboxgl.html