获取设备的移动速度

我正在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!'); } }); 

那里的位置var从我的iPhone运行时得到这个值..

 { busId: '186', position:'{"speed":null,"accuracy":81.15007979037921, "altitudeAccuracy":10,"altitude":9.457816123962402,"longitude":-54.950113117326524, "heading":null,"latitude":-34.93604986481545}'} 

这是缺less速度属性,我不明白为什么。

一个更奇怪的事情发生虽然。 如果我通过Android设备访问我的应用程序,位置variables是空的。 我所得到的是{}

该应用程序正在我的电脑本地主机上运行,​​当我说通过我的手机访问我的意思是我用我的电脑IP访问它。 我不知道这是否应该工作正常或不。

我已经添加了cordovaAPI,或试图,在我的项目文件夹中,像这样…

在这里输入图像说明

并包括在我的index.html像这样…

 <script type="text/javascript" src="./cordova-ios/CordovaLib/cordova.js"></script> 

我没有cordova的经验,所以我不知道我在这里做什么,我做错了什么?

根据Sencha Touch 2文档,如果速度值返回null,则设备不支持该function( http://docs.sencha.com/touch/2.3.1/#!/api/Ext.util.Geolocation ) 。 如果支持,那么它应该返回至less0。

如果您不打算将应用程序打包为Android或iOS,那么使用Cordova就没有意义了。 我会build议编写自己的getSpeed函数,它将检查速度是否不为零或0,然后使用回退函数。

对于后退function,您需要能够计算两组GPS坐标之间的距离。 这里有一个解决scheme: 计算2个GPS坐标之间的距离

您还需要跟踪两次GPS读数之间的时间。 越接近你抓住这些读数,你的速度计算就越准确。 例如,由于车辆或人员可能在10分钟内停止数次,因此间隔1分钟比间隔10分钟更准确。

我也会确保你已经在你的Geolocation对象上设置了allowHighAccuracy为true。 此外,为了防止任何caching的GPS数据,设置最大年龄为0,以便每次检索新的数据。