【发布时间】:2014-04-13 17:39:47
【问题描述】:
我正在开发一个关于 Sencha Touch 和 NodeJS 的项目。
我现在要做的是获取设备的移动速度。根据我在 Sencha Docs 中看到的内容,我应该使用 Ext.device.Geolocation 来使用设备的地理定位服务而不是浏览器的。
这就是我的做法......
Ext.device.Geolocation.getCurrentPosition({
success: function(position) {
alert(position.coords.speed);
alert(JSON.stringify(position))
},
failure: function() {
console.log('something went wrong!');
}
});
当从我的 iPhone 运行时,其中的位置变量会得到这个值..
{ busId: '186', position:'{"speed":null,"accuracy":81.15007979037921,
"altitudeAccuracy":10,"altitude":9.457816123962402,"longitude":-54.950113117326524,
"heading":null,"latitude":-34.93604986481545}'}
缺少速度属性,我不知道为什么。
然而,更奇怪的事情发生了。如果我通过 Android 设备访问我的应用程序,则位置变量为空。我得到的只是{}。
该应用程序在我的 PC 上的本地主机上运行,当我说通过我的手机访问时,我的意思是我使用我的 PC 的 IP 访问它。我不知道这是否应该工作正常。
我已在我的项目文件夹中添加或尝试添加 Cordova API,如下所示...
并像这样包含在我的 index.html 中...
<script type="text/javascript" src="./cordova-ios/CordovaLib/cordova.js"></script>
我对 Cordova 的经验为零,所以我不知道我在这里做什么,我做错了什么?
【问题讨论】:
-
当您在计算机上运行您的应用程序时,它通常不会移动。因此,速度可能无效,因为您的设备仅获得一个位置读数。如果你带着你的手机走一走,它就会移动并获取位置更新。我猜你会得到一些速度指示。
-
另请注意,速度并不总是一个非常准确的值。例如:stackoverflow.com/questions/21644990/…
-
如果我得到 0 作为速度,你的第一条评论是正确的,但我得到空值,这意味着你将无法从该设备中获得速度,即使移动 (这就是 sencha-touch 文档所说的)。至于您关于为 android 开发的第二条评论,我不是在开发本机应用程序,我正在使用 sencha-touch
标签: node.js cordova geolocation sencha-touch-2