0

我试图Map在 QML 5.7 中渲染一个空的,以便绘制地理定位的折线。但是,没有插件可用于提供地图数据:

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

1 回答 1

4

您没有默认提供者,因为 Qt 不强制使用特定的提供者。现在更重要的是,所有可用的服务都需要注册(并接受协议/服务条款)才能使用他们的服务。

可以在此处找到可用插件的列表。按照链接,您可以阅读有关每个使用的特定设置。

在 QML 中添加提供者只是声明一个Plugin类型的问题,大致如下:

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

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

请注意,几个月前对 MapQuest 的访问发生了变化,破坏了 Open Street Map 插件。您现在需要凭据才能访问他们的服务,例如阅读此评论。相关补丁已被推送和合并,如上次链接评论的错误报告页面所述,将在 Qt 5.6.2(和 Qt 5.7.1)补丁版本中提供。

于 2016-12-02T02:21:47.367 回答