Spec-Zone.ru › Qt

Класс QGeoPositionInfoSource

Класс QGeoPositionInfoSource — это абстрактный базовый класс для распространения обновлений местоположения. Подробнее...

Заголовок: #include <QGeoPositionInfoSource>
CMake: find_package(Qt6 COMPONENTS Positioning REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
С момента: Qt 5.2
Наследует: QObject
Наследуется:

QNmeaPositionInfoSource

  • Список всех членов, включая наследуемые

Типы публичного доступа

перечисление Ошибка { ОшибкаДоступа, ОшибкаЗакрытия, НетОшибок, ОшибкаНеизвестногоИсточника, ОшибкаТаймаутаОбновления }
перечисление МетодОпределенияМестоположения { НетМетодовОпределенияМестоположения, МетодыОпределенияМестоположенияПоСпутникам, МетодыОпределенияМестоположенияБезСпутников, ВсеМетодыОпределенияМестоположения }
флаги МетодыОпределенияМестоположения

Свойства

  • минимальныйИнтервалОбновления : const int
  • предпочтительныеМетодыОпределенияМестоположения : МетодыОпределенияМестоположения
  • имяИсточника : const QString
  • интервалОбновления : int

Функции публичного доступа

QGeoPositionInfoSource(QObject *parent)
виртуальный ~QGeoPositionInfoSource()
виртуальный QVariant backendProperty(const QString &name) const
виртуальный QGeoPositionInfoSource::Ошибка ошибка() const = 0
виртуальный QGeoPositionInfo последнееИзвестноеМестоположение(bool fromSatellitePositioningMethodsOnly = false) const = 0
виртуальный int минимальныйИнтервалОбновления() const = 0
QGeoPositionInfoSource::МетодыОпределенияМестоположения предпочтительныеМетодыОпределенияМестоположения() const
виртуальный bool setBackendProperty(const QString &name, const QVariant &value)
виртуальный void установитьПредпочтительныеМетодыОпределенияМестоположения(QGeoPositionInfoSource::МетодыОпределенияМестоположения methods)
виртуальный void установитьИнтервалОбновления(int msec)
QString имяИсточника() const
виртуальный QGeoPositionInfoSource::МетодыОпределенияМестоположения поддерживаемыеМетодыОпределенияМестоположения() const = 0
int интервалОбновления() const

Слот публичного доступа

виртуальный void запроситьОбновление(int timeout = 0) = 0
виртуальный void начатьОбновления() = 0
виртуальный void остановитьОбновления() = 0

Сигналы

void произошлаОшибка(QGeoPositionInfoSource::Ошибка positioningError)
void местоположениеОбновлено(const QGeoPositionInfo &update)
void изменилисьПоддерживаемыеМетодыОпределенияМестоположения()

Статические члены публичного доступа

QStringList доступныеИсточники()
QGeoPositionInfoSource * создатьОпределенныйПоУмолчаниюИсточник(QObject *parent)
QGeoPositionInfoSource * создатьОпределенныйПоУмолчаниюИсточник(const QVariantMap &parameters, QObject *parent)
QGeoPositionInfoSource * создатьИсточник(const QString &sourceName, QObject *parent)
QGeoPositionInfoSource * создатьИсточник(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

Подробное описание

Статическая функция QGeoPositionInfoSource::создатьОпределенныйПоУмолчаниюИсточник() создает источник местоположения по умолчанию, соответствующий платформе, если он доступен. В противном случае QGeoPositionInfoSource проверит наличие доступных плагинов, реализующих интерфейс QGeoPositionInfoSourceFactory.

Пользователи подкласса QGeoPositionInfoSource могут запросить текущее местоположение с помощью запроситьОбновление(), или начать и остановить регулярные обновления местоположения с помощью начатьОбновления() и остановитьОбновления(). Когда обновление доступно, генерируется сигнал местоположениеОбновлено(). Последнее известное местоположение можно получить с помощью последнееИзвестноеМестоположение().

Если требуются регулярные обновления местоположения, можно использовать установитьИнтервалОбновления(), чтобы указать, как часто должны генерироваться эти обновления. Если интервал не указан, обновления предоставляются всякий раз, когда они становятся доступными. Например:

// Emit updates every 10 seconds if available
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0);
if (source)
    source->setUpdateInterval(10000);

Чтобы удалить ранее установленный интервал обновления, вызовите установитьИнтервалОбновления() со значением 0.

Примечание: Источник местоположения может иметь минимальное требование к интервалу обновлений, возвращаемое минимальныйИнтервалОбновления().

Примечание: Чтобы использовать этот класс из сервиса Android, см. Qt Positioning на Android.

Документация по типам членов

перечисление QGeoPositionInfoSource::Ошибка

Перечисление Error представляет ошибки, которые могут возникнуть.

Константа Значение Описание
QGeoPositionInfoSource::AccessError 0 Настройка соединения с удалённым бэкендом позиционирования не удалась, так как у приложения не было необходимых привилегий.
QGeoPositionInfoSource::ClosedError 1 Удаленный бэкенд позиционирования закрыл соединение, что происходит, например, в случае, если пользователь переключает службы местоположения в выключенное состояние. Как только служба местоположения будет снова включена, обычные обновления возобновятся.
QGeoPositionInfoSource::NoError 3 Ошибка не произошла.
QGeoPositionInfoSource::UnknownSourceError 2 Произошла неопознанная ошибка.
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2) 4 Если был вызван метод requestUpdate(), эта ошибка указывает, что текущее местоположение не удалось получить в течение заданного времени ожидания. Если был вызван метод startUpdates(), эта ошибка указывает, что этот подкласс QGeoPositionInfoSource определил, что не сможет предоставлять дальнейшие регулярные обновления. В последнем случае ошибка не будет снова генерироваться до тех пор, пока регулярные обновления не возобновятся.

Перечисление QGeoPositionInfoSource::PositioningMethodфлаги QGeoPositionInfoSource::PositioningMethods

Определяет типы методов позиционирования.

Константа Значение Описание
QGeoPositionInfoSource::NoPositioningMethods 0x00000000 Ни один из методов позиционирования.
QGeoPositionInfoSource::SatellitePositioningMethods 0x000000ff Методы позиционирования на основе спутников, такие как GPS или GLONASS.
QGeoPositionInfoSource::NonSatellitePositioningMethods 0xffffff00 Другие методы позиционирования, такие как идентификатор ячейки 3GPP или позиционирование на основе WiFi.
QGeoPositionInfoSource::AllPositioningMethods 0xffffffff Методы позиционирования на основе спутников, как только они будут доступны. В противном случае методы, не основанные на спутниках.

Тип PositioningMethods является псевдонимом для QFlags<PositioningMethod>. Он хранит логическое ИЛИ сочетание значений PositioningMethod.

Документация по свойствам

[read-only] минимальноеВремяОбновления : const int

Это свойство содержит минимальное время (в миллисекундах), необходимое для получения обновления местоположения.

Это минимальное значение, принимаемое методами setUpdateInterval() и requestUpdate().

Функции доступа:

virtual int минимальноеВремяОбновления() const = 0

[bindable] предпочитаемыеМетодыПозиционирования : PositioningMethods

Примечание: Это свойство поддерживает привязки QProperty.

Устанавливает предпочтительные методы позиционирования для данного источника.

Если новые методы включают метод, который не поддерживается источником, этот метод будет проигнорирован.

Если новые методы не включают ни одного метода, доступного/поддерживаемого источником, предпочтительные методы будут установлены в набор методов, которые доступны для источника. Если у источника нет доступных методов (например, потому что служба местоположения выключена или он не предлагает службу местоположения), переданные методы принимаются как есть.

Значение по умолчанию для этого свойства - NoPositioningMethods.

Примечание: Реализации подклассов должны вызывать базовый метод setPreferredPositioningMethods() для того, чтобы preferredPositioningMethods() возвращал правильное значение.

См. также supportedPositioningMethods().

[read-only] имяИсточника : const QString

Это свойство содержит уникальное имя реализации источника местоположения, используемого в данный момент.

Это то же имя, которое можно передать методу createSource() для создания нового экземпляра конкретной реализации источника местоположения.

Функции доступа:

QString имяИсточника() const

[bindable] интервалОбновления : int

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит запрашиваемый интервал в миллисекундах между каждым обновлением.

Если интервал обновления не задан (или равен 0), источник будет предоставлять обновления так часто, как необходимо.

Если интервал обновления задан, источник будет предоставлять обновления с интервалом, как можно более близким к запрошенному интервалу. Если запрошенный интервал меньше, чем минимальноеВремяОбновления(), вместо этого используется минимальный интервал.

Изменения интервала обновления происходят так быстро, как это практически возможно, но время, необходимое для изменения, может варьироваться в зависимости от реализации. Также зависит от реализации, учитывается ли время, прошедшее с предыдущего интервала, как часть нового интервала.

Значение по умолчанию для этого свойства - 0.

Примечание: Реализации подклассов должны вызывать базовый метод setUpdateInterval() для того, чтобы updateInterval() возвращал правильное значение.

Примечание: Это свойство не может использоваться для настройки частоты обновления на iOS и macOS, поскольку их API не предоставляют такой возможности. В этих системах этот параметр используется только для установки UpdateTimeoutError и вызова сигнала errorOccurred, если обновление не получено в течение желаемого интервала.

Документация по членам-функциям

QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *родитель)

Создаёт источник местоположения с указанным родителем.

[signal] void QGeoPositionInfoSource::возникновениеОшибки(QGeoPositionInfoSource::Ошибка positioningError)

Этот сигнал генерируется после возникновения ошибки. Параметр positioningError описывает тип произошедшей ошибки.

[signal] void QGeoPositionInfoSource::обновлениеМестоположения(const QGeoPositionInfo &обновление)

Если вызван метод startUpdates() или requestUpdate(), этот сигнал генерируется, когда доступно обновление.

Значение обновление содержит значение нового обновления.

[pure virtual slot] void QGeoPositionInfoSource::запросОбновления(int времяОжидания = 0)

Попытка получить текущее местоположение и вывести обновлениеМестоположения() с этой информацией. Если текущее местоположение не может быть найдено в течение заданного времяОжидания (в миллисекундах) или если времяОжидания меньше значения, возвращаемого минимальноеВремяОбновления(), генерируется сигнал возникновениеОшибки() с UpdateTimeoutError.

Если время ожидания равно нулю, время ожидания по умолчанию устанавливается на разумный период времени, соответствующий источнику.

Это ничего не делает, если в данный момент выполняется другой запрос обновления. Однако его можно вызвать даже в том случае, если startUpdates() уже был вызван и в настоящее время выполняются регулярные обновления.

Если источник использует несколько методов позиционирования, он пытается получить текущее местоположение из наиболее точного метода позиционирования в течение заданного времени ожидания.

Примечание: Начиная с Qt6, этот метод всегда сбрасывает последнюю ошибку на NoError перед запросом местоположения.

Примечание: Чтобы понять, как использовать этот метод из службы Android, см. Qt Positioning на Android.

[pure virtual slot] void QGeoPositionInfoSource::запуститьОбновления()

Начинает генерировать обновления с регулярными интервалами, как указано в setUpdateInterval().

Если setUpdateInterval() не был вызван, источник будет генерировать обновления, как только они появятся.

Сигнал возникновениеОшибки() с UpdateTimeoutError будет сгенерирован, если этот подкласс QGeoPositionInfoSource определит, что не сможет предоставлять регулярные обновления. Это может произойти, если спутниковое позиционирование потеряно или обнаружена аппаратная ошибка. Обновления местоположения будут возобновлены, если данные появятся позже. Ошибка UpdateTimeoutError не будет сгенерирована снова до тех пор, пока периодические обновления не возобновятся.

Примечание: Начиная с Qt6, этот метод всегда сбрасывает последнюю ошибку на NoError перед запуском обновлений.

Примечание: Чтобы понять, как использовать этот метод из сервиса Android, см. Qt Positioning на Android.

В iOS, начиная с версии 8, фреймворк Core Location требует дополнительных записей в файле Info.plist с ключами NSLocationAlwaysUsageDescription или NSLocationWhenInUseUsageDescription и строкой, отображаемой в запросе на авторизацию. Ключ NSLocationWhenInUseUsageDescription используется при запросе разрешения на использование служб геолокации, когда приложение находится в фоновом режиме. Ключ NSLocationAlwaysUsageDescription используется при запросе разрешения на использование служб геолокации, когда приложение запущено (как в фоновом, так и в активном режиме). Если оба ключа определены, NSLocationWhenInUseUsageDescription имеет приоритет в режиме фонового приложения.

[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()

Останавливает выброс обновлений с регулярными интервалами.

[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()

Этот сигнал генерируется, когда изменились поддерживаемые методы позиционирования. Причиной изменения может быть включение/выключение пользователем служб геолокации или ограничение служб геолокации определенными типами (например, только GPS). Обратите внимание, что изменения поддерживаемых методов позиционирования не могут быть обнаружены на всех платформах. supportedPositioningMethods() предоставляет обзор текущей поддержки платформы.

Эта функция была введена в Qt 5.12.

[virtual] QGeoPositionInfoSource::~QGeoPositionInfoSource()

Уничтожает источник позиционирования.

[static] QStringList QGeoPositionInfoSource::availableSources()

Возвращает список доступных плагинов-источников. Это включает любой плагин-бекенд по умолчанию для текущей платформы.

[virtual, since Qt 5.14] QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const

Возвращает значение свойства, специфичного для бэкенда, с именем name, если оно присутствует. В противном случае возвращаемое значение будет недействительным. Поддерживаемые свойства, специфичные для бэкенда, перечислены и описаны в Плагины Qt Positioning#Плагины по умолчанию.

Эта функция была введена в Qt 5.14.

См. также setBackendProperty.

[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)

Создаёт и возвращает источник позиционирования с заданным parent, который считывает данные местоположения из системных источников по умолчанию или плагин с наивысшим приоритетом.

Возвращает nullptr если у системы нет источника позиционирования по умолчанию, не удалось найти валидные плагины или у пользователя нет разрешения на доступ к текущему местоположению.

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap &parameters, QObject *parent)

Создаёт и возвращает источник позиционирования с заданным parent, который считывает данные местоположения из системных источников по умолчанию или плагин с наивысшим приоритетом.

Возвращает nullptr если у системы нет источника позиционирования по умолчанию, не удалось найти валидные плагины или у пользователя нет разрешения на доступ к текущему местоположению.

Этот метод передаёт parameters фабрике для настройки источника.

Эта функция была введена в Qt 5.14.

[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)

Создаёт и возвращает источник позиционирования с заданным parent, загрузив плагин с именем sourceName.

Возвращает nullptr если плагин не найден.

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

Создаёт и возвращает источник позиционирования с заданным parent, загрузив плагин с именем sourceName.

Возвращает nullptr если плагин не найден.

Этот метод передаёт parameters фабрике для настройки источника.

Эта функция была введена в Qt 5.14.

[pure virtual] QGeoPositionInfoSource::Error QGeoPositionInfoSource::error() const

Возвращает тип последней произошедшей ошибки.

Примечание: Начиная с Qt6, последняя ошибка всегда сбрасывается при вызове startUpdates() или requestUpdate().

[pure virtual] QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const

Возвращает обновление, содержащее последнее известное положение, или пустое обновление, если таковое отсутствует.

Если fromSatellitePositioningMethodsOnly равно true, возвращает последнее известное положение, полученное с помощью метода позиционирования по спутникам; если таковое отсутствует, возвращает пустое обновление.

[virtual, since Qt 5.14] bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)

Устанавливает свойство, специфичное для бэкенда, с именем name, со значением value. Возвращает true при успехе, false в противном случае. Свойства, специфичные для бэкенда, могут использоваться для конфигурирования поведения подсистемы позиционирования во время выполнения. Поддерживаемые свойства, специфичные для бэкенда, перечислены и описаны в Плагины Qt Positioning#Плагины по умолчанию.

Эта функция была введена в Qt 5.14.

См. также backendProperty.

[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const

Возвращает методы позиционирования, доступные для этого источника. Доступность определяется как возможность использования на момент вызова этой функции. Поэтому пользовательские настройки, такие как выключенные службы геолокации или ограничения на поставщиков спутниковой информации, отражаются этой функцией. Уведомления о событиях изменения состояния во время выполнения можно получить с помощью supportedPositioningMethodsChanged().

Не все платформы различают различные методы позиционирования или сообщают о текущих пользовательских настройках устройства. В следующей таблице представлен обзор текущего состояния платформ:

Платформа Краткое описание
Android Статус отдельных поставщиков и общее состояние службы геолокации известны и передаются, когда служба геолокации активна.
GeoClue Захардкожено всегда возвращать AllPositioningMethods.
GeoClue2 Отдельные поставщики не различимы, но отражается отключённая служба геолокации.
iOS/tvOS Захардкожено всегда возвращать AllPositioningMethods.
macOS Захардкожено всегда возвращать AllPositioningMethods.
Windows (UWP) Отдельные поставщики не различимы, но отражается отключённая служба геолокации.

См. также supportedPositioningMethodsChanged() и setPreferredPositioningMethods().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qgeopositioninfosource.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API