我正在尝试在QML 5.7中渲染一个空的Map
,以便绘制地理定位的折线。但是,没有可用于提供地图数据的插件:
Map {
anchors.fill:parent
plugin: Plugin {
name: "osm"
Component.onCompleted: console.log('a',availableServiceProviders.length)
}
MapPolyline {
line.color: "#299FE7"; line.width: 3
path: parent.points
}
Timer {
running:true; interval:1000
onTriggered: console.log('b',parent.supportedMapTypes.length)
}
}
以上输出:
qml: a 0
qml: b 0
为什么我没有可用的插件,我怎样才能让它工作?
答案 0 :(得分:4)
您没有默认提供商,因为Qt不会强制使用特定提供商。现在所有可用的都需要注册(并接受协议/ ToS)才能使用他们的服务。
可以找到可用插件列表here。 在链接之后,您可以阅读有关每个用途的具体设置。
在QML中添加提供程序只是声明Plugin
类型的问题,其中包括:
Plugin {
name: <provider_name> // { "here" | "mapbox" | "osm" }
PluginParameter { name: <param_name>; value: <param_value> }
// other parameters
}
可以通过QGeoServiceProvider
类在C ++ /非QML项目中执行相同的任务。
请注意几个月前访问MapQuest changed,打破Open Street Map插件。您现在需要凭据才能访问其服务,例如阅读this comment。相关补丁已被推送和合并,如上一个链接评论的错误报告页面所述,并将在Qt 5.6.2(和Qt 5.7.1)补丁版本中提供。