PySide6.QtPositioning.QGeoAreaMonitorSource¶
- class QGeoAreaMonitorSource¶
QGeoAreaMonitorSource类能够检测指定坐标集的接近变化。更多…概要¶
方法¶
def
__init__()def
sourceName()
虚拟方法¶
def
activeMonitors()def
error()def
requestUpdate()def
stopMonitoring()
信号¶
def
areaEntered()def
areaExited()def
errorOccurred()def
monitorExpired()
静态函数¶
def
createSource()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
当当前位置进入或离开指定区域时,
QGeoAreaMonitorSource会发出信号。每个区域由QGeoAreaMonitorInfo对象指定。例如:# public MyClass() : QObject() monitor = QGeoAreaMonitorSource.createDefaultSource(self) if monitor: connect(monitor, SIGNAL(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo)), self, SLOT(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo))) connect(monitor, SIGNAL(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo)), self, SLOT(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo))) bigBen = QGeoAreaMonitorInfo("Big Ben") position = QGeoCoordinate(51.50104, -0.124632) bigBen.setArea(QGeoCircle(position, 100)) monitor.startMonitoring(bigBen) else: print("Could not create default area monitor") public Q_SLOTS: def areaEntered(mon, update): Q_UNUSED(mon) print("Now within 100 meters, current position is", update.coordinate()) def areaExited(mon, update): Q_UNUSED(mon) print("No longer within 100 meters, current position is", update.coordinate())
QGeoAreaMonitorSource遵循单例模式。具有相同sourceName()的类的每个实例共享相同的区域监控后端。如果通过startMonitoring()或requestUpdate()添加了一个新的QGeoAreaMonitorInfo对象,它可以通过该类的另一个实例检索(前提是它们来自相同的区域监控提供者插件)。相同的单例模式适用于该类使用的QGeoPositionInfoSource实例。以下代码片段强调了这种行为:QGeoAreaMonitorSource *s1 = QGeoAreaMonitorSource::createSource("blah", this); QGeoAreaMonitorSource *s2 = QGeoAreaMonitorSource::createSource("blah", this); QVERIFY(s1->positionInfoSource() == s2->positionInfoSource);
- class Error¶
定义定位方法的类型。
Error 枚举表示可能发生的错误。
常量
描述
QGeoAreaMonitorSource.AccessError
由于应用程序缺少所需的权限,与远程区域监控后端的连接设置失败。
QGeoAreaMonitorSource.InsufficientPositionInfo
区域监控源无法获取位置信息,或者获取的位置信息精度不足以提供有效的区域监控。
QGeoAreaMonitorSource.NoError
没有发生错误。
QGeoAreaMonitorSource.UnknownSourceError
发生了一个未识别的错误。
- class AreaMonitorFeature¶
(继承自
enum.Flag) 定义区域监控能力的类型。常量
描述
QGeoAreaMonitorSource.PersistentAreaMonitorFeature
QGeoAreaMonitorInfo实例可以被设置为持久化。持久化监视器即使在管理监视器的应用程序未运行时也会保持活动状态。QGeoAreaMonitorSource.AnyAreaMonitorFeature
匹配所有可能的区域监控功能。
使用给定的
parent创建一个监控源。- abstract activeMonitors()¶
- Return type:
返回
QGeoAreaMonitorSource对象已知的所有活动监视器的列表。通过
startMonitoring()启动了一个活动监视器。对于每个活动监视器,源对象将发出所需的信号,例如areaEntered()或areaExited()。同一应用程序中的多个QGeoAreaMonitorSource实例共享相同的活动监视器对象。除非一个活动的
QGeoAreaMonitorInfoisPersistent(),否则活动的QGeoAreaMonitorInfo将在当前应用程序终止时停止。- abstract activeMonitors(lookupArea)
- Parameters:
lookupArea –
QGeoShape- Return type:
返回已知的
QGeoAreaMonitorSource对象中所有活动监视器的列表,其中心位于lookupArea内。如果lookupArea为空,则返回的列表将为空。通过
startMonitoring()启动了一个活动监视器。对于每个活动监视器,源对象将发出所需的信号,例如areaEntered()或areaExited()。同一应用程序中的多个QGeoAreaMonitorSource实例共享相同的活动监视器对象。除非一个活动的
QGeoAreaMonitorInfoisPersistent(),否则活动的QGeoAreaMonitorInfo将在当前应用程序终止时停止。另请参阅
- areaEntered(monitor, update)¶
- Parameters:
监控 –
QGeoAreaMonitorInfoupdate –
QGeoPositionInfo
当当前位置从活动
monitor之外的位置移动到监控区域内时触发。update保存了新位置。- areaExited(monitor, update)¶
- Parameters:
监控 –
QGeoAreaMonitorInfo更新 –
QGeoPositionInfo
当当前位置从活动
monitor内的位置移动到监控区域外的位置时触发。update保存了新位置。- static availableSources()¶
- Return type:
字符串列表
返回可用的监控插件列表,包括默认的系统后端(如果可用)。
- backendProperty(name)¶
- Parameters:
name – str
- Return type:
对象
返回名为
name的后端特定属性的值(如果存在)。否则,返回的值将无效。另请参阅
创建并返回一个监控源,该监控源使用底层系统上的资源来监控给定
parent的区域。如果系统不支持位置监控,则返回
nullptr。通过加载名为
sourceName的插件,创建并返回一个具有给定parent的监控源。如果找不到插件,则返回
nullptr。返回上次发生的错误类型。
注意
自Qt6以来,当调用
startMonitoring()或requestUpdate()时,最后的错误总是被重置。此信号在发生错误后发出。
areaMonitoringError参数描述了发生的错误类型。- monitorExpired(monitor)¶
- Parameters:
监控 –
QGeoAreaMonitorInfo
当
monitor过期时发出。过期的区域监视器会自动从activeMonitors()列表中移除。另请参阅
- positionInfoSource()¶
- Return type:
返回当前由该
QGeoAreaMonitorSource对象使用的QGeoPositionInfoSource。如果未设置其他对象,该函数将返回createDefaultSource()。如果没有默认的
QGeoPositionInfoSource存在,函数将返回nullptr。使用返回的
QGeoPositionInfoSource实例时,应考虑它可能位于不同的线程中。- abstract requestUpdate(monitor, signal)¶
- Parameters:
监控 –
QGeoAreaMonitorInfosignal – str
- Return type:
布尔
启用单次区域监控。对于
monitor的区域监控将在此QGeoAreaMonitorSource实例首次发出signal之前执行。一旦信号发出,monitor将自动从activeMonitors()列表中移除。如果monitor无效或已过有效期,此函数将返回false。QGeoAreaMonitor singleShotMonitor; QGeoAreaMonitorSource * source = QGeoAreaMonitorSource::createDefaultSource(this); //... bool ret = source->requestUpdate(singleShotMonitor, SIGNAL(areaExited(QGeoAreaMonitor,QGeoPositionInfo)));
上述
singleShotMonitor对象一旦首次发出areaExited()信号,将停止发送更新。在此之前,根据区域上下文,任何其他信号可能会发出零次或多次。无法同时请求同一监控对象的多个信号的更新。对此函数的最后一次调用决定了更新停止的信号。在此阶段,只有
areaEntered()和areaExited()信号可用于终止监控过程。如果区域监控后端不支持
PersistentAreaMonitorFeature,则在QGeoAreaMonitorSource实例上请求持久监控将失败。如果
monitor已经通过startMonitoring()注册,它将被转换为单次行为。- setBackendProperty(name, value)¶
- Parameters:
name – str
value – 对象
- Return type:
布尔
将名为
name的后端特定属性设置为value。成功时返回true,否则返回false。后端特定属性可用于在运行时配置区域监控子系统的行为。另请参阅
- setPositionInfoSource(source)¶
- Parameters:
设置新的
QGeoPositionInfoSource以供此QGeoAreaMonitorSource对象使用。区域监控后端将成为newSource的新QObject父对象。先前的QGeoPositionInfoSource对象将被删除。所有基于相同sourceName()的QGeoAreaMonitorSource实例共享相同的QGeoPositionInfoSource实例。当需要操作区域监控引擎使用的定位系统时,这可能很有用。
请注意,所有权必须由
QGeoAreaMonitorSource的子类处理。由于该类背后的单例模式,newSource可能会被移动到一个新线程中。另请参阅
- sourceName()¶
- Return type:
字符串
返回正在使用的区域监视器源实现的唯一名称。
这是可以传递给
createSource()的相同名称,以便创建特定区域监视器源实现的新实例。- abstract startMonitoring(monitor)¶
- Parameters:
监控 –
QGeoAreaMonitorInfo- Return type:
布尔
如果
monitor的监控能够成功启动,则返回true;否则返回false。无法启动监控的原因可能是没有可用的适当默认位置信息源,同时没有通过setPositionInfoSource()设置替代的QGeoPositionInfoSource。如果
monitor已经激活,现有的监控对象将被新的monitor引用替换。QGeoAreaMonitorInfo实例的识别通过identifier()进行。因此,此函数也可用于更新活动的监控器。如果
monitor的过期日期已过,此函数将返回false。对于已经通过requestUpdate()注册的单次监视器调用此函数,将监视器切换到永久监视模式。如果区域监控后端不支持
PersistentAreaMonitorFeature,则在QGeoAreaMonitorSource实例上请求持久监控将失败。- abstract stopMonitoring(monitor)¶
- Parameters:
监控 –
QGeoAreaMonitorInfo- Return type:
布尔
如果
monitor成功从activeMonitors()列表中移除,则返回true;否则返回false。此行为与monitor是通过startMonitoring()还是requestUpdate()注册无关。- abstract supportedAreaMonitorFeatures()¶
- Return type:
返回此源可用的区域监控功能。