Тип QML PositionSource
Тип PositionSource предоставляет текущие координаты устройства. Подробнее...
| Заявление об импорте: | import QtPositioning |
| С момента: | Qt 5.2 |
Свойства
- active : bool
- name : string
- parameters : list<PluginParameter>
- position : Position
- preferredPositioningMethods : перечисление
- sourceError : перечисление
- supportedPositioningMethods : перечисление
- updateInterval : int
- valid : bool
Методы
- Значение backendProperty(string name)
- bool setBackendProperty(string name, Variant value)
- start()
- stop()
- update(int timeout)
Подробное описание
Тип PositionSource предоставляет информацию о текущих координатах устройства пользователя. Координаты доступны как тип Position, который содержит все стандартные параметры, обычно доступные от GPS и других подобных систем, включая долготу, широту, скорость и детали точности.
Поскольку различные источники координат доступны на разных платформах и устройствах, они классифицируются по своему основному типу (Спутниковый, Неспутниковый и ВсеСпособыОпределенияКоординат). Доступные методы для текущей платформы могут быть перечислены в свойстве supportedPositioningMethods.
Чтобы указать, какие методы подходят для вашего приложения, установите свойство preferredPositioningMethods. Если предпочтительные методы недоступны, вместо этого будет выбран стандартный источник данных местоположения для платформы. Если стандартный источник недоступен (потому что ни один не установлен для текущей платформы или он отключен), свойство valid будет установлено в значение false.
Свойство updateInterval можно использовать для указания частоты, с которой ваше приложение желает получать обновления координат. Методы start(), stop() и update() могут использоваться для управления работой PositionSource, а также свойство active, которое при установке эквивалентно вызову start() или stop().
Когда PositionSource активен, обновления координат можно получить, либо просто используя свойство position в привязке (как значение свойства другого элемента), либо предоставив реализацию обработчика сигнала onPositionChanged.
Пример использования
Следующий пример показывает простой PositionSource, используемый для получения обновлений каждую секунду и вывода долготы и широты в консоль.
PositionSource {
id: src
updateInterval: 1000
active: true
onPositionChanged: {
var coord = src.position.coordinate;
console.log("Coordinate:", coord.longitude, coord.latitude);
}
} Пример приложения GeoFlickr демонстрирует, как использовать PositionSource в вашем приложении для получения локальных данных для пользователей из REST веб-сервиса.
Управление состоянием работы
Как упоминалось выше, PositionSource предоставляет два способа управления состоянием его работы:
Примечание: Очень важно не смешивать эти подходы. Если свойство active используется для управления объектом PositionSource, но позднее start() или stop() вызывается из другой части кода, привязка будет нарушена, что может привести, например, к элементу UI, который больше не связан с каким-либо базовым объектом.
Рассмотрим следующий пример плохого кода, где свойство active привязано к состоянию CheckBox, а вызов stop() в обработчике сигнала onClicked нарушает эту привязку.
Window {
width: 640
height: 480
visible: true
PositionSource {
id: posSource
name: "geoclue2"
active: cb.checked
}
Column {
anchors.centerIn: parent
spacing: 20
CheckBox {
id: cb
}
Button {
id: btn
text: "Stop"
onClicked: {
posSource.stop()
}
}
}
} После нажатия кнопки Стоп, выполняется stop(), и привязка для свойства active нарушается. В этот момент элемент UI CheckBox больше не управляет объектом PositionSource.
Простым решением в этом случае является обновление состояния CheckBox из обработчика сигнала onClicked. Как только CheckBox будет снят с флага, свойство active будет уведомлено, и состояние объекта PositionSource будет обновлено соответственно. UI также будет в согласованном состоянии.
Button {
id: btn
text: "Stop"
onClicked: {
cb.checked = false
}
} Примечание: Использование update() для запроса одного обновления координат не влияет на привязки свойства active, поэтому их можно использовать вместе без каких-либо проблем.
См. также QtPositioning::Position, QGeoPositionInfoSource, PluginParameter и Привязываемые свойства Qt.
Документация по свойствам
active : bool
Это свойство указывает, активен ли источник координат. Установка этого свойства в значение false эквивалентна вызову stop, а установка в значение true эквивалентна вызову start.
См. также start, stop и update.
name : string
Это свойство содержит уникальное внутреннее имя плагина, в настоящее время предоставляющего информацию о местоположении.
Установка свойства заставляет PositionSource использовать конкретный поставщик позиционирования. Если PositionSource активен в момент изменения свойства name, он станет неактивным. Если указанный поставщик позиционирования не может быть загружен, источник координат станет недействительным.
Изменение свойства name может привести к изменению свойств updateInterval, supportedPositioningMethods и preferredPositioningMethods также.
[default, since QtPositioning 5.14] parameters : list<PluginParameter>
Это свойство содержит список параметров плагина.
Это свойство было введено в QtPositioning 5.14.
position : Position
Это свойство содержит последние известные данные о местоположении. Это свойство только для чтения.
Тип Position имеет различные члены местоположения, чья валидность может быть проверена с помощью соответствующих функций валидности (например, иногда обновление не имеет данных о скорости или высоте).
Однако, всякий раз, когда был получен сигнал positionChanged, можно предположить, что по крайней мере position::coordinate::latitude, position::coordinate::longitude и position::timestamp являются валидными.
См. также start, stop и update.
preferredPositioningMethods : enumeration
Это свойство содержит предпочтительные методы позиционирования текущего источника.
- PositionSource.NoPositioningMethods - Метод позиционирования не предпочтительны.
- PositionSource.SatellitePositioningMethods - Методы спутникового позиционирования, такие как GPS, должны быть предпочтительны.
- PositionSource.NonSatellitePositioningMethods - Методы, не основанные на спутниках, должны быть предпочтительны.
- PositionSource.AllPositioningMethods - Любые методы позиционирования приемлемы.
sourceError : enumeration
Это свойство содержит ошибку, которая произошла в последний раз с PositionSource.
- PositionSource.AccessError - Настройка подключения к удаленному бэкенду позиционирования не удалась, так как у приложения отсутствовали необходимые привилегии.
- PositionSource.ClosedError - Бэкенд позиционирования закрыл соединение, что происходит, например, когда пользователь отключает службы определения местоположения. Как только служба определения местоположения снова включится, регулярные обновления возобновятся.
- PositionSource.NoError - Ошибка не произошла.
- PositionSource.UnknownSourceError - Произошла неопознанная ошибка.
- PositionSource.UpdateTimeoutError - Текущее местоположение не удалось получить в течение заданного времени ожидания, или данный PositionSource определил, что не сможет предоставлять дальнейшие регулярные обновления.
supportedPositioningMethods : перечисление
Это свойство содержит поддерживаемые методы позиционирования текущего источника.
- PositionSource.NoPositioningMethods - Методы позиционирования не поддерживаются (источник отсутствует).
- PositionSource.SatellitePositioningMethods - Поддерживаются методы позиционирования на основе спутников, такие как GPS.
- PositionSource.NonSatellitePositioningMethods - Поддерживаются методы, не основанные на спутниках.
- PositionSource.AllPositioningMethods - Поддерживаются как методы позиционирования на основе спутников, так и методы, не основанные на спутниках.
updateInterval : int
Это свойство содержит желаемый интервал между обновлениями (в миллисекундах).
См. также QGeoPositionInfoSource::updateInterval().
valid : bool
Это свойство имеет значение true, если объект PositionSource получил действительный бэкэнд-плагин для предоставления данных. Если false, другие методы объекта PositionSource не будут иметь эффекта.
Приложения должны проверять это свойство, чтобы определить, доступно ли и включено ли позиционирование на платформе выполнения, и реагировать соответственно.
Документация по методам
[since Qt Positioning 5.14] Variant backendProperty(string name)
Возвращает значение свойства, специфичного для бэкэнда, с именем name, если оно присутствует. В противном случае, включая вызов на незаинициализированном PositionSource, возвращаемое значение будет недействительным. Поддерживаемые свойства, специфичные для бэкэнда, перечислены и описаны в Qt Positioning plugins#Default plugins.
Этот метод был представлен в Qt Positioning 5.14.
См. также backendProperty и QGeoPositionInfoSource::setBackendProperty.
[since Qt Positioning 5.14] bool setBackendProperty(string name, Variant value)
Устанавливает свойство, специфичное для бэкэнда, с именем name, в значение value. Возвращает true при успехе, false в противном случае, включая вызов на незаинициализированном PositionSource. Поддерживаемые свойства, специфичные для бэкэнда, перечислены и описаны в Qt Positioning plugins#Default plugins.
Этот метод был представлен в Qt Positioning 5.14.
См. также backendProperty и QGeoPositionInfoSource::setBackendProperty.
start()
Запрашивает обновления от источника местоположения. Использует updateInterval, если он установлен, в противном случае — интервал по умолчанию. Если доступного источника нет, этот метод не имеет эффекта.
Примечание: Вызов этого метода прерывает привязку свойства active.
См. также stop, update и active.
stop()
Останавливает обновления от источника местоположения. Если доступного источника нет или он не активен, этот метод не имеет эффекта.
Примечание: Вызов этого метода прерывает привязку свойства active.
См. также start, update и active.
update(int timeout)
Удобный метод для запроса единственного обновления от источника местоположения. Если доступного источника нет, этот метод не имеет эффекта.
Если источник местоположения не активен, он активируется на время, необходимое для получения обновления, или до тех пор, пока запрос не истечет. Период ожидания запроса зависит от источника.
Значение timeout задается в миллисекундах. Если timeout равно нулю (значение по умолчанию), оно устанавливается на разумный период ожидания, подходящий для источника.
См. также start, stop и active.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtpositioning-positionsource.html