- class QGeoPositionInfoSource#
QGeoPositionInfoSource
类是一个用于分发位置更新的抽象基类。 更多…摘要#
属性#
minimumUpdateInterval
- 该属性保存检索位置更新所需的最小时间(以毫秒为单位)preferredPositioningMethods
- 设置此源的首选定位方法sourceName
- 这个属性用于保存正在使用的位置源实现的唯一名称updateInterval
- 这个属性用于保存请求从每次更新开始的间隔(毫秒)
方法#
def
__init__()
def
sourceName()
def
updateInterval()
虚函数#
def
error()
def
requestUpdate()
def
startUpdates()
def
stopUpdates()
信号#
静态函数#
注意
此文档可能包含自动从C++翻译成Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果发现问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单的方式告知我们。
详细描述#
静态函数
createDefaultSource()
创建一个适合平台的默认位置源,如果可用。否则,QGeoPositionInfoSource
将检查实现QGeoPositionInfoSourceFactory
接口的可用插件。QGeoPositionInfoSource
子类用户可以使用requestUpdate()
请求当前位置,或使用startUpdates()
和stopUpdates()
开始和停止定期位置更新。当可用更新时,会发出positionUpdated()
信号。可以使用lastKnownPosition()
访问最后已知的位置。如果需要定期位置更新,可以使用
setUpdateInterval()
指定这些更新的发送频率。如果没有指定间隔,则更新将随时可用。例如// Emit updates every 10 seconds if available QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0); if (source) source->setUpdateInterval(10000);
要删除先前设置的更新间隔,请以0为值调用
setUpdateInterval()
。注意
位置源可能需要更新间隔的最小值要求,如由
minimumUpdateInterval()
返回。注意
要从 Android 服务中使用此类,请参阅 Qt Positioning on Android .
- class Error#
错误枚举表示可能发生的错误。
常量
描述
QGeoPositionInfoSource.AccessError
由于应用程序缺少必要的权限,连接到远程位置后端设置失败。
QGeoPositionInfoSource.ClosedError
远程位置后端关闭了连接,例如当用户将位置服务切换到关闭时。当位置服务重新启用时,定期更新将恢复。
QGeoPositionInfoSource.NoError
未发生错误。
QGeoPositionInfoSource.UnknownSourceError
发生了未识别的错误。
QGeoPositionInfoSource.UpdateTimeoutError
如果调用了
requestUpdate()
,此错误表示未能在指定的超时时间内检索当前位置。如果调用了startUpdates()
,此错误表示此QGeoPositionInfoSource
子类确定它将无法提供进一步的定期更新。在后一种情况下,直到定期更新恢复后,错误将不会再次发出。
- class PositioningMethod#
(继承自
enum.Flag
) 定义定位方法类型。常量
描述
QGeoPositionInfoSource.NoPositioningMethods
没有定位方法。
QGeoPositionInfoSource.SatellitePositioningMethods
基于卫星的定位方法,如 GPS 或 GLONASS。
QGeoPositionInfoSource.NonSatellitePositioningMethods
其他定位方法,如 3GPP 小区标识或基于 Wi-Fi 的定位。
QGeoPositionInfoSource.AllPositioningMethods
一旦可用,就提供基于卫星的定位方法。否则,提供非卫星方法。
注意
当使用
from __feature__ import true_property
时,可以直接使用属性;否则通过访问函数。- property minimumUpdateIntervalᅟ: int#
此属性包含获取位置更新所需的最小时间(以毫秒为单位)。
这是
setUpdateInterval()
和requestUpdate()
所接受的最低值。- 属性 preferredPositioningMethods: QGeoPositionInfoSource.PositioningMethod 的组合#
该属性设置了此源的默认定位方法。
如果新的方法包括源不支持的定位方法,则该方法将被忽略。
如果新的方法不包含源可用/支持的单个方法,则默认方法将设置为源可用的方法集。如果源没有可用的方法(例如,因为其位置服务被关闭或它不提供位置服务),则直接接受传递的方法。
该属性的默认值为
NoPositioningMethods
.注意
子类实现必须调用
setPreferredPositioningMethods()
的基类实现,以确保preferredPositioningMethods()
返回正确的值。- 属性 sourceName: str#
该属性保存正在使用的位置源实现的唯一名称。
这是可以将该名称传递给
createSource()
以创建特定位置源实现的新实例的名称。- 访问函数
- 属性 updateInterval: int#
该属性保存请求的每个更新之间的时间间隔(毫秒)。
如果未设置更新间隔(或将设置为 0),则源将根据需要提供更新。
如果设置了更新间隔,则源将尽量提供接近请求间隔的更新。如果请求的间隔小于
minimumUpdateInterval()
,则使用最小间隔。对更新间隔的更改将在尽可能短的时间内发生,但更改所需的时间可能会因实现而异。是否将上一次间隔经过的时间作为新间隔的一部分计算也是实现依赖的。
该属性的默认值为 0。
注意
子类实现必须调用
setUpdateInterval()
的基类实现,以便updateInterval()
返回正确的值。注意
此属性不能用于调整iOS和macOS上的更新频率,因为它们的API不提供此类可能性。在这些系统中,此参数仅用于设置
UpdateTimeoutError
并在期望的间隔内未收到更新时触发一个errorOccurred
信号。创建一个具有指定
parent
的位置资源。- static availableSources()#
- 返回类型:
字符串列表
返回可用源插件列表。这包括任何当前平台默认的后端插件。
- backendProperty(name)#
- 参数:
name – str
- 返回类型:
对象
如果存在,返回名为
name
的后端特定属性的值。否则,返回的值将无效。支持的后端特定属性列表及其描述在Qt Positioning plugins#Default plugins中。创建并返回一个具有给定
parent
的位置资源,该资源读取系统默认的位置数据源,或具有最高可用优先级的插件。如果没有默认的位置源、无法找到有效的插件或用户没有访问当前位置的权限,则返回
nullptr
。- static createDefaultSource(parameters, parent)
- 参数:
parameters – 键类型为QString,值类型为QVariant的字典。
parent –
QObject
- 返回类型:
创建并返回一个具有给定
parent
的位置资源,该资源读取系统默认的位置数据源,或具有最高可用优先级的插件。如果没有默认的位置源、无法找到有效的插件或用户没有访问当前位置的权限,则返回
nullptr
。此方法将
parameters
传递给工厂以配置资源。通过加载名为
sourceName
的插件,创建并返回一个具有给定parent
的位置资源。如果插件未找到,则返回
nullptr
。- static createSource(sourceName, parameters, parent)
- 参数:
sourceName – str
parameters – 键类型为QString,值类型为QVariant的字典。
parent –
QObject
- 返回类型:
通过加载名为
sourceName
的插件,创建并返回一个具有给定parent
的位置资源。如果插件未找到,则返回
nullptr
。此方法将
parameters
传递给工厂以配置资源。返回最后发生的错误类型。
注意
从 Qt6 开始,调用
startUpdates()
或requestUpdate()
时,总是重置最后错误。在错误发生之后,会发出此信号。参数
positioningError
描述了发生的错误类型。- abstract lastKnownPosition([fromSatellitePositioningMethodsOnly=false])#
- 参数:
fromSatellitePositioningMethodsOnly – bool
- 返回类型:
返回包含最后已知位置的更新,如果不可用则返回空更新。
如果
fromSatellitePositioningMethodsOnly
为 true,则返回从卫星定位方法收到的最后已知位置;如果不可用,则返回空更新。- abstract minimumUpdateInterval()#
- 返回类型:
int
属性
minimumUpdateIntervalᅟ
的获取器。- positionUpdated(update)#
- 参数:
update –
QGeoPositionInfo
如果调用
startUpdates()
或requestUpdate()
,则在更新的数据可用时,将发出此信号。update
值包含新的更新值。属性
preferredPositioningMethodsᅟ
的获取器。- abstract requestUpdate([timeout=0])#
- 参数:
timeout – int
尝试获取当前位置并使用此信息触发
positionUpdated()
。如果无法在给定的timeout
(以毫秒为单位)内找到当前位置,或者如果timeout
小于由minimumUpdateInterval()
返回的值,将触发带有UpdateTimeoutError
的errorOccurred()
信号。如果超时为零,超时将默认为一个合理的超时时间,适用于该源。
如果有其他更新请求正在进行,则此操作不会执行任何操作。然而,即使已经调用
startUpdates()
并定期更新正在执行,也可以调用此方法。如果源使用多种定位方法,它将尝试在给定的超时内从最准确的定位方法获取当前位置。
注意
从 Qt6 开始,此方法在请求位置之前始终重置最后错误为
NoError
。注意
要了解如何从 Android 服务中使用此方法,请参阅 Android 上的 Qt 定位 。
- setBackendProperty(name, value)#
- 参数:
name – str
value – object
- 返回类型:
bool
设置名为
name
的后端特定属性为value
。在成功时返回true
,否则返回false
。后端特定属性可用于在运行时配置定位子系统行为。支持的后端特定属性在 Qt 定位插件#默认插件 中列出和描述。参阅
- setPreferredPositioningMethods(methods)#
- 参数:
methods – PositioningMethod的组合。
设置属性 preferredPositioningMethods 的值。
- setUpdateInterval(msec)#
- 参数:
msec – int
设置属性 updateInterval 的值。
- sourceName()#
- 返回类型:
str
属性 sourceName 的获取方法。
- abstractstartUpdates()#
以指定的时间间隔开始定期更新,该时间间隔由 setUpdateInterval() 方法指定。
如果尚未调用 setUpdateInterval,源将一旦数据可用就立即发出更新。
如果此 QGeoPositionInfoSource 子类确定将无法提供定期更新(例如,卫星定位丢失或硬件检测到错误),将发出带有 UpdateTimeoutError 的信号
errorOccurred()
。如果数据稍后变得可用,位置更新将重新开始。只有在定期更新恢复后,才会再次发出 UpdateTimeoutError 错误。注意
自 Qt6 以来,此方法在开始更新之前始终将最后错误重置为 NoError。
注意
要了解如何从 Android 服务中使用此方法,请参阅 Android 上的 Qt 定位 。
从iOS 8版本开始,Core Location框架需要应用程序的Info.plist中添加额外的条目,键为NSLocationAlwaysUsageDescription或NSLocationWhenInUseUsageDescription,以及一个字符串,将在授权提示中显示。键NSLocationWhenInUseUsageDescription用于请求在应用程序处于前台时使用位置服务的权限。键NSLocationAlwaysUsageDescription用于请求在应用程序运行时(前台和后台)使用位置服务的权限。如果两者都定义了,则NSLocationWhenInUseUsageDescription在前台模式下具有优先级。
- 抽象 stopUpdates()#
停止定期发出更新。
返回此源可用的定位方法。可用性定义为在调用此函数时的可使用性。因此,用户设置(如关闭位置服务或对基于卫星的位置提供商的限制)将反映在此函数中。可以通过
supportedPositioningMethodsChanged()
获得状态变化时的运行时通知。并非所有平台都区分不同的定位方法或通信当前用户设备配置。以下表格提供了当前平台情况概览
平台
简要描述
Android
当位置服务处于活动状态时,知道并通信了各个提供者状态和一般的位置服务状态。
GeoClue
始终返回
AllPositioningMethods
.GeoClue2
各个提供者无法区分,但会反映禁用的位置服务。
iOS
始终返回
AllPositioningMethods
.macOS
始终返回
AllPositioningMethods
.Windows (UWP)
各个提供者无法区分,但会反映禁用的位置服务。
- supportedPositioningMethodsChanged()#
当支持的定位方法发生变化时,会发出此信号。变化的原因可能是用户打开/关闭位置服务或限制位置服务到某些类型(例如仅GPS)。请注意,并非所有平台上都可以检测到支持的定位方法的变化。《a class="reference internal" href="#PySide6.QtPositioning.QGeoPositionInfoSource.supportedPositioningMethods" title="PySide6.QtPositioning.QGeoPositionInfoSource.supportedPositioningMethods">
supportedPositioningMethods()
provides an overview of the current platform support。- updateInterval()#
- 返回类型:
int
属性 updateInterval 的获取器。