为啥不能为 PositionSource 工作 position.direction?

Posted

技术标签:

【中文标题】为啥不能为 PositionSource 工作 position.direction?【英文标题】:Why does not work position.direction for PositionSource?为什么不能为 PositionSource 工作 position.direction? 【发布时间】:2018-01-05 16:14:11 【问题描述】:

我决定看看 Qt 中的地理定位是如何工作的。我正在使用 Qt 5.9.2。

我正在创建 Qt Quick 2 应用程序,并写入 *.pro 文件:

QT += quick positioning

在 main.qml 文件中我正在添加代码:

import QtPositioning 5.4
...
    Text 
        id: labelLongitude

        anchors.left: parent.left
        anchors.top: parent.top

        font.pointSize: 24
    

    Text 
        id: labelLatitude

        anchors.left: parent.left
        anchors.top: labelLongitude.bottom

        font.pointSize: 24
    

    Text 
        id: labelSpeed

        anchors.left: parent.left
        anchors.top: labelLatitude.bottom

        font.pointSize: 24
    

    Text 
        id: labelDirection

        anchors.left: parent.left
        anchors.top: labelSpeed.bottom

        font.pointSize: 24
    

    Text 
        id: labelMagneticVariation

        anchors.left: parent.left
        anchors.top: labelDirection.bottom

        font.pointSize: 24
    

    PositionSource 
        id: positionSource
        updateInterval: 1000
        active: true

        onPositionChanged: 
            var coord = positionSource.position.coordinate;
            console.log("Coordinate:", coord.longitude, coord.latitude);

            labelLongitude.text=qsTr("Longitude: ")+(coord.longitude);
            labelLatitude.text=qsTr("Longitude: ")+(coord.latitude);

            labelSpeed.text=qsTr("Speed: ")+positionSource.position.speed;
            labelDirection.text=qsTr("Direction: ")+positionSource.position.direction;
            labelMagneticVariation.text=qsTr("Magnetic Variation: ")+positionSource.position.magneticVariation;
        
    

并在手机荣耀6(H60-L04)上推出了这款应用。结果经纬度和速度都正常显示了。

但方向和磁性变化 - 一直显示 NaN,如果我在移动或站立。

问题。如何修复代码以使这些值通常从传感器获取?

【问题讨论】:

【参考方案1】:

我想通了。

方向是在快速移动的街道上工作。如果在阳台上使用应用程序,有 4 颗活动卫星,方向检测不起作用。

接下来,我不正确地翻译Magnetic Variation。此传感器 - 仅适用于非常指定的设备。我需要一个磁方位(换句话说,地理方位角)。在 PositionSource 类型中,方位角不存在。获取方位角,必须使用 Compass 类型:

Compass 
    id: compass
    dataRate: 1
    active: true

    onReadingChanged: 
        labelAzimuth.text=qsTr("Azimuth: ")+compass.reading.azimuth;
    

【讨论】:

以上是关于为啥不能为 PositionSource 工作 position.direction?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 $(this).children() 不能为我工作?

为啥使用类变量的这段代码不能像在 Java 中那样工作? [复制]

为啥全局修饰符不能正常工作?

为啥 memset() 放在循环体内时不能正常工作?

为啥我的 sql 和 Max 函数一起工作时,却不能和 Abs 函数一起工作?

使用 G+ 登录 - 为啥范围“plus.login”不能单独工作?