Класс QGeoPositionInfoSource
Класс QGeoPositionInfoSource — это абстрактный базовый класс для распространения обновлений местоположения. Подробнее...
| Заголовок: | #include <QGeoPositionInfoSource> |
| qmake: | QT += positioning |
| С момента: | Qt 5.2 |
| Наследует: | QObject |
| Наследуется от: |
Открытые типы
| Перечисление | Ошибка { ОшибкаДоступа, ОшибкаЗакрытия, НетОшибок, ОшибкаНеизвестногоИсточника } |
| Перечисление | МетодОпределенияПоложения { НетМетодовОпределенияПоложения, МетодыОпределенияПоложенияПоСпутниковымДанным, МетодыОпределенияПоложенияНеПоСпутниковымДанным, ВсеМетодыОпределенияПоложения } |
| Флаги | МетодыОпределенияПоложения |
Свойства
- минимальныйИнтервалОбновления : const int
- имяИсточника : const QString
- интервалОбновления : int
- 1 свойство унаследовано от QObject
Открытые функции
| QGeoPositionInfoSource(QObject *parent) | |
| virtual | ~QGeoPositionInfoSource() |
| virtual Ошибка | ошибка() const = 0 |
| virtual QGeoPositionInfo | последнееИзвестноеПоложение(bool толькоПоСпутниковымМетодам = false) const = 0 |
| virtual int | минимальныйИнтервалОбновления() const = 0 |
| МетодыОпределенияПоложения | предпочтительныеМетодыОпределенияПоложения() const |
| virtual void | установитьПредпочтительныеМетодыОпределенияПоложения(МетодыОпределенияПоложения методы) |
| virtual void | установитьИнтервалОбновления(int мс) |
| QString | имяИсточника() const |
| virtual МетодыОпределенияПоложения | поддерживаемыеМетодыОпределенияПоложения() const = 0 |
| int | интервалОбновления() const |
- 31 открытая функция унаследована от QObject
Открытые слоты
| virtual void | запросОбновления(int timeout = 0) = 0 |
| virtual void | начатьОбновления() = 0 |
| virtual 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::создатьИсточениПоУмолчанию() создает источник местоположения по умолчанию, подходящий для платформы, если он доступен. В противном случае QGeoPositionInfoSource будет искать доступные плагины, реализующие интерфейс QGeoPositionInfoSourceFactory.
Пользователи подкласса QGeoPositionInfoSource могут запросить текущее местоположение с помощью запросОбновления(), или начать и остановить регулярные обновления местоположения с помощью начатьОбновления() и остановитьОбновления(). Когда обновление доступно, испускается местоположениеОбновлено(). Последнее известное местоположение можно получить с помощью последнееИзвестноеПоложение().
Если требуются регулярные обновления местоположения, установитьИнтервалОбновления() можно использовать для указания частоты испускания этих обновлений. Если интервал не указан, обновления просто предоставляются всякий раз, когда они становятся доступны. Например:
// Emit updates every 10 seconds if available
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0);
if (source)
source->setUpdateInterval(10000); Чтобы удалить интервал обновления, который был ранее задан, вызовите установитьИнтервалОбновления() со значением 0.
Обратите внимание, что у источника местоположения может быть минимальное требуемое значение для интервалов обновлений, возвращаемое минимальныйИнтервалОбновления().
Предупреждение: В Windows CE невозможно определить, поддерживает ли устройство GPS. Источник местоположения по умолчанию на устройстве Windows CE без поддержки GPS никогда не предоставит никаких данных о местоположении.
Документация типов членов
перечисление 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 является псевдонимом для 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 перегружен в этом классе. Чтобы подключиться к нему с помощью синтаксиса указателя на функцию, необходимо указать тип сигнала в статическом преобразовании, как показано в этом примере:
connect(geoPositionInfoSource, static_cast<void(QGeoPositionInfoSource::*)(QGeoPositionInfoSource::Error)>(&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/archives/qt-5.6/qgeopositioninfosource.html