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