Qt 定位插件#

默认插件和实现 Qt 定位插件

Qt 定位通过插件提供其大部分功能。本文档概述了如何开发一个新的位置插件。

默认插件#

一些插件已经随 Qt 一起提供。这些插件包括

android

包装 Android 定位子系统。仅在 Android 上可用。

corelocation

包装 iOS 和 macOS 定位子系统。仅在支持 corelocation 的 Apple 平台上可用。

geoclue2

一个 GeoClue v2 后端,提供对 GeoClue v2 D-Bus 服务的接口。

gypsy

一个 Gypsy 后端,提供对 Gypsy 守护进程的接口。

winrt

包装 WinRT 定位子系统。仅在 WinRT 和 Windows10 上可用。

nmea

一个 NMEA 后端,从 GPS 接收器解析 NMEA 流以提供位置更新。此插件可以使用串行端口、套接字或文件作为源。

positionpoll

仅通过轮询位置更新提供区域监视功能的后端。

插件描述#

每个插件都由一个 json 文件描述。json文件描述了插件的功能和版本。以下是 positionpoll 插件使用的 json 文件示例

<Code snippet "/data/qt5-full-670/6.7.0/Src/qtbase/../../../plugins/position/positionpoll/plugin.json" not found>

条目具有以下含义

描述

插件的唯一名称/键。每个定位插件都必须有唯一的名称。

提供商

服务的提供者名称。多个插件可能有相同的名称。在这种情况下,将使用版本字符串进一步区分插件。

位置

如果插件实现了一个QGeoPositionInfoSource,则设置为true

卫星

如果插件实现了一个QGeoSatelliteInfoSource,则设置为true

监视

如果插件实现了一个QGeoAreaMonitorSource,则设置为true

优先级

插件优先级。如果有多个插件的提供者名称相同,则使用优先级最高的插件。

实现插件#

插件开发者需要继承 QGeoPositionInfoSourceFactory 类,并重写其一个或多个函数。如果一个插件不支持某个特定功能,则函数应返回0或使用默认实现。