class QGeoPositionInfoSource#

QGeoPositionInfoSource 类是一个用于分发位置更新的抽象基类。 更多

Inheritance diagram of PySide6.QtPositioning.QGeoPositionInfoSource

继承自: QNmeaPositionInfoSource

摘要#

属性#

方法#

虚函数#

信号#

静态函数#

注意

此文档可能包含自动从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信号。

访问函数
__init__(parent)#
参数:

parentQObject

创建一个具有指定parent的位置资源。

static availableSources()#
返回类型:

字符串列表

返回可用源插件列表。这包括任何当前平台默认的后端插件。

backendProperty(name)#
参数:

name – str

返回类型:

对象

如果存在,返回名为name的后端特定属性的值。否则,返回的值将无效。支持的后端特定属性列表及其描述在Qt Positioning plugins#Default plugins中。

static createDefaultSource(parent)#
参数:

parentQObject

返回类型:

QGeoPositionInfoSource

创建并返回一个具有给定parent的位置资源,该资源读取系统默认的位置数据源,或具有最高可用优先级的插件。

如果没有默认的位置源、无法找到有效的插件或用户没有访问当前位置的权限,则返回nullptr

static createDefaultSource(parameters, parent)
参数:
  • parameters – 键类型为QString,值类型为QVariant的字典。

  • parentQObject

返回类型:

QGeoPositionInfoSource

创建并返回一个具有给定parent的位置资源,该资源读取系统默认的位置数据源,或具有最高可用优先级的插件。

如果没有默认的位置源、无法找到有效的插件或用户没有访问当前位置的权限,则返回nullptr

此方法将parameters传递给工厂以配置资源。

static createSource(sourceName, parent)#
参数:
  • sourceName – str

  • parentQObject

返回类型:

QGeoPositionInfoSource

通过加载名为sourceName的插件,创建并返回一个具有给定parent的位置资源。

如果插件未找到,则返回 nullptr

static createSource(sourceName, parameters, parent)
参数:
  • sourceName – str

  • parameters – 键类型为QString,值类型为QVariant的字典。

  • parentQObject

返回类型:

QGeoPositionInfoSource

通过加载名为sourceName的插件,创建并返回一个具有给定parent的位置资源。

如果插件未找到,则返回 nullptr

此方法将parameters传递给工厂以配置资源。

abstract error()#
返回类型:

错误

返回最后发生的错误类型。

注意

从 Qt6 开始,调用 startUpdates()requestUpdate() 时,总是重置最后错误。

errorOccurred(arg__1)#
参数:

arg__1Error

在错误发生之后,会发出此信号。参数 positioningError 描述了发生的错误类型。

abstract lastKnownPosition([fromSatellitePositioningMethodsOnly=false])#
参数:

fromSatellitePositioningMethodsOnly – bool

返回类型:

QGeoPositionInfo

返回包含最后已知位置的更新,如果不可用则返回空更新。

如果 fromSatellitePositioningMethodsOnly 为 true,则返回从卫星定位方法收到的最后已知位置;如果不可用,则返回空更新。

abstract minimumUpdateInterval()#
返回类型:

int

属性 minimumUpdateIntervalᅟ 的获取器。

positionUpdated(update)#
参数:

updateQGeoPositionInfo

如果调用 startUpdates()requestUpdate(),则在更新的数据可用时,将发出此信号。

update 值包含新的更新值。

preferredPositioningMethods()#
返回类型:

结合 定位方法

属性 preferredPositioningMethodsᅟ 的获取器。

abstract requestUpdate([timeout=0])#
参数:

timeout – int

尝试获取当前位置并使用此信息触发 positionUpdated() 。如果无法在给定的 timeout (以毫秒为单位)内找到当前位置,或者如果 timeout 小于由 minimumUpdateInterval() 返回的值,将触发带有 UpdateTimeoutErrorerrorOccurred() 信号。

如果超时为零,超时将默认为一个合理的超时时间,适用于该源。

如果有其他更新请求正在进行,则此操作不会执行任何操作。然而,即使已经调用 startUpdates() 并定期更新正在执行,也可以调用此方法。

如果源使用多种定位方法,它将尝试在给定的超时内从最准确的定位方法获取当前位置。

注意

从 Qt6 开始,此方法在请求位置之前始终重置最后错误为 NoError

注意

要了解如何从 Android 服务中使用此方法,请参阅 Android 上的 Qt 定位

setBackendProperty(name, value)#
参数:
  • name – str

  • value – object

返回类型:

bool

设置名为 name 的后端特定属性为 value。在成功时返回 true,否则返回 false。后端特定属性可用于在运行时配置定位子系统行为。支持的后端特定属性在 Qt 定位插件#默认插件 中列出和描述。

参阅

后端属性

setPreferredPositioningMethods(methods)#
参数:

methodsPositioningMethod的组合。

设置属性 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()#

停止定期发出更新。

抽象 supportedPositioningMethods()#
返回类型:

结合 定位方法

返回此源可用的定位方法。可用性定义为在调用此函数时的可使用性。因此,用户设置(如关闭位置服务或对基于卫星的位置提供商的限制)将反映在此函数中。可以通过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 的获取器。