Como acessar informações de geolocalização no Ubuntu Touch?

3

É estranhamente difícil encontrar documentação sobre o acesso a informações de geolocalização para o Ubuntu Touch especificamente e até mesmo para o Qt5 de maneira mais geral. As APIs do Qt Mobility forneceram isso no Qt4, e elas parecem ter sido divididas em partes separadas bibliotecas no Qt5 . Essas bibliotecas aparentemente foram removidas do Qt 5 distribuição e agora são considerados módulos adicionais opcionais . Como eles são agora "add-ons", o site da Qt não parece mais publicar sua documentação. Existem pacotes do Ubuntu para eles, mas a instalação do SDK não os coloca. Por isso, não está claro se eles estarão disponíveis no telefone ou não.

O pacote correto parece ser qtdeclarative5-qtlocation-plugin , que pode ser acessado em Qml com import QtLocation 5.0

Tentar simplesmente obter latitude e longitude tem sido um exercício de futilidade. Olhando para os documentos Qt4 mais antigos, tentei:

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

Infelizmente, isso é apenas segfaults ...

Então, minha pergunta, simplesmente, é como você pode acessar informações de geolocalização no Ubuntu Touch no Qml?

    
por andrewsomething 12.09.2013 / 22:32

1 resposta

1

Acho que não funcionou para você devido ao GPS não estar ativado no dispositivo. O exemplo de código a seguir funcionou sem segfaulting no meu laptop. No dispositivo, demora cerca de 1-2 minutos para obter o bloqueio do GPS, uma vez que o AGPS ainda não aterrou.

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;
        }
   }
}
    
por nik90 27.08.2014 / 10:11