QT QML Плагин карты QtLocation
У меня есть собственный локальный сервер плиток карты Z/X/Y, и я хочу использовать его в качестве фона карты в приложении QML. Глядя на пример кода, кажется, что это делается:
Plugin {
id: osmPlugin
name: "osm"
}
Поэтому мне нужно написать свой собственный плагин. Но документация кажется скудной, и я не могу найти исходный код для версии osm или инструкции по установке.
Это относительно легко сделать, или это можно сделать без написания нового плагина?
3 ответа
Вы можете установить osm.mapping.host так:
Plugin {
id: osmPlugin
name: "osm"
PluginParameter { name: "osm.mapping.host"; value: "https://tile.openstreetmap.org/" }
PluginParameter { name: "osm.geocoding.host"; value: "https://nominatim.openstreetmap.org" }
PluginParameter { name: "osm.routing.host"; value: "https://router.project-osrm.org/viaroute" }
PluginParameter { name: "osm.places.host"; value: "https://nominatim.openstreetmap.org/search" }
PluginParameter { name: "osm.mapping.copyright"; value: "" }
PluginParameter { name: "osm.mapping.highdpi_tiles"; value: true }
}
Но не забудьте установить тип пользовательской карты, используя следующий код:
Map {
id: map
height: parent.width
width: parent.width
plugin: osmPlugin
Component.onCompleted: {
for( var i_type in supportedMapTypes ) {
if( supportedMapTypes[i_type].name.localeCompare( "Custom URL Map" ) === 0 ) {
activeMapType = supportedMapTypes[i_type]
}
}
}
}
Хорошо, я нашел способ сделать это без написания плагина.
Плагин OSM использует сервер плиток для получения плиток. URL-адрес устанавливается с помощью опции плагина osm.mapping.custom.host. Установка этого параметра в качестве локального URL- адреса позволяет мне использовать свои собственные плитки, если они соответствуют структуре osm.
Если документация не охватывает что-то или не достаточно подробно, всегда полезно помнить, что исходный код Qt общедоступен.
Например плагин OSM здесь
Браузер кода Woboq также хорош для этого, если вы знаете название класса или файла, который вы ищете