Qt Positioning provides the majority of its functionality through plugins. This document outlines how to develop a new position plugin.
Some plugins already ship with Qt. These are:
| android | Wraps Android positioning subsystem. Available only on Android. | 
| corelocation | A Core Location backend wraps iOS and macOS positioning subsystems. Available only on Apple platforms supporting corelocation. | 
| geoclue | Interfaces with GeoClue v0.12. Requires GeoClue 0.12 to be present to function. | 
| geoclue2 | Interfaces with GeoClue v2. Requires GeoClue v2 to be present to function. | 
| gypsy | Interfaces with Gypsy daemon. Requires Gypsy to be present to function. | 
| winrt | Wraps WinRT positioning subsystem. Available only on WinRT and Windows10. | 
| serialnmea | A Serial NMEA backend that parses NMEA streams from a GPS receiver over a serial link to provide position updates. | 
| positionpoll | A backend providing only area monitoring functionalities via polling on position updates. | 
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 | 描述 | 
|---|---|
| 键 | 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
								
								.
							 | 
						
| 优先级 | The plugin priority. If multiple plugins have the same provider name, the plugin with the higest priority will be used. | 
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.