Класс QGeoPositionInfoSource
Класс QGeoPositionInfoSource — это абстрактный базовый класс для распространения обновлений местоположения. Подробнее...
| Заголовок: | #include <QGeoPositionInfoSource> |
| qmake: | QT += positioning |
| С момента: | Qt 5.2 |
| Наследуется от: | QObject |
| Наследуется: |
Типы публичного доступа
| Перечисление | Ошибка { ОшибкаДоступа, ОшибкаЗакрытия, НетОшибок, ОшибкаНеизвестногоИсточника } |
| Перечисление | МетодПозиционирования { НетМетодовПозиционирования, МетодыПозиционированияПоСпутникам, МетодыПозиционированияНеПоСпутникам, ВсеМетодыПозиционирования } |
| Флаги | МетодыПозиционирования |
Свойства
- минимальныйИнтервалОбновления : const int
- имяИсточника : const QString
- интервалОбновления : int
- 1 свойство унаследовано от QObject
Публичные функции
| QGeoPositionInfoSource(QObject *родитель) | |
| виртуальный | ~QGeoPositionInfoSource() |
| виртуальный QGeoPositionInfoSource::Ошибка | ошибка() const = 0 |
| виртуальный QGeoPositionInfo | последнееИзвестноеПоложение(bool толькоИзМетодовПозиционированияПоСпутникам = ...) const = 0 |
| виртуальный int | минимальныйИнтервалОбновления() const = 0 |
| QGeoPositionInfoSource::МетодыПозиционирования | предпочитаемыеМетодыПозиционирования() const |
| виртуальный void | установитьПредпочитаемыеМетодыПозиционирования(QGeoPositionInfoSource::МетодыПозиционирования методы) |
| виртуальный void | установитьИнтервалОбновления(int мс) |
| QString | имяИсточника() const |
| виртуальный QGeoPositionInfoSource::МетодыПозиционирования | поддерживаемыеМетодыПозиционирования() const = 0 |
| int | интервалОбновления() const |
- 34 публичных функции унаследованы от QObject
Публичные слоты
| виртуальный void | запроситьОбновление(int таймаут = ...) = 0 |
| виртуальный void | начатьОбновления() = 0 |
| виртуальный void | остановитьОбновления() = 0 |
- 1 публичный слот унаследован от QObject
Сигналы
| void | ошибка(QGeoPositionInfoSource::Ошибка ошибкаПозиционирования) |
| void | обновлениеПозиции(const QGeoPositionInfo &обновление) |
| void | таймаутОбновления() |
- 2 сигнала унаследованы от QObject
Статические публичные члены
| QStringList | доступныеИсточники() |
| QGeoPositionInfoSource * | создатьДефолтныйИсточник(QObject *родитель) |
| QGeoPositionInfoSource * | создатьИсточник(const QString &имяИсточника, QObject *родитель) |
- 10 статических публичных членов унаследованы от QObject
Дополнительные унаследованные члены
- 1 публичная переменная унаследована от QObject
- 9 защищенных функций унаследованы от QObject
- 2 защищенные переменные унаследованы от QObject
Подробное описание
Класс QGeoPositionInfoSource — это абстрактный базовый класс для распространения обновлений местоположения.
Статическая функция QGeoPositionInfoSource::createDefaultSource() создает источник местоположения по умолчанию, соответствующий платформе, если он доступен. В противном случае QGeoPositionInfoSource будет проверять наличие плагинов, реализующих интерфейс QGeoPositionInfoSourceFactory.
Пользователи подкласса QGeoPositionInfoSource могут запросить текущее местоположение с помощью запроситьОбновление(), или начать и остановить регулярные обновления местоположения с помощью начатьОбновления() и остановитьОбновления(). При наличии обновления, испускается обновлениеПозиции(). Последнее известное местоположение может быть получено с помощью последнееИзвестноеПоложение().
Если требуются регулярные обновления местоположения, установитьИнтервалОбновления() может быть использовано для указания частоты испускания этих обновлений. Если интервал не указан, обновления просто предоставляются по мере их появления. Например:
// Emit updates every 10 seconds if available
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0);
if (source)
source->setUpdateInterval(10000); Чтобы убрать интервал обновления, ранее установленный, вызовите установитьИнтервалОбновления() со значением 0.
Обратите внимание, что у источника местоположения может быть минимальное значение для интервала обновлений, возвращаемое минимальныйИнтервалОбновления().
Документация по типам членов
перечисление QGeoPositionInfoSource::Ошибка
Перечисление Ошибка представляет ошибки, которые могут возникнуть.
| Постоянная | Значение | Описание |
|---|---|---|
QGeoPositionInfoSource::AccessError |
0 |
Настройка подключения к удаленному бэкэнду позиционирования не удалась, так как у приложения отсутствовали необходимые привилегии. |
QGeoPositionInfoSource::ClosedError |
1 |
Удаленный бэкэнд позиционирования закрыл соединение, что происходит, например, в случае, если пользователь переключает службы местоположения в режим выключения. Как только служба местоположения будет снова включена, возобновятся регулярные обновления. |
QGeoPositionInfoSource::NoError |
3 |
Ошибок не произошло. |
QGeoPositionInfoSource::UnknownSourceError |
2 |
Произошла неизвестная ошибка. |
перечисление QGeoPositionInfoSource::МетодПозиционированияфлаги QGeoPositionInfoSource::МетодыПозиционирования
Определяет типы методов позиционирования.
| Константа | Значение | Описание |
|---|---|---|
QGeoPositionInfoSource::NoPositioningMethods |
0x00000000 |
Ни один из методов позиционирования. |
QGeoPositionInfoSource::SatellitePositioningMethods |
0x000000ff |
Методы позиционирования на основе спутников, такие как GPS или ГЛОНАСС. |
QGeoPositionInfoSource::NonSatellitePositioningMethods |
0xffffff00 |
Другие методы позиционирования, такие как идентификатор ячейки 3GPP или позиционирование на основе Wi-Fi. |
QGeoPositionInfoSource::AllPositioningMethods |
0xffffffff |
Методы позиционирования на основе спутников, как только они станут доступны. В противном случае методы, не основанные на спутниках. |
Тип PositioningMethods — это typedef для QFlags<PositioningMethod>. Он хранит логическое ИЛИ сочетание значений PositioningMethod.
Документация по свойствам
minimumUpdateInterval : const int
Это свойство содержит минимальное время (в миллисекундах), необходимое для получения обновления положения.
Это минимальное значение, принимаемое setUpdateInterval() и requestUpdate().
Функции доступа:
| virtual int | minimumUpdateInterval() const = 0 |
sourceName : const QString
Это свойство содержит уникальное имя реализации источника позиционирования, используемой в настоящее время.
Это то же имя, которое можно передать createSource() для создания нового экземпляра конкретной реализации источника позиционирования.
Функции доступа:
| QString | sourceName() const |
updateInterval : int
Это свойство содержит запрашиваемый интервал в миллисекундах между каждым обновлением.
Если интервал обновления не задан (или равен 0), источник будет предоставлять обновления так часто, как это необходимо.
Если интервал обновления задан, источник будет предоставлять обновления с интервалом, максимально приближенным к запрошенному интервалу. Если запрошенный интервал меньше, чем minimumUpdateInterval(), используется минимальный интервал.
Изменения интервала обновления будут происходить как можно быстрее, однако время изменения может варьироваться в зависимости от реализации. Также зависит от реализации, учитывается ли время, прошедшее с предыдущего интервала, как часть нового интервала.
Значение по умолчанию для этого свойства равно 0.
Примечание: Реализации подклассов должны вызывать базовый метод реализации setUpdateInterval(), чтобы updateInterval() возвращал правильное значение.
Функции доступа:
| int | updateInterval() const |
| virtual void | setUpdateInterval(int msec) |
Документация по функциям-членам
QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)
Создаёт источник позиционирования с указанным parent.
[virtual] QGeoPositionInfoSource::~QGeoPositionInfoSource()
Удаляет источник позиционирования.
[static] QStringList QGeoPositionInfoSource::availableSources()
Возвращает список доступных плагинов источников. Это включает любой плагин по умолчанию для текущей платформы.
[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)
Создаёт и возвращает источник позиционирования с заданным parent, который считывает данные о местоположении из системных источников по умолчанию или плагин с наивысшим доступным приоритетом.
Возвращает 0, если система не имеет источника позиционирования по умолчанию, не удалось найти допустимые плагины или пользователь не имеет разрешения на доступ к текущему местоположению.
[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)
Создаёт и возвращает источник позиционирования с заданным parent, загружая плагин с именем sourceName.
Возвращает 0, если плагин не найден.
[pure virtual] QGeoPositionInfoSource::Error QGeoPositionInfoSource::error() const
Возвращает тип ошибки, которая произошла последней.
[signal] void QGeoPositionInfoSource::error(QGeoPositionInfoSource::Error positioningError)
Этот сигнал излучается после возникновения ошибки. Параметр positioningError описывает тип произошедшей ошибки.
Этот сигнал не излучается, когда произошёл updateTimeout().
Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобный помощник для получения указателя на функцию, как показано в этом примере:
connect(geoPositionInfoSource, QOverload<QGeoPositionInfoSource::Error>::of(&QGeoPositionInfoSource::error),
[=](QGeoPositionInfoSource::Error positioningError){ /* ... */ });
[pure virtual] QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = ...) const
Возвращает обновление, содержащее последнее известное положение, или нулевое обновление, если оно недоступно.
Если fromSatellitePositioningMethodsOnly имеет значение true, возвращается последнее известное положение, полученное от метода позиционирования на основе спутников; если оно недоступно, возвращается нулевое обновление.
[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)
Если вызваны startUpdates() или requestUpdate(), этот сигнал излучается, когда становится доступным обновление.
Значение update содержит значение нового обновления.
QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::preferredPositioningMethods() const
Возвращает методы позиционирования, заданные setPreferredPositioningMethods().
См. также setPreferredPositioningMethods().
[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = ...)
Попытка получить текущее положение и излучение positionUpdated() с этой информацией. Если текущее положение не может быть найдено в течение заданного timeout (в миллисекундах) или если timeout меньше значения, возвращаемого minimumUpdateInterval(), излучается updateTimeout().
Если значение таймаута равно нулю, таймаут по умолчанию устанавливается на разумное значение таймаута, соответствующее источнику.
Это ничего не делает, если в процессе находится другой запрос обновления. Однако его можно вызвать, даже если startUpdates() уже был вызван и регулярные обновления находятся в процессе.
Если источник использует несколько методов позиционирования, он пытается получить текущее положение с помощью наиболее точного метода позиционирования в течение заданного таймаута.
[virtual] void QGeoPositionInfoSource::setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods)
Устанавливает предпочтительные методы позиционирования для этого источника на methods.
Если methods включает метод, который не поддерживается источником, неподдерживаемый метод будет проигнорирован.
Если methods не включает ни один метод, поддерживаемый источником, предпочтительные методы будут установлены на набор методов, которые поддерживает источник.
Примечание: При переопределении этого метода подклассы должны вызывать базовый метод реализации, чтобы preferredPositioningMethods() возвращал правильное значение.
См. также preferredPositioningMethods() и supportedPositioningMethods().
[pure virtual slot] void QGeoPositionInfoSource::startUpdates()
Начинает излучать обновления с регулярными интервалами, как указано в setUpdateInterval().
Если setUpdateInterval() не был вызван, источник будет излучать обновления, как только они станут доступны.
Сигнал updateTimeout() будет выпущен, если этот подкласс QGeoPositionInfoSource определит, что не сможет предоставлять регулярные обновления. Это может произойти, если спутниковая фиксация потеряна или обнаружена ошибка оборудования. Обновления позиции возобновятся, если данные станут доступны позже. Сигнал updateTimeout() не будет повторно выпущен до возобновления периодических обновлений.
В iOS, начиная с версии 8, фреймворк Core Location требует дополнительных записей в файле Info.plist с ключами NSLocationAlwaysUsageDescription или NSLocationWhenInUseUsageDescription и строкой, отображаемой в запросе на авторизацию. Ключ NSLocationWhenInUseUsageDescription используется при запросе разрешения на использование сервисов местоположения, когда приложение находится в фоновом режиме. Ключ NSLocationAlwaysUsageDescription используется при запросе разрешения на использование сервисов местоположения, когда приложение запущено (как в фоновом, так и в активном режиме). Если оба ключа определены, NSLocationWhenInUseUsageDescription имеет приоритет в фоновом режиме.
[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()
Останавливает выпуск обновлений с регулярными интервалами.
[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const
Возвращает доступные методы позиционирования для этого источника.
См. также setPreferredPositioningMethods().
[signal] void QGeoPositionInfoSource::updateTimeout()
Если был вызван requestUpdate(), этот сигнал будет выпущен, если текущую позицию не удалось получить в течение указанного тайм-аута.
Если был вызван startUpdates(), этот сигнал будет выпущен, если этот подкласс QGeoPositionInfoSource определит, что не сможет предоставлять дальнейшие регулярные обновления. Этот сигнал не будет выпущен повторно до возобновления регулярных обновлений.
Хотя срабатывание этого сигнала можно считать ошибочным условием, это не подразумевает выпуск сигнала error(). Требуется только выпуск сигнала updateTimeout(), чтобы указать на тайм-аут.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qgeopositioninfosource.html