gpt4 book ai didi

node.js - 获取设备的移动速度

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:31 25 4
gpt4 key购买 nike

我正在开发一个关于 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,或者尝试添加,如下所示...

enter image description here

并像这样包含在我的index.html中......

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

我对 Cordova 的经验为零,所以我不知道我在这里做什么,我做错了什么?

最佳答案

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

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

对于后退功能,您需要能够计算两组 GPS 坐标之间的距离。这里有一个解决方案:Calculate distance between 2 GPS coordinates

您还需要跟踪两个 GPS 读数之间的时间。您获取的读数越接近,您的速度计算就越准确。例如,中间 1 分钟的间隔比 10 分钟的间隔更准确,因为车辆或人可能在 10 分钟内停止了多次。

我还要确保您已将 Geolocation 对象上的allowHighAccuracy 设置为 true。另外,为了防止缓存任何 GPS 数据,请将最大期限设置为 0,以便每次都能检索新数据。

关于node.js - 获取设备的移动速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23046052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com