LINUX.ORG.RU

Почему не работает position.direction для PositionSource?

 , ,


0

2

Решил посмотреть, как работает геопозиционирование в 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, хоть двигайся хоть стой на месте.

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

★★★★★

А что в свойствах preferredPositioningMethods и supportedPositioningMethods?

ox55ff ★★★★★
()

на телефоне Honor 6

Это же android? Просто в Qt позиционирование берётся из того, что предоставляет платформа. Для андроида вообще не вижу Magnetic Variation. А Direction зависит, отдаёт ли данные java. Можешь сам сравнить симулятор (берёт данные из файла, есть все сведения) и геосервис андроида . Интересует метод setAttribute у объекта QGeoPositionInfo info.

fluorite ★★★★★
()
Ответ на: комментарий от fluorite

Кароч, direction заработал на улице. Скорости пешехода на балконе и 4 спутника ему недостаточно.

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

Xintrea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.