当前位置: 首页 > news >正文

计算GPS点之间距离(JS实现)

以下是使用Haversine公式实现计算两个GPS点之间距离的JavaScript代码:

function calculateDistance(lat1, lon1, lat2, lon2) {
    const R = 6371e3; // 地球半径(单位:米)
    const φ1 = lat1 * Math.PI / 180; // 纬度转换为弧度
    const φ2 = lat2 * Math.PI / 180;
    const Δφ = φ2 - φ1; // 纬度差
    const Δλ = (lon2 - lon1) * Math.PI / 180; // 经度差转换为弧度
    
    // Haversine公式计算a
    const a = Math.sin(Δφ / 2) ** 2 + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) ** 2;
    const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    
    // 计算距离
    const distance = R * c;
    return distance;
}

// 示例用法
const lat1 = 52.5200; // 点1纬度(柏林)
const lon1 = 13.4050; // 点1经度
const lat2 = 48.8566; // 点2纬度(巴黎)
const lon2 = 2.3522;  // 点2经度

const distance = calculateDistance(lat1, lon1, lat2, lon2);
console.log(`距离:${distance.toFixed(0)}`);

关键点解析:

  1. Haversine公式:通过球面三角学计算地球表面两点间的大圆距离。
  2. 单位转换:将十进制度数转换为弧度(Math.PI/180)。
  3. 地球半径:使用平均半径6371公里(6371e3米),结果单位为米。
  4. 公式变量
    • Δφ:纬度差(弧度)
    • Δλ:经度差(弧度)
    • a:Haversine公式中间量
    • c:两点间的中心角(弧度)

示例结果:

柏林到巴黎的距离约为 878,000米(878公里),实际测试时建议使用已知坐标验证。

扩展用法:

  • 返回公里:return distance / 1000;
  • 返回英里:return distance * 0.000621371;

相关文章:

  • 从C语言开始的C++编程生活(1)
  • 第二十七篇 数据仓库与维度建模指南:从理论到实战的进阶之路
  • 无需OpenAI API运行OpenManus!
  • docker和k8s区别详解
  • NLP高频面试题(五)——BERT的基本结构介绍、预训练任务、下游任务
  • Business processes A bridge to SAP and a guide to SAP TS410 certification
  • 资源文件逆向与界面篡改技术
  • 案例驱动的 IT 团队管理:创新与突破之路:第一章 重构 IT 团队管理:从传统到创新-2.1.3 反直觉案例:非技术背景成员的价值挖掘
  • C语言动态内存管理(下)
  • 18.封装红黑树实现mymap和myset
  • luogu「EZEC-10」打分 --- Python3 解法
  • libaom 源码分析:scalable_decoder.c 文件
  • 村民信息管理系统
  • SpringBoot可以同时处理多少请求?
  • 使用 Arduino 的基于物联网的空气污染监测系统
  • 群体智能优化算法-爱情进化算法 (Love Evolution Algorithm, LEA,含Matlab源代码)
  • 51c自动驾驶~合集24
  • RCore学习记录002
  • AI时代API安全挑战加剧,解读API防护的最佳方案
  • 浅谈鸿蒙跨平台开发框架ArkUI-X
  • 《习近平新时代中国特色社会主义思想学习论丛》第十一辑至第十五辑出版发行
  • 天问二号探测器顺利转入发射区,计划5月底择机发射
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 芬兰西南部两架直升机相撞坠毁,第一批救援队已抵达现场
  • 金融月评|尽早增强政策力度、调整施策点
  • 全国省市县国土空间总体规划已基本批复完成,进入全面实施阶段