Qt Location 地理服务
Qt Location 通过 GeoService 插件提供大部分功能。本文件概述了如何开发新的 GeoService 插件。
插件描述
每个插件都由一个 json 文件描述。json 文件描述了插件的功能和版本。下面是 OpenStreenMap 插件使用的 json 文件示例:
{ "Keys": ["osm"], "Provider": "osm", "Version": 100, "Experimental": false, "Features": [ "OnlineMappingFeature", "OnlineGeocodingFeature", "ReverseGeocodingFeature", "OnlineRoutingFeature", "OnlinePlacesFeature" ] }
条目含义如下:
关键字 | 说明 |
---|---|
密钥 | 插件的唯一名称/密钥。每个 GeoService 插件都必须有一个唯一的名称。 |
提供商 | 服务提供商名称。多个插件可能具有相同的名称。在这种情况下,将使用版本字符串进一步区分插件。 |
实验性 | 将服务插件标记为实验性。API 开发人员可以选择在实例化QGeoServiceProvider::QGeoServiceProvider() 时忽略此类插件。 |
版本 | 插件版本。如果多个插件具有相同的提供者名称,则将使用版本最高的插件。 |
功能 | 插件/服务提供的功能列表。每个功能都是QGeoServiceProvider 中相应功能的字符串表示。详情请参见QGeoServiceProvider::routingFeatures(),QGeoServiceProvider::geocodingFeatures() 和QGeoServiceProvider::placesFeatures()。 |
实现插件
插件实现者需要子类化 QGeoServiceProviderFactory 和尽可能多的 ManagerEngine 类。
子类化 QGeoServiceProviderFactory 只涉及对以下方法之一的重写:
- QGeoServiceProviderFactory::createGeocodingManagerEngine()
- QGeoServiceProviderFactory::createRoutingManagerEngine()
- QGeoServiceProviderFactory::createPlaceManagerEngine()
如果插件没有提供引擎,相关函数应返回nullptr
。
为希望提供地理编码操作支持的 QGeoServiceProvider 插件实现者提供的接口和便利方法 | |
为 QGeoServiceProvider 插件的实现者提供接口和方便方法,他们希望提供对地理路由信息的访问。 | |
为希望访问地点功能的 QGeoServiceProvider 插件实现者提供的接口 |
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.