Qt Location GeoServices
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 插件的实现者提供接口 |
© 2024 Qt 公司有限公司。本文件中包含的文档贡献是各自所有者的版权。本文件提供的文档是根据免费软件基金会发布的 GNU 自由文档许可版1.3 的条款许可的。Qt及其相关标志是芬兰的 Qt 公司以及全球其他国家的商标。所有其他商标均为各自所有者的财产。