为什么不能为PositionSource工作position.direction?

时间:2018-01-05 16:14:11

标签: qt geolocation qml

我决定看看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;
        }
    }

并在手机Honor 6(H60-L04)上推出此应用程序。因此,正常显示纬度,经度和速度。

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

问题。如何修复代码,以便这些值通常来自传感器?

1 个答案:

答案 0 :(得分:0)

我明白了。

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

接下来,我错误地翻译磁变化。此传感器 - 仅适用于指定的设备。我需要一个磁力轴承(换句话说,地理方位角)。在 PositionSource 类型中,方位角不存在。要获得方位角,必须使用Compass:

类型
Compass {
    id: compass
    dataRate: 1
    active: true

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