2016-12-01 31 views
0

我试图在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 

为什么不让我有任何插件可用,我怎么能得到一个工作?

回答

4

您没有默认提供程序,因为Qt没有强制使用特定的提供程序。现在更多的是,所有可用的服务都需要注册(以及接受协议/ ToS)才能使用他们的服务。

可用插件的列表可以找到here。 在链接之后,您可以阅读关于每个链接使用情况的具体设置。

添加在QML供应商只是一个声明Plugin型,东西沿该行的事情:

Plugin { 
    name: <provider_name> // { "here" | "mapbox" | "osm" } 
    PluginParameter { name: <param_name>; value: <param_value> } 
    // other parameters 
} 

非常相同的任务可以在C++ /非QML项目进行通过QGeoServiceProvider类。

介意在几个月前访问MapQuest changed,打破了Open Street Map插件。您现在需要凭据才能访问其服务,例如阅读this comment。正如上次链接评论的错误报告页所述,相关补丁已被推送和合并,并将在Qt 5.6.2(和Qt 5.7.1)补丁版本中提供。

相关问题