web-dev-qa-db-fra.com

Comment accéder aux informations de géolocalisation sur Ubuntu Touch?

Il est étrangement difficile de trouver une documentation sur l'accès aux informations de géolocalisation pour Ubuntu Touch en particulier et même Qt5 en général. Les API Qt Mobility ont fourni cela dans Qt4, et elles semblent avoir été divisées en bibliothèques distinctes dans Qt5 . Ces bibliothèques étaient apparemment supprimées de la distribution Qt 5 et sont maintenant considérées comme des modules complémentaires optionnels . Comme ils sont désormais des "modules complémentaires", le site Web de Qt ne semble plus publier sa documentation. Il existe des packages Ubuntu pour eux, mais l'installation du SDK ne les attire pas réellement. Il n'est donc pas clair s'ils seront disponibles sur le téléphone ou non.

Le package correct semble être qtdeclarative5-qtlocation-plugin Install qtdeclarative5-qtlocation-plugin , accessible en Qml avec import QtLocation 5.0

Essayer d'obtenir simplement la latitude et la longitude a été un exercice futile. En regardant les anciens documents Qt4, j'ai essayé:

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);
        }
}

Malheureusement, cela ne fait que segfaults ...

Donc ma question, simplement énoncée, est comment pouvez-vous accéder aux informations de géolocalisation sur Ubuntu Touch en Qml?

3
andrewsomething

Je pense que cela n'a pas fonctionné pour vous car le GPS n'est pas activé sur l'appareil. L'exemple de code suivant a fonctionné sans segfaulting sur mon ordinateur portable. Sur l'appareil, il faut environ 1 à 2 minutes pour obtenir le verrouillage GPS, car AGPS n'a pas encore atterri.

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;
        }
   }
}
1
nik90