Map插件显示没有服务提供商

时间:2016-12-01 17:43:23

标签: qml qtquick2 qtlocation qtpositioning

我正在尝试在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

为什么我没有可用的插件,我怎样才能让它工作?

1 个答案:

答案 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)补丁版本中提供。