Positioning

From SailfishOS Documentation


Location and Positioning

Sailfish OS utilises the GeoClue framework for positioning, and clients can use the QtPositioning APIs to receive position and satellite information updates, and the QtLocation APIs to access location services (such as querying nearby points of interest, accessing map tiles, and calculating navigation routes between two positions).

Position information is highly confidential, and Sailfish OS supports a policy framework which allows the user to lock the GPS positioning capability.


API

The location and positioning stack in Sailfish OS includes several API components. All of the native API components are fully open-source.


Platform API

Sailfish OS uses the QtPositioning and QtLocation APIs as its platform API, utilising the GeoClue backend for positioning. The latest upstream version of the QtLocation API can be found at: http://code.qt.io/cgit/qt/qtlocation.git/


There are some Sailfish OS-specific GeoClue provider plugins which provide position and satellite updates to clients, and also a plugin to connman which allows the GPS technology power state to be controlled by clients using the connman API (whose internal implementation makes DBus calls to the primary GeoClue provider plugin).


The code related to the location and positioning stack can be found in the following repositories:

Android Compatibility

Position data is shared with Android applications which have been approved by the user, via a bridge service. This includes position updates as reported by the device GPS if turned on, and also information about satellites which are being used by the GPS.


Contribution

Community or third-party contributions to various components of the location and positioning stack in Sailfish OS is encouraged and appreciated. The vast majority of the components are open-source, and the developers of the components actively monitor issues raised within the Mer Project gitlab instance (https://git.merproject.org/) and the Mer Project bug tracker (https://bugs.merproject.org/), and are also available in IRC (#jollamobile@freenode) and via email.