Плагин WebTiles
В версии ОС Аврора 4 и выше в Qt Location для стандартного qml-типа Plugin
недоступен плагин osm
для карт Open Street Maps (OSM).
Для того, чтобы подключить OSM, необходимо использовать плагин WebTiles.
- Параметры плагина
- Формирование запроса к тайлам
- Использование плагина в эмуляторе
- Конфигурация проекта
Параметры плагина
У плагина имеются следующие параметры.
Название параметра | Значение |
---|---|
webtiles.scheme |
Протокол передачи данных по сети, например, https |
webtiles.host |
Сервер с тайлами карт, например, tile.openstreetmap.org |
webtiles.path |
Формат пути к тайлам на сервере, например, /${z}/${x}/${y}.png |
webtiles.useragent |
Строка-заголовок запроса User-Agent |
webtiles.port |
Порт для подключения к серверу |
webtiles.query |
Запрос к серверу |
webtiles.copyright |
Строка, содержащая сведения о правообладателях тайлов |
Список общедоступных серверов можно найти на Wiki OpenStreetMap.
Формирование запроса к тайлам
Навигация по тайлам осуществляется с помощью трёх параметров: x, y, z, — двумерных координат и масштабирования. Следует использовать шаблон ${x}, ${y}, ${z} для автокоррекции при формировании пути или запроса.
Если шаблон запроса к тайлам имеет формат https://tile.openstreetmap.org/${z}/${x}/${y}.png, то параметры должны быть следующими:
Plugin {
id: mapPlugin
name: "webtiles"
allowExperimental: false
PluginParameter { name: "webtiles.scheme"; value: "https" }
PluginParameter { name: "webtiles.host"; value: "tile.openstreetmap.org" }
PluginParameter { name: "webtiles.path"; value: "/${z}/${x}/${y}.png" }
}
Map {
plugin: mapPlugin
}
В поле name
нужно указать имя плагина: webtiles
.
Если шаблон запроса к тайлам имеет формат https://tile.server.org/free?x=${z}&y=${x}&z=${y}, то параметры должны быть следующими:
PluginParameter { name: "webtiles.scheme"; value: "https" }
PluginParameter { name: "webtiles.host"; value: "tile.server.org" }
PluginParameter { name: "webtiles.path"; value: "/free" }
PluginParameter { name: "webtiles.query"; value: "x=${z}&y=${x}&z=${y}" }
Больше примеров серверов с тайлами можно найти на Wiki OpenStreetMap.
Использование плагина в эмуляторе
При запуске в эмуляторе у плагина есть ограничение: нельзя запрашивать тайлы по защищённым протоколам. Поэтому вместо https следует использовать http. Пример:
Plugin {
id: mapPlugin
name: "webtiles"
allowExperimental: false
PluginParameter { name: "webtiles.scheme"; value: "http" }
PluginParameter { name: "webtiles.host"; value: "a.tile.openstreetmap.fr" }
PluginParameter { name: "webtiles.path"; value: "/hot/${z}/${x}/${y}.png" }
}
Конфигурация проекта
Для того, чтобы использовать плагин WebTiles в приложении, в .spec- и .desktop-файлах необходимо указать дополнительные настройки конфигурации.
В .spec-файл в секцию Requires
нужно
добавить зависимости:
- qt5-qtdeclarative-import-positioning
- qt5-qtdeclarative-import-location
- qt5-plugin-geoservices-webtiles
qt5-qtdeclarative-import-positioning
подключает QML-модуль для геопозиционирования,
qt5-qtdeclarative-import-location
подключает QML-модуль для работы с картами,
qt5-plugin-geoservices-webtiles
подключает непосредственно плагин WebTiles.
В .desktop-файл нужно добавить разрешения
Location
и Internet
.