如何在 Ubuntu Touch 上访问地理位置信息?

如何在 Ubuntu Touch 上访问地理位置信息?

奇怪的是,很难找到任何关于访问 Ubuntu Touch 地理位置信息的文档,甚至更普遍的 Qt5 文档。Qt Mobility API 在 Qt4 中提供了此功能,它们似乎已经在 Qt5 中拆分成单独的库. 这些图书馆显然从 Qt 5 发行版中删除,现在被视为可选附加模块。由于它们现在是“附加组件”,Qt 网站似乎不再发布它们的文档。Ubuntu 有它们的软件包,但安装 SDK 实际上并不会将它们拉进来。因此目前还不清楚它们是否会在手机上使用。

正确的包似乎是qtdeclarative5-qtlocation-插件安装 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);
        }
}

遗憾的是,这只是段错误……

所以我的问题,简单地说,是如何在 Qml 中访问 Ubuntu Touch 上的地理位置信息?

答案1

我认为它对你不起作用是因为设备上没有启用 GPS。以下代码示例在我的笔记本电脑上工作正常且没有出现分段错误。在设备上,由于 AGPS 尚未着陆,因此需要大约 1-2 分钟才能获得 GPS 锁定。

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

相关内容