Qt Positioning Plugins▲
Qt Positioning provides the majority of its functionality through plugins. This document outlines how to develop a new position plugin.
Default plugins▲
Some plugins already ship with Qt. These are:
android |
Wraps Android positioning subsystem. Available only on Android. |
corelocation |
Wraps iOS and macOS positioning subsystems. Available only on Apple platforms supporting corelocation. |
geoclue2 |
A GeoClue v2 backend that provides an interface to the GeoClue v2 D-Bus service. |
gypsy |
A Gypsy backend that provides an interface to the Gypsy daemon. |
winrt |
Wraps WinRT positioning subsystem. Available only on WinRT and Windows10. |
nmea |
An NMEA backend that parses NMEA streams from a GPS receiver to provide position updates. This plugin can use serial port, socket or file as a source. |
positionpoll |
A backend providing only area monitoring functionalities via polling on position updates. |
Plugin Description▲
Each plugin is described by a json file. The json describes the plugins capabilities and version. Below is an example of a json file used by the postionpoll plugin:
{
"Keys"
: ["positionpoll"
],
"Provider"
: "positionpoll"
,
"Position"
: false
,
"Satellite"
: false
,
"Monitor"
: true
,
"Priority"
: 1000
,
"Testable"
: true
}
The entries have the following meaning:
Key |
Description |
---|---|
Keys |
The unique name/key of the plugin. Each position plugin must have a unique name. |
Provider |
The provider name of the services. Multiple plugins may have the same name. In such cases the Version string will be used to further distinguish the plugins. |
Position |
Set to true if the plugin implements a QGeoPositionInfoSource. |
Satellite |
Set to true if the plugin implements a QGeoSatelliteInfoSource. |
Monitor |
Set to true if the plugin implements a QGeoAreaMonitorSource. |
Priority |
The plugin priority. If multiple plugins have the same provider name, the plugin with the higest priority will be used. |
Implementing Plugins▲
A plugin implementer needs to subclass QGeoPositionInfoSourceFactory and override one or more of its functions. If a plugin does not support a specific feature the function should return 0 or utilize the default implementation.