反应天然地理位置平均速度



我有一个React Native应用程序,我在其中跟踪用户的位置并在地图上显示他的动作。我的目标是显示用户与他/她一起旅行的平均速度。

现在,在React Native的Geolocation Watchposition的响应中,这是一个速度参数,这仅是从最后已知的坐标到新坐标。

响应:

{
  coords: {
    accuracy: 5,
    altitude: 0,
    altitudeAccuracy: -1,
    heading: 108.43,
    latitude: 38.333034435,
    longitude: -122.04128193
    speed: 6.5
  }
  timestamp: 1465109890871.304
}

有没有办法获得整个轨迹的平均速度?还是如何计算此速度?

听起来很荒谬,并且表现不太表现,可以将所有"速度"值保留在数组中,然后将其偏向数组中的值数量。

任何帮助都非常感谢!

非常感谢!

使用getCurrentPositionredux和此公式 -

我这样做的方式
  var speedCounter = 0;
  setInterval(() => {
    navigator.geolocation.getCurrentPosition(success, error, options);
  }, 1000);
  function success(position) {
    ++speedCounter;
    var speed = position.coords.speed < 0 ? 0 : Math.round(position.coords.speed);
    var topSpeed = getState().data.topSpeed;
    var avgSpeed = getState().data.avgSpeed;
    dispatch({
      type: DATA_SPEED,
      speed: speed,
      topSpeed: speed > topSpeed ? speed : topSpeed,
      avgSpeed: Math.round((avgSpeed * (speedCounter - 1) + speed) / speedCounter),
    });
  }

我使用了getCurrentPosition,因为watchPosition对我来说效果不佳。但这是很久以前的。不确定最新版本中的watchPosition有多准确。

为@vinayr的好的提供另一个解决方案如果准确性不够好,您可能会有GPS纬度/经度,而不是速度(就我而言,我的速度= -2),因此您可能需要其他东西。

每当您获得一些新的坐标时,您就可以使用https://stackoverflow.com/a/23448821/1611358或此NPM模块https://www.npmjs.coms.coms.com/package/使用计算方法来计算到前面的位置距离。haversine。

然后您有2个计算AVG速度的选项:

  • 每当速度为负时,您都会计算它(方法高于两个坐标之间的方法 持续时间:使用时间戳),然后使用测量的NB更新AVG速度 最后AVG速度 新位置速度(如@vinayr)

  • 您将两个变量的距离和持续时间添加到总数和总数中,您的AVG速度始终是总数/总数(我在做什么)

最新更新