我有一个数组,其中x元素为lat - lng value.我的目标是找出循环中上一个位置和下一个位置之间的距离差,只要数组的元素数(长度)为haversine formula.

示例my数组值;

var array = [
    [51.06745252933975, -114.11267548799515],
    [51.067506465746014, -114.09559518098831],
    [51.0827140244322,-114.0949085354805],
    [51.088267312195484,-114.10709649324417]];

我在数学方面没有问题,我的目标是将光标作为前一个元素放在循环中,而不是放在下一个指针顺序中.

粗略的代码配方;

回路的第一个索引;array[0] lat-lng and array[1] lat-lng calc distance

回路的第二个索引;array[1] lat-lng and array[2] lat-lng calc distance

我用的是Javascript,我如何做到最理想?

推荐答案

看起来有点容易,但我可能根本不理解这个问题,如果问题是如何通过与前面的条目进行比较来循环数组,那么有几种方法可以做到这一点,下面可以显示一种方法

// https://stackoverflow.com/a/27943/28004
function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
  var R = 6371; // Radius of the earth in km
  var dLat = deg2rad(lat2-lat1);  // deg2rad below
  var dLon = deg2rad(lon2-lon1); 
  var a = 
    Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 
    Math.sin(dLon/2) * Math.sin(dLon/2)
    ; 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c; // Distance in km
  return d;
}

function deg2rad(deg) {
  return deg * (Math.PI/180)
}
// end of pasted code

// your entry
const points = [
    [51.06745252933975, -114.11267548799515],
    [51.067506465746014, -114.09559518098831],
    [51.0827140244322,-114.0949085354805],
    [51.088267312195484,-114.10709649324417]
]

// looping through all points starting from the second element
for (let i = 1; i < points.length; i += 1) {
  const lastPosition = points[i-1];
  const newPosition = points[i];
  console.log(
      `from position ${i-1} to ${i} it's %s Km`,
      getDistanceFromLatLonInKm(lastPosition[0], lastPosition[1], newPosition[0], newPosition[1]))
}

请记住,没有验证(只有一个条目将通过错误进行验证),哈弗森公式仅计算两点之间的直线,并考虑到行星不是球体.

Javascript相关问答推荐

nPM审计始终发现0个漏洞

在JS中获取名字和姓氏的首字母

如何提取Cypress中文本

是什么原因导致此Angular 16电影应用程序中因类型错误而不存在属性?

传递一个大对象以在Express布局中呈现

Angular中计算信号和getter的区别

. NET中Unix时间转换为日期时间的奇怪行为

Chrome是否忽略WebAuthentication userVerification设置?""

使用i18next在React中不重新加载翻译动态数据的问题

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

使用Java脚本根据按下的按钮更改S文本

如何调用名称在字符串中的实例方法?

如何在bslib nav_insert之后更改导航标签的CSS类和样式?

如何将未排序的元素追加到数组的末尾?

在画布中调整边上反弹框的大小失败

Next.js中的服务器端组件列表筛选

JavaScript将字符串数字转换为整数

从异步操作返回对象

Django模板中未加载JavaScript函数

不允许在对象文本中注释掉的属性