QGeoCoordinate 类

QGeoCoordinate 类定义了地球表面的地理位置。 更多...

头文件 #include <QGeoCoordinate>
CMakefind_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmakeQT += positioning

公共类型

枚举CoordinateFormat { Degrees, DegreesWithHemisphere, DegreesMinutes, DegreesMinutesWithHemisphere, DegreesMinutesSeconds, DegreesMinutesSecondsWithHemisphere }
枚举CoordinateType { InvalidCoordinate, Coordinate2D, Coordinate3D }

属性

公共函数

QGeoCoordinate()
QGeoCoordinate(double latitude, double longitude)
QGeoCoordinate(double latitude, double longitude, double altitude)
QGeoCoordinate(const QGeoCoordinate &other)
(since 6.2) QGeoCoordinate(QGeoCoordinate &&other)
~QGeoCoordinate()
doublealtitude() const
QGeoCoordinateatDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp = 0.0) const
qrealazimuthTo(const QGeoCoordinate &other) const
qrealdistanceTo(const QGeoCoordinate &other) const
boolisValid() const
doublelatitude() const
doublelongitude() const
voidsetAltitude(double altitude)
voidsetLatitude(double latitude)
voidsetLongitude(double longitude)
QStringtoString(QGeoCoordinate::CoordinateFormat format = DegreesMinutesSecondsWithHemisphere) const
QGeoCoordinate::CoordinateTypetype() const
QGeoCoordinate &operator=(const QGeoCoordinate &other)
(since 6.2) QGeoCoordinate &operator=(QGeoCoordinate &&other)
bool操作符!=(const QGeoCoordinate &lhs, const QGeoCoordinate &rhs)
QDataStream &操作符<<(QDataStream &stream, const QGeoCoordinate &coordinate)
bool操作符==(const QGeoCoordinate &lhs, const QGeoCoordinate &rhs)
QDataStream &操作符>>(QDataStream &stream, QGeoCoordinate &coordinate)

详细信息

QGeoCoordinate由纬度、经度以及可选的海拔定义。

使用type()来判断坐标是二维坐标(仅有纬度和经度)还是三维坐标(具有纬度、经度和海拔)。使用distanceTo()azimuthTo()来计算坐标之间的距离和方位。

坐标值应使用WGS84大地基准来指定。有关地理术语的更多信息,请参阅坐标大地测量系统(包括WGS84)的相关文章。

在此上下文中,方位角相当于基于真北的罗盘方位。

自Qt 5.5以来,此类为Q_GADGET。它可以从C++和QML中直接使用(直接从C++和QML使用)

成员类型文档

enum QGeoCoordinate::CoordinateFormat

定义了toString()的可能格式化选项。

常数描述
QGeoCoordinate::Degrees0以十进制度数格式返回坐标的字符串表示。
QGeoCoordinate::DegreesWithHemisphere1以十进制度数格式返回坐标的字符串表示,使用 'N'、'S'、'E' 或 'W' 来指示坐标的半球。
QGeoCoordinate::DegreesMinutes2以度-分格式返回坐标的字符串表示。
QGeoCoordinate::DegreesMinutesWithHemisphere3以度-分格式返回坐标的字符串表示,使用 'N'、'S'、'E' 或 'W' 来指示坐标的半球。
QGeoCoordinate::DegreesMinutesSeconds4以度-分-秒格式返回坐标的字符串表示。
QGeoCoordinate::DegreesMinutesSecondsWithHemisphere5以度-分-秒格式返回坐标的字符串表示,使用 'N'、'S'、'E' 或 'W' 来指示坐标的半球。

另请参阅toString().

enum QGeoCoordinate::CoordinateType

定义了坐标的类型。

常数描述
QGeoCoordinate::InvalidCoordinate0一个无效坐标。如果坐标的纬度或经度值无效,则坐标无效。
QGeoCoordinate::Coordinate2D1具有有效纬度和经度值的坐标。
QGeoCoordinate::Coordinate3D2具有有效纬度和经度值,以及海拔值的坐标。

属性文档

altitude : double

此属性保存海平面以上的海拔高度(米)。

如果未设置海拔,则该属性未定义(qQNaN)。

虽然此属性是在Qt 5.5中引入的,但相关访问器函数自此类第一版以来就存在。

访问函数

doublealtitude() const
voidsetAltitude(double altitude)

[只读] isValid : const bool

此属性表示此地理坐标的有效性。

如果经度属性longitude和纬度属性latitude已设置为有效值,则地理坐标有效。

虽然此属性是在Qt 5.5中引入的,但相关访问器函数自此类第一版以来就存在。

访问函数

boolisValid() const

latitude : double

此属性表示十进制度纬度。

如果纬度尚未设置,则属性未定义(qQNaN)。正纬度表示北半球,负纬度表示南半球。设置纬度时,新值应以WGS84大地基准格式。

纬度必须介于-90到90之间(包含)才能有效。

虽然此属性是在Qt 5.5中引入的,但相关访问器函数自此类第一版以来就存在。

访问函数

doublelatitude() const
voidsetLatitude(double latitude)

longitude : double

此属性表示十进制度经度。

如果经度尚未设置,则属性未定义(qQNaN)。正经度表示东半球,负经度表示西半球。设置经度时,新值应以WGS84大地基准格式。

经度必须介于-180到180之间(包含)才能有效。

虽然此属性是在Qt 5.5中引入的,但相关访问器函数自此类第一版以来就存在。

访问函数

doublelongitude() const
voidsetLongitude(double longitude)

成员函数文档

QGeoCoordinate::QGeoCoordinate()

构造一个坐标。直到调用setLatitude()和setLongitude(),坐标将无效。

QGeoCoordinate::QGeoCoordinate(double latitude, double longitude)

使用给定的latitudelongitude构造一个坐标。

如果纬度不在-90到90之间,或者经度不在-180到180之间,则不设置任何值,且type()将为QGeoCoordinate::InvalidCoordinate

另请参阅isValid

QGeoCoordinate::QGeoCoordinate(double latitude, double longitude, double altitude)

使用给定的latitudelongitudealtitude构造一个坐标。

如果纬度不在-90到90之间,或者经度不在-180到180之间,则不设置任何值,且type()将为QGeoCoordinate::InvalidCoordinate

注意,altitude指定海平面以上的米数。

另请参阅isValid

QGeoCoordinate::QGeoCoordinate(const QGeoCoordinate &other)

other的内容构造一个坐标。

[noexcept, since 6.2] QGeoCoordinate::QGeoCoordinate(QGeoCoordinate &&other)

通过从其他坐标移动而构建坐标。

注意:从移动离开的QGeoCoordinate对象只能被销毁或赋值。调用析构函数或赋值运算符之外的其他函数的效果是未定义的。

此函数在Qt 6.2中引入。

[noexcept] QGeoCoordinate::~QGeoCoordinate()

销毁坐标对象。

double QGeoCoordinate::altitude() const

返回高度(海平面以上米数)。

如果高度未设置,则返回值是未定义的。

注意:属性高度的获取函数。

另请参阅:setAltitude() 和 type

[invokable] QGeoCoordinate QGeoCoordinate::atDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp = 0.0) const

返回沿着大圆从当前位置出发,在方位角azimuth(或航向)处,移动distance米所到达的坐标。在此次计算中,假设地球是球形的。

高度将增加distanceUp

如果此坐标无效,则返回无效坐标。

注意:此函数可以通过元对象系统从QML调用。请参阅 Q_INVOKABLE

[invokable] qreal QGeoCoordinate::azimuthTo(const QGeoCoordinate &other) const

返回从当前位置到指定由other的方位角(或航向)。在计算中不使用高度。

返回的是从起始点到other的大圆间的方位角。在此次计算中,假设地球是球形的。

如果此坐标或other的类型为QGeoCoordinate::InvalidCoordinate,则返回0。

注意:此函数可以通过元对象系统从QML调用。请参阅 Q_INVOKABLE

[invokable] qreal QGeoCoordinate::distanceTo(const QGeoCoordinate &other) const

返回从当前位置到指定由other的坐标的距离(米)。在计算中不使用高度。

此计算返回的是两个坐标之间的大圆距离,假设在此计算中地球是球形的。

如果此坐标或other的类型为QGeoCoordinate::InvalidCoordinate,则返回0。

注意:此函数可以通过元对象系统从QML调用。请参阅 Q_INVOKABLE

bool QGeoCoordinate::isValid() const

如果经度纬度有效,则返回true

注意:属性isValid的获取函数。

double QGeoCoordinate::latitude() const

返回纬度,以十进制度数表示。如果纬度未设置,则返回值是未定义的。

正纬度表示北半球,负纬度表示南半球。

注意:纬度属性的获取函数。

另请参阅setLatitude() 和 type

double QGeoCoordinate::longitude() const

返回经度,单位为十进制度。如果经度未设定,则返回值未定义。

正经度表示东半球,负经度表示西半球。

注意:经度属性的获取函数。

另请参阅setLongitude() 和 type

void QGeoCoordinate::setAltitude(double altitude)

设置海拔(海平面以上米数)为 altitude

注意:海拔属性的设置函数。

另请参阅altitude

void QGeoCoordinate::setLatitude(double latitude)

将纬度(十进制度)设置为 latitude。该值应采用WGS84基准。

纬度必须介于-90到90之间(包含)才能有效。

注意:纬度属性的设置函数。

另请参阅latitude

void QGeoCoordinate::setLongitude(double longitude)

将经度(十进制度)设置为 longitude。该值应采用WGS84基准。

经度必须介于-180到180之间(包含)才能有效。

注意:经度属性的设置函数。

另请参阅longitude

[可调用] QString QGeoCoordinate::toString(QGeoCoordinate::CoordinateFormat format = DegreesMinutesSecondsWithHemisphere) const

以指定的 format 将该坐标作为字符串返回。

例如,如果此坐标的纬度为 -27.46758,经度为 153.027892,海拔为 28.1,根据 format 返回的字符串如下

format返回的字符串
-27.46758°, 153.02789°, 28.1m
度加半球27.46758° S, 153.02789° E, 28.1m
度分-27° 28.054', 153° 1.673', 28.1m
度分加半球27° 28.054 S', 153° 1.673' E, 28.1m
度分秒-27° 28' 3.2", 153° 1' 40.4", 28.1m
度分秒加半球27° 28' 3.2" S, 153° 1' 40.4" E, 28.1m

如果没有设置海拔,则省略海拔字段。

如果坐标无效,则返回空字符串。

注意:此函数可以通过元对象系统从QML调用。请参阅 Q_INVOKABLE

QGeoCoordinate::CoordinateType QGeoCoordinate::type() const

返回该坐标的类型。

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

other 赋值给此坐标,并返回对此坐标的引用。

[无异常,自6.2版本起] QGeoCoordinate &QGeoCoordinate::operator=(QGeoCoordinate &&other)

other移动赋值到此坐标并返回对此坐标的引用。

注意:被移动的QGeoCoordinate对象只能被销毁或赋值。调用构造函数或赋值运算符之外的其他函数的效果是未定义的。

此函数在Qt 6.2中引入。

相关非成员

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

如果lhs坐标的纬度、经度或高度与rhs坐标的不同,则返回true。否则返回false

QDataStream &operator<<(QDataStream &stream, const QGeoCoordinate &coordinate)

将给定的coordinate写入指定的stream

另请参阅序列化 Qt 数据类型

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

如果lhs坐标的纬度、经度和高度与rhs坐标相同,则返回true。否则返回false

当纬度为 +/- 90 度时,将忽略经度。

QDataStream &operator>>(QDataStream &stream, QGeoCoordinate &coordinate)

从指定的stream读取坐标到给定的coordinate

另请参阅序列化 Qt 数据类型

© 2024 The Qt Company Ltd。本文档中的贡献版权属于各自的所有者。本文档是根据由自由软件基金会发布的GNU 自由文档许可版本 1.3 许可的。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标都是各自所有者的财产。