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或使用默认实现。