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 继承只涉及重写以下方法之一

如果插件不提供引擎,则相关函数应返回 nullptr

QGeoCodingManagerEngine

为想要提供地理编码操作支持的 QGeoServiceProvider 插件的实现者提供接口和便利方法

QGeoRoutingManagerEngine

为想要获取地理路由信息的 QGeoServiceProvider 插件的实现者提供接口和便利方法

QPlaceManagerEngine

为想要提供地点功能的 QGeoServiceProvider 插件的实现者提供接口

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