Spec-Zone.ru › Qt 5.9

Класс QGeoPositionInfoSource

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

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

QNmeaPositionInfoSource

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

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

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

Свойства

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

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

QGeoPositionInfoSource(QObject *parent)
виртуальный ~QGeoPositionInfoSource()
виртуальный Ошибка ошибка() const = 0
виртуальный QGeoPositionInfo последнееИзвестноеПоложение(bool отСпутниковыхМетодовПозиционированияТолько = false) const = 0
виртуальный int минимальныйИнтервалОбновления() const = 0
МетодыПозиционирования предпочитаемыеМетодыПозиционирования() const
виртуальный void установитьПредпочитаемыеМетодыПозиционирования(МетодыПозиционирования методы)
виртуальный void установитьИнтервалОбновления(int мс)
QString имяИсточника() const
виртуальный МетодыПозиционирования поддерживаемыеМетодыПозиционирования() const = 0
int интервалОбновления() const
  • 32 открытые функции унаследованы от QObject

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

виртуальный void запроситьОбновление(int таймаут = 0) = 0
виртуальный void начатьОбновления() = 0
виртуальный void остановитьОбновления() = 0
  • 1 открытый слот унаследован от QObject

Сигналы

void ошибка(QGeoPositionInfoSource::Ошибка ошибкаПозиционирования)
void обновлениеПозиции(const QGeoPositionInfo &обновление)
void таймаутОбновления()
  • 2 сигнала унаследованы от QObject

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

QStringList доступныеИсточники()
QGeoPositionInfoSource * создатьПоУмолчанию(QObject *parent)
QGeoPositionInfoSource * создатьИсточник(const QString &имяИсточника, QObject *parent)
  • 11 статических открытых членов унаследованы от QObject

Дополнительные унаследованные члены

  • 9 защищённых функций унаследованы от 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] 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 = false) const

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

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

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

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

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

PositioningMethods QGeoPositionInfoSource::preferredPositioningMethods() const

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

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

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

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

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

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

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

[virtual] void QGeoPositionInfoSource::setPreferredPositioningMethods(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] 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/qt-5.9/qgeopositioninfosource.html

Spec-Zone.ru

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