PositionSource QML 类型
PositionSource 类型提供了设备的当前位置。 更多...
导入语句 | import QtPositioning |
属性
- active : bool
- name : string
- parameters : list<PluginParameter>
(自 Qt 定位 5.14)
- position : Position
- preferredPositioningMethods : enumeration
- sourceError : enumeration
- supportedPositioningMethods : enumeration
- updateInterval : int
- valid : bool
方法
- Variant backendProperty(string name)
(自 Qt 定位 5.14)
- bool setBackendProperty(string name, Variant value)
(自 Qt 定位 5.14)
- 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); } }
控制操作状态
如上所述,PositionSource提供了两种方法来控制其操作状态
注意:非常重要的是不要混合这些方法。如果使用可绑定的active属性来控制PositionSource对象,但后来在代码的另一部分调用start() 或 stop,则绑定会断裂,这可能导致例如,UI元素不再连接到任何底层对象。
请考虑以下糟糕的代码示例,其中将active
属性绑定到CheckBox状态,并在onClicked
信号处理程序中调用stop()破坏了绑定。
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属性的绑定。此时CheckBox UI元素不再控制PositionSource对象。
在这种情况下,一个简单的修复方法是总是在从onClicked
处理程序更新CheckBox状态。只要CheckBox未被选中,就会通知active属性,并相应地更新PositionSource对象的状态。UI也会处于一致的状态。
Button { id: btn text: "Stop" onClicked: { cb.checked = false } }
另请参阅:QtPositioning::Position、QGeoPositionInfoSource、PluginParameter和Qt可绑定属性。
属性说明
名称 : 字符串 |
此属性包含当前提供位置信息的插件的唯一内部名称。
设置此属性将使位置源使用特定的定位提供程序。如果在更改名称属性时位置源处于活动状态,它将变为非活动状态。如果指定的定位提供程序无法加载,位置源将变为无效。
更改名称属性可能会导致updateInterval、supportedPositioningMethods和preferredPositioningMethods属性也发生变化。
位置 : 位置 |
首选定位方法 : 枚举 |
源错误 : 枚举 |
支持的位置方法 : 枚举 |
该属性包含当前源支持的位置方法。
- 位置源.NoPositioningMethods - 不支持定位方法(没有源)。
- 位置源.SatellitePositioningMethods - 支持基于卫星的定位方法,如GPS。
- PositionSource.NonSatellitePositioningMethods - 支持非卫星定位方法。
- PositionSource.AllPositioningMethods - 支持基于卫星和非卫星的定位方法。
updateInterval : int |
此属性保存更新之间的期望间隔(毫秒)。
valid : bool |
如果 PositionSource 对象已获取有效的后端插件以提供数据,则此属性为 true。如果为 false,则 PositionSource 上的其他方法将没有效果。
应用程序应检查此属性以确定在运行时平台上的定位是否可用和已启用,并相应地进行反应。
方法文档
|
如果存在,返回名为 name 的特定于后端的属性值。否则(包括在未初始化的 PositionSource 上调用时),返回值将无效。支持的后端特定属性列于并描述于 Qt 定位插件#默认插件。
此方法是在 Qt 定位 5.14 中引入的。
另请参阅 backendProperty 和 QGeoPositionInfoSource::setBackendProperty。
将名为 name 的特定于后端的属性设置为 value。在成功时返回 true,否则返回 false,包括在未初始化的 PositionSource 上调用时。支持的后端特定属性列于并描述于 Qt 定位插件#默认插件。
此方法是在 Qt 定位 5.14 中引入的。
另请参阅backendProperty 和 QGeoPositionInfoSource::setBackendProperty。
start() |
从位置源请求更新。如果设置了,则使用 updateInterval,否则使用默认间隔。如果没有可用的源,则此方法没有效果。
注意:调用此方法会断开 active 属性的绑定。
update(int timeout) |
© 2024 The Qt Company Ltd。本文件中包含的文档贡献为各自所有者的版权。提供的文档依据自由软件基金会发布的GNU自由文档许可证版本1.3进行许可。GNU自由文档许可证版本1.3。Qt及其相关标志是芬兰和/或其他国家/地区的The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。