Qt 定位插件¶
默认插件和实现Qt定位插件
Qt Positioning 通过插件提供了大部分功能。本文档概述了如何开发一个新的位置插件。
默认插件¶
一些插件已经随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描述了插件的功能和版本。以下是postionpoll插件使用的json文件示例:
<Code snippet "/data/qt5-full-681/6.8.1/Src/qtbase/../../../plugins/position/positionpoll/plugin.json" not found>
条目具有以下含义:
键
描述
Keys
插件的唯一名称/键。每个位置插件必须有一个唯一的名称。
Provider
服务的提供者名称。多个插件可能具有相同的名称。在这种情况下,将使用版本字符串来进一步区分插件。
位置
如果插件实现了
QGeoPositionInfoSource
,则设置为true
。卫星
如果插件实现了
QGeoSatelliteInfoSource
,则设置为true
。监控
如果插件实现了
QGeoAreaMonitorSource
,则设置为true
。优先级
插件的优先级。如果有多个插件具有相同的提供者名称,将使用优先级最高的插件。
实现插件¶
插件实现者需要子类化QGeoPositionInfoSourceFactory
并重写其一个或多个函数。如果插件不支持特定功能,该函数应返回0或使用默认实现。