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