本页内容

QGeoPositionInfo Class

QGeoPositionInfo 类包含在特定时刻收集的关于全球位置、方向和速度的信息。更多内容...

头文件: #include <QGeoPositionInfo>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning

公共类型

enum Attribute { Direction, GroundSpeed, VerticalSpeed, MagneticVariation, HorizontalAccuracy, …, DirectionAccuracy }

公共函数

QGeoPositionInfo()
QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &timestamp)
QGeoPositionInfo(const QGeoPositionInfo &other)
(since 6.2) QGeoPositionInfo(QGeoPositionInfo &&other)
~QGeoPositionInfo()
qreal attribute(QGeoPositionInfo::Attribute attribute) const
QGeoCoordinate coordinate() const
bool hasAttribute(QGeoPositionInfo::Attribute attribute) const
bool isValid() const
void removeAttribute(QGeoPositionInfo::Attribute attribute)
void setAttribute(QGeoPositionInfo::Attribute attribute, qreal value)
void setCoordinate(const QGeoCoordinate &coordinate)
void setTimestamp(const QDateTime &timestamp)
(since 6.2) void swap(QGeoPositionInfo &other)
QDateTime timestamp() const
(since 6.2) QGeoPositionInfo &operator=(QGeoPositionInfo &&other)
QGeoPositionInfo &operator=(const QGeoPositionInfo &other)
bool operator!=(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs)
QDataStream &operator<<(QDataStream &stream, QGeoPositionInfo::Attribute attr)
QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info)
bool operator==(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs)
QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info)
QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo::Attribute &attr)

详细描述

一个 QGeoPositionInfo 至少包含一个地理坐标和一个时间戳。它还可能包含航向和速度测量值,以及所提供数据的准确度估计值。

另请参阅 QGeoPositionInfoSource 。

成员类型文档

enum QGeoPositionInfo::Attribute

定义位置信息的属性。

常量值描述
QGeoPositionInfo::Direction0从真北到行进方向的方位角,以度为单位,顺时针方向测量。
QGeoPositionInfo::GroundSpeed1地速,单位为米/秒。
QGeoPositionInfo::VerticalSpeed2垂直速度,单位为米/秒。
QGeoPositionInfo::MagneticVariation3磁场水平分量与真北之间的夹角,单位为度。也称为磁偏角。正值表示从真北顺时针方向,负值表示从真北逆时针方向。
QGeoPositionInfo::HorizontalAccuracy4所提供经纬度值的精度,单位为米。
QGeoPositionInfo::VerticalAccuracy5所提供海拔值的精度,单位为米。
QGeoPositionInfo::DirectionAccuracy6所提供方位角的精度,单位为度。此属性仅在 Android(API 级别 26 或更高)和 macOS/iOS 上可用。更多详细信息请参阅相应的Android和Apple文档。

NMEA 协议还建议了另一种精度类型——PositionAccuracy,这是一个三维精度值。Qt 未为此提供单独的属性。若需获取该值,可依据以下公式进行计算:

PositionAccuracy 2 = HorizontalAccuracy 2 + VerticalAccuracy 2

成员函数文档

QGeoPositionInfo::QGeoPositionInfo()

创建一个无效的 QGeoPositionInfo 对象。

另请参阅 isValid()。

QGeoPositionInfo::QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &timestamp)

根据给定的coordinate 和timestamp 创建一个QGeoPositionInfo对象。

QGeoPositionInfo::QGeoPositionInfo(const QGeoPositionInfo &other)

创建一个 QGeoPositionInfo 对象,其值为other 。

[constexpr noexcept default, since 6.2] QGeoPositionInfo::QGeoPositionInfo(QGeoPositionInfo &&other)

通过从other 移动位置来创建一个QGeoPositionInfo对象。

请注意,被移动的 QGeoPositionInfo 对象只能被销毁或被赋值。调用除析构函数或赋值运算符以外的其他函数将产生未定义的行为。

该函数在 Qt 6.2 中引入。

[noexcept] QGeoPositionInfo::~QGeoPositionInfo()

销毁一个QGeoPositionInfo 对象。

qreal QGeoPositionInfo::attribute(QGeoPositionInfo::Attribute attribute) const

返回指定attribute 的值,作为qreal类型的值。

如果该值尚未设置,则返回 NaN。

应使用函数hasAttribute() 来判断某个属性是否已被赋值。

另请参阅 hasAttribute() 和setAttribute()。

QGeoCoordinate QGeoPositionInfo::coordinate() const

返回该位置的坐标。

如果未设置坐标,则返回一个无效坐标。

另请参阅 setCoordinate()。

bool QGeoPositionInfo::hasAttribute(QGeoPositionInfo::Attribute attribute) const

如果该QGeoPositionInfo 对象中存在指定的attribute ,则返回true。

bool QGeoPositionInfo::isValid() const

如果timestamp() 和coordinate() 的值均有效,则返回 true。

另请参阅 QGeoCoordinate::isValid() 和QDateTime::isValid()。

void QGeoPositionInfo::removeAttribute(QGeoPositionInfo::Attribute attribute)

删除指定的attribute 及其值。

void QGeoPositionInfo::setAttribute(QGeoPositionInfo::Attribute attribute, qreal value)

将attribute 的值设置为value 。

另请参阅 attribute()。

void QGeoPositionInfo::setCoordinate(const QGeoCoordinate &coordinate)

将此位置的坐标设置为coordinate 。

另请参阅 coordinate()。

void QGeoPositionInfo::setTimestamp(const QDateTime &timestamp)

设置向timestamp 报告该职位的日期和时间。

timestamp 必须采用 UTC 时间。

另请参阅 timestamp()。

[noexcept, since 6.2] void QGeoPositionInfo::swap(QGeoPositionInfo &other)

将该位置信息与other 互换。此操作速度极快,且绝不会失败。

该函数自 Qt 6.2 起引入。

QDateTime QGeoPositionInfo::timestamp() const

返回报告该位置时的日期和时间(UTC时间)。

如果未设置任何日期/时间值,则返回一个无效的QDateTime 。

另请参阅 setTimestamp()。

[noexcept, since 6.2] QGeoPositionInfo &QGeoPositionInfo::operator=(QGeoPositionInfo &&other)

将other 中的值通过移动赋值给该对象。

请注意,被移动的QGeoPositionInfo 只能被销毁或被赋值。若调用除析构函数或赋值运算符以外的其他函数,其行为未定义。

该函数在 Qt 6.2 中引入。

QGeoPositionInfo &QGeoPositionInfo::operator=(const QGeoPositionInfo &other)

将other 中的值赋给QGeoPositionInfo 。

相关非成员

bool operator!=(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs)

如果lhs 对象的任何值与rhs 中的值不一致,则返回true ;否则返回false 。

QDataStream &operator<<(QDataStream &stream, QGeoPositionInfo::Attribute attr)

将给定的attr 枚举写入指定的stream 。

另请参阅 《Qt 数据类型的序列化》。

QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info)

将给定的info 写入指定的stream 。

另请参阅 《Qt 数据类型的序列化》。

bool operator==(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs)

如果lhs 对象的所有值都与rhs 中的值相同,则返回true ;否则返回false 。

QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info)

从指定的stream 中读取一个坐标,并将其写入给定的info 中。

另请参阅 《Qt 数据类型的序列化》。

QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo::Attribute &attr)

从指定的stream 信息中读取属性枚举,并将其写入给定的attr 中。

另请参阅 《Qt 数据类型的序列化》。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.