Russian Qt Forum

Qt => Qt Quick => Тема начата: xintrea от Январь 05, 2018, 18:58



Название: [Решено] Почему не работает position.direction для PositionSource?
Отправлено: xintrea от Январь 05, 2018, 18:58
Решил посмотреть, как работает геопозиционирование в Qt. Использую Qt 5.9.2.

Сделал QtQuick2 приложение, прописал в *.pro файл:

Код:
QT += quick positioning

В main.qml добавил:

Код:
import QtPositioning 5.4
...
    Text {
        id: labelLongitude

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

        font.family: "Helvetica"
        font.pointSize: 24
    }

    Text {
        id: labelLatitude

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

        font.family: "Helvetica"
        font.pointSize: 24
    }

    Text {
        id: labelSpeed

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

        font.family: "Helvetica"
        font.pointSize: 24
    }

    Text {
        id: labelDirection

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

        font.family: "Helvetica"
        font.pointSize: 24
    }

    Text {
        id: labelMagneticVariation

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

        font.family: "Helvetica"
        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). В результате широта, долгота и скорость показываются нормально.

А вот direction и magneticVariation - все время показывают NaN, хоть двигайся хоть стой на месте.

Вопрос. Почему так, и как исправить чтобы эти значения нормально вытягивались из датчиков?


Название: Re: Почему не работает position.direction для PositionSource?
Отправлено: Old от Январь 05, 2018, 19:13
А вот direction и magneticVariation - все время показывают NaN, хоть двигайся хоть стой на месте.
Вы на машине двигались или ногами три шага туда - три шага сюда?


Название: Re: Почему не работает position.direction для PositionSource?
Отправлено: xintrea от Январь 05, 2018, 22:48
А вот direction и magneticVariation - все время показывают NaN, хоть двигайся хоть стой на месте.
Вы на машине двигались или ногами три шага туда - три шага сюда?
Ногами по балкону 7 м длинной. 4 сутника активны, думал что этого достаточно.

Вышел на улицу, заpаботал direction.

magneticVariation как не работал, так и не работает. Но видимо, хоть в хоноре и есть магнитный датчик, магнитное склонние он не реализует. А мне нужно было просто азимут получать, пока не понял как его выдергивать.


Название: Re: Почему не работает position.direction для PositionSource?
Отправлено: xintrea от Январь 05, 2018, 23:58
 Ага, значит походу азимута в типе PositionSource просто нет. Его надо брать из типа Compass.