Spec-Zone.ru › Qt 5.11

Класс QGeoPositionInfoSource

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

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

QNmeaPositionInfoSource

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

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

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

Свойства

  • минимальныйИнтервалОбновления : 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

Spec-Zone.ru

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