【问题标题】:Get device's moving speed获取设备的移动速度
【发布时间】: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


【解决方案1】:

根据 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,以便每次都检索新数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多