Как получить доступ к информации о геолокации в Ubuntu Touch?

Как ни странно, трудно найти какую-либо документацию по доступу к информации о геолокации для Ubuntu Touch в частности и даже для Qt5 в целом. API Qt Mobility предоставили это в Qt4, и, похоже, они были разделены на отдельные библиотеки в Qt5 . Эти библиотеки, по-видимому, были удалены из дистрибутива Qt 5 и теперь считаются необязательными дополнительными модулями . Поскольку они теперь являются «дополнениями», веб-сайт Qt, похоже, больше не публикует их документацию. Для них есть пакеты Ubuntu, но установка SDK на самом деле их не вытягивает. Поэтому неясно, будут ли они доступны на телефоне или нет.

Правильный пакет выглядит как qtdeclarative5-qtlocation-plugin Install qtdeclarative5-qtlocation-plugin , к которому можно обратиться в Qml с помощью import QtLocation 5.0

Попытка просто получить широту и долготу было бесполезным упражнением. Глядя на старые документы Qt4, я попытался:

import QtQuick 2.0
import QtLocation 5.0


PositionSource {
    id: src
    updateInterval: 1000
    active: true

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

К сожалению, это всего лишь ошибки segfaults ...

Итак, мой простой вопрос: как получить доступ к информации о геолокации в Ubuntu Touch в Qml?

3
задан 23 May 2017 в 15:39

1 ответ

Я думаю, что это не сработало из-за того, что на устройстве не был включен GPS. Следующий пример кода работал без segfaulting на моем ноутбуке. На устройстве для блокировки GPS требуется около 1-2 минут, поскольку AGPS еще не приземлился.

import QtQuick 2.2
import Ubuntu.Components 1.1.
import QtPositioning 5.2

MainView {
    id: mainView

    applicationName: "me.nik90.gpsapp"
    useDeprecatedToolbar: false

    width: units.gu(100)
    height: units.gu(75)

    Page {
        id: page

        title: "GPS"

        PositionSource {
            id: src

            updateInterval: 1000
            active: true

            onPositionChanged: {
                var coord = src.position.coordinate;
                console.log("Coordinate: " + coord.longitude + ":" + coord.latitude);
            }
        }

        Label {
            text: "Coordinate: " + src.coord.longtitude + ":" + src.coord.latitude;
        }
   }
}
0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: