Spec-Zone.ru › Qt 5.13

Класс QGeoPositionInfoSource

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

Заголовок: #include <QGeoPositionInfoSource>
qmake: QT += positioning
С тех пор: Qt 5.2
Наследует: QObject
Наследуется от:

QNmeaPositionInfoSource

Этот класс был представлен в Qt 5.2.

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

Типы публичного интерфейса

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

Свойства

  • minimumUpdateInterval : const int
  • имяИсточника : const QString
  • интервалОбновления : int

Открытые функции

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

Открытые слоты

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

Сигналы

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

Статические открытые члены

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

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

Статическая функция QGeoPositionInfoSource::создатьОпределённыйИсточник() создаёт источник позиционирования по умолчанию, подходящий для платформы, если такой доступен. В противном случае, 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.

END_OF_DOCUMENT_MARKER

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

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.

[signal] void QGeoPositionInfoSource::error(QGeoPositionInfoSource::Error positioningError)

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

Этот сигнал не излучается при возникновении updateTimeout().

Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию для получения указателя на функцию, как показано в этом примере:

connect(geoPositionInfoSource, QOverload<QGeoPositionInfoSource::Error>::of(&QGeoPositionInfoSource::error),
    [=](QGeoPositionInfoSource::Error positioningError){ /* ... */ });

[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)

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

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

[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = ...)

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

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

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

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

[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()

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

[signal] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()

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

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

[signal] void QGeoPositionInfoSource::updateTimeout()

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

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

Хотя срабатывание этого сигнала можно считать ошибкой, это не подразумевает излучения сигнала error(). Необходимо только излучение сигнала updateTimeout() для указания таймаута.

[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

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

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

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

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

QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::preferredPositioningMethods() const

Возвращает методы позиционирования, установленные с помощью setPreferredPositioningMethods().

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

[virtual] void QGeoPositionInfoSource::setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods)

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

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

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

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

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

[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-5.13/qgeopositioninfosource.html

Spec-Zone.ru

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