我已经设置了一个本地切片服务器以与我的应用程序一起使用,但是当我创建 QML Map 对象并指定插件以使用自定义主机时,应用程序不使用本地切片。在地图对象上循环supportedMapTypes
和设置activeMapType
属性将显示一些图块,但它们似乎是一些默认图块集,而不是来自我本地图块服务器的图块。
Map
{
id: map
objectName: "basemap"
anchors.fill: parent
plugin: Plugin
{
name: "osm"
PluginParameter
{
name: "osm.mapping.custom.host"
value: "http://localhost:8080/data/openmaptiles_satellite_lowres/"
}
}
zoomLevel: 1
activeMapType: // varies depending on selection from another object in application
center: QtPositioning.coordinate(0, 0)
}
我知道磁贴服务器运行正常,因为我可以通过导航在浏览器中访问它,localhost:8080
并且可以使用访问任意磁贴http://localhost:8080/data/openmaptiles_satellite_lowres/{z}/{y}/{x}.jpg
更新
我正在尝试覆盖 TomasL 下面建议的默认提供程序存储库文件,但应用程序似乎没有使用指定的插件参数。
Mapper.qml 中的地图组件
Map {
id: basemap
objectName: "basemap"
anchors.fill: parent
plugin: ProvidersPlugin {}
activeMapType: supportedMapTypes[1] // To use the satellite file in providers repository
center: QtPositioning.coordinate(0, 0)
zoomLevel: 2
minimumZoomLevel: 0
maximumZoomLevel: 5
}
ProvidersPlugin.qml
import QtLocation 5.5
import QtPositioning 5.5
Plugin {
id: mapPlugin
name: "osm"
PluginParameter {
name: "osm.mapping.providersrepository.address"
value: Qt.resolvedUrl('./providers')
}
}
./供应商/卫星
{
"Enabled" : true,
"UrlTemplate" : "http://localhost:8080/data/openmaptiles_satellite_lowres/%z/%x/%y.jpg",
"ImageFormat" : "jpg",
"QImageFormat" : "Indexed8",
"MapCopyRight" : "Test",
"DataCopyRight" : "Hello World",
"MinimumZoomLevel" : 0,
"MaximumZoomLevel" : 5,
}
使用上面的代码,我的应用程序仍然尝试访问默认服务器otile1.mqcdn.com