Плагины позиционирования Qt
Qt Positioning предоставляет большую часть своей функциональности через плагины. Этот документ описывает, как разработать новый плагин позиционирования.
Плагины по умолчанию
Некоторые плагины уже поставляются с Qt. Это:
| android | Оборачивает подсистему позиционирования Android. Доступен только на Android. |
| corelocation | Оборачивает подсистемы позиционирования iOS и macOS. Доступен только на платформах Apple, поддерживающих corelocation. |
| geoclue2 | Бэкенд GeoClue v2, предоставляющий интерфейс к службе GeoClue v2 D-Bus. |
| gypsy | Бэкенд Gypsy, предоставляющий интерфейс к демону Gypsy. |
| winrt | Оборачивает подсистему позиционирования WinRT. Доступен только на WinRT и Windows10. |
| nmea | Бэкенд NMEA, который анализирует потоки NMEA от GPS-приёмника для предоставления обновлений позиции. Этот плагин может использовать последовательный порт, сокет или файл в качестве источника. |
| positionpoll | Бэкенд, предоставляющий только функциональность мониторинга области с помощью опроса обновлений позиции. |
Описание плагина
Каждый плагин описывается файлом json. Файл json описывает возможности и версию плагина. Ниже приведен пример файла json, используемого плагином postionpoll:
{
"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-6.2/qtpositioning-plugins.html