Плагины позиционирования Qt
Qt Positioning предоставляет большую часть своей функциональности через плагины. Этот документ описывает, как разработать новый плагин позиционирования.
Плагины по умолчанию
Некоторые плагины уже поставляются с Qt. Это:
| android | Оборачивает подсистему позиционирования Android. Доступен только на Android. |
| corelocation | Оборачивает подсистемы позиционирования iOS и macOS. Доступен только на платформах Apple, поддерживающих corelocation. |
| geoclue | Взаимодействует с GeoClue v0.12. Требуется наличие GeoClue 0.12 для работы. |
| geoclue2 | Взаимодействует с GeoClue v2. Требуется наличие GeoClue v2 для работы. |
| gypsy | Взаимодействует с демоном Gypsy. Требуется наличие Gypsy для работы. |
| winrt | Оборачивает подсистему позиционирования WinRT. Доступен только на WinRT и Windows10. |
| serialnmea | Бэкенд Serial NMEA, который анализирует потоки NMEA с GPS-приёмника по последовательному каналу для предоставления обновлений координат. |
| positionpoll | Бэкенд, предоставляющий только функциональность мониторинга области путём опроса обновлений позиции. |
Описание плагина
Каждый плагин описывается файлом json. Файл json описывает возможности и версию плагина. Ниже приведён пример файла json, используемого плагином positionpoll:
{
"Keys": ["positionpoll"],
"Provider": "positionpoll",
"Position": false,
"Satellite": false,
"Monitor": true,
"Priority": 1000,
"Testable": true
} Элементы имеют следующее значение:
| Ключ | Описание |
|---|---|
| Ключи | Уникальное имя/ключ плагина. Каждый плагин позиционирования должен иметь уникальное имя. |
| Провайдер | Имя провайдера сервисов. Несколько плагинов могут иметь одинаковое имя. В таких случаях для дальнейшего различения плагинов используется строка Version. |
| Позиция | Установлено в true если плагин реализует QGeoPositionInfoSource. |
| Спутник | Установлено в true если плагин реализует QGeoSatelliteInfoSource. |
| Мониторинг | Установлено в true если плагин реализует QGeoAreaMonitorSource. |
| Приоритет | Приоритет плагина. Если несколько плагинов имеют одинаковое имя провайдера, будет использован плагин с наивысшим приоритетом. |
Реализация плагинов
Реализатор плагина должен унаследовать QGeoPositionInfoSourceFactory и переопределить одну или несколько его функций. Если плагин не поддерживает определённую функцию, функция должна возвращать 0 или использовать реализацию по умолчанию.
- QGeoPositionInfoSourceFactory::areaMonitor()
- QGeoPositionInfoSourceFactory::positionInfoSource()
- QGeoPositionInfoSourceFactory::satelliteInfoSource()
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qtpositioning-plugins.html