QGeoCoordinate 类
QGeoCoordinate 类定义了地球表面的地理位置。 更多...
头文件 | #include <QGeoCoordinate> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
qmake | QT += 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() | |
double | altitude() const |
QGeoCoordinate | atDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp = 0.0) const |
qreal | azimuthTo(const QGeoCoordinate &other) const |
qreal | distanceTo(const QGeoCoordinate &other) const |
bool | isValid() const |
double | latitude() const |
double | longitude() const |
void | setAltitude(double altitude) |
void | setLatitude(double latitude) |
void | setLongitude(double longitude) |
QString | toString(QGeoCoordinate::CoordinateFormat format = DegreesMinutesSecondsWithHemisphere) const |
QGeoCoordinate::CoordinateType | type() 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::Degrees | 0 | 以十进制度数格式返回坐标的字符串表示。 |
QGeoCoordinate::DegreesWithHemisphere | 1 | 以十进制度数格式返回坐标的字符串表示,使用 'N'、'S'、'E' 或 'W' 来指示坐标的半球。 |
QGeoCoordinate::DegreesMinutes | 2 | 以度-分格式返回坐标的字符串表示。 |
QGeoCoordinate::DegreesMinutesWithHemisphere | 3 | 以度-分格式返回坐标的字符串表示,使用 'N'、'S'、'E' 或 'W' 来指示坐标的半球。 |
QGeoCoordinate::DegreesMinutesSeconds | 4 | 以度-分-秒格式返回坐标的字符串表示。 |
QGeoCoordinate::DegreesMinutesSecondsWithHemisphere | 5 | 以度-分-秒格式返回坐标的字符串表示,使用 'N'、'S'、'E' 或 'W' 来指示坐标的半球。 |
另请参阅toString().
enum QGeoCoordinate::CoordinateType
定义了坐标的类型。
常数 | 值 | 描述 |
---|---|---|
QGeoCoordinate::InvalidCoordinate | 0 | 一个无效坐标。如果坐标的纬度或经度值无效,则坐标无效。 |
QGeoCoordinate::Coordinate2D | 1 | 具有有效纬度和经度值的坐标。 |
QGeoCoordinate::Coordinate3D | 2 | 具有有效纬度和经度值,以及海拔值的坐标。 |
属性文档
altitude : double
此属性保存海平面以上的海拔高度(米)。
如果未设置海拔,则该属性未定义(qQNaN)。
虽然此属性是在Qt 5.5中引入的,但相关访问器函数自此类第一版以来就存在。
访问函数
double | altitude() const |
void | setAltitude(double altitude) |
[只读]
isValid : const bool
此属性表示此地理坐标的有效性。
如果经度属性longitude和纬度属性latitude已设置为有效值,则地理坐标有效。
虽然此属性是在Qt 5.5中引入的,但相关访问器函数自此类第一版以来就存在。
访问函数
bool | isValid() const |
latitude : double
此属性表示十进制度纬度。
如果纬度尚未设置,则属性未定义(qQNaN)。正纬度表示北半球,负纬度表示南半球。设置纬度时,新值应以WGS84大地基准格式。
纬度必须介于-90到90之间(包含)才能有效。
虽然此属性是在Qt 5.5中引入的,但相关访问器函数自此类第一版以来就存在。
访问函数
double | latitude() const |
void | setLatitude(double latitude) |
longitude : double
此属性表示十进制度经度。
如果经度尚未设置,则属性未定义(qQNaN)。正经度表示东半球,负经度表示西半球。设置经度时,新值应以WGS84大地基准格式。
经度必须介于-180到180之间(包含)才能有效。
虽然此属性是在Qt 5.5中引入的,但相关访问器函数自此类第一版以来就存在。
访问函数
double | longitude() const |
void | setLongitude(double longitude) |
成员函数文档
QGeoCoordinate::QGeoCoordinate()
构造一个坐标。直到调用setLatitude()和setLongitude(),坐标将无效。
QGeoCoordinate::QGeoCoordinate(double latitude, double longitude)
使用给定的latitude和longitude构造一个坐标。
如果纬度不在-90到90之间,或者经度不在-180到180之间,则不设置任何值,且type()将为QGeoCoordinate::InvalidCoordinate。
另请参阅isValid。
QGeoCoordinate::QGeoCoordinate(double latitude, double longitude, double altitude)
使用给定的latitude、longitude和altitude构造一个坐标。
如果纬度不在-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
注意:属性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. 在芬兰和/或其他国家的商标。所有其他商标都是各自所有者的财产。