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.


