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

软件网站排名网站与新媒体建设测评方案

软件网站排名,网站与新媒体建设测评方案,网络服务器品牌排名,学广告设计去哪个学校好计算两个经纬度之间的距离(JavaScript 实现) 在地理信息系统(GIS)、地图应用、物流配送等场景中,经常需要计算地球上两点(已知经纬度)之间的距离。由于地球是一个近似球体,不能简单…

计算两个经纬度之间的距离(JavaScript 实现)

在地理信息系统(GIS)、地图应用、物流配送等场景中,经常需要计算地球上两点(已知经纬度)之间的距离。由于地球是一个近似球体,不能简单地用平面距离公式来计算。本文将介绍如何用 JavaScript 计算两个经纬度之间的球面距离,并给出完整的代码实现。


一、经纬度与球面距离

地球上的位置通常用经度(longitude)和纬度(latitude)来表示。要计算两点之间的最短距离(即大圆距离),常用Haversine公式。该公式假设地球为完美球体,计算精度对于大多数应用场景已经足够。

Haversine公式

设两点的经纬度分别为:

  • 点A:经度lon1,纬度lat1
  • 点B:经度lon2,纬度lat2

公式如下:

a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
c = 2 ⋅ atan2(√a, √(1−a))
d = R ⋅ c

其中:

  • φ1, φ2:两点的纬度(弧度)
  • Δφ:纬度差(弧度)
  • Δλ:经度差(弧度)
  • R:地球半径(平均值约为 6371 公里)

二、JavaScript 实现

下面是用 JavaScript 实现的 Haversine 距离计算函数:

/*** 计算两个经纬度之间的球面距离(单位:米)* @param {number} lat1 - 第一个点的纬度(十进制度)* @param {number} lon1 - 第一个点的经度(十进制度)* @param {number} lat2 - 第二个点的纬度(十进制度)* @param {number} lon2 - 第二个点的经度(十进制度)* @returns {number} 距离(米)*/
function getDistance(lat1, lon1, lat2, lon2) {const toRad = angle => angle * Math.PI / 180;const R = 6371000; // 地球半径,单位:米const φ1 = toRad(lat1);const φ2 = toRad(lat2);const Δφ = toRad(lat2 - lat1);const Δλ = toRad(lon2 - lon1);const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +Math.cos(φ1) * Math.cos(φ2) *Math.sin(Δλ / 2) * Math.sin(Δλ / 2);const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));const d = R * c;return d;
}

三、使用示例

假设我们要计算北京天安门广场(39.9087°N, 116.3975°E)和上海外滩(31.2400°N, 121.4900°E)之间的距离:

const distance = getDistance(39.9087, 116.3975, 31.2400, 121.4900);
console.log(`两地距离约为 ${(distance / 1000).toFixed(2)} 公里`);
// 输出:两地距离约为 1068.01 公里

四、注意事项

  1. 单位:本函数返回的是米(meter),如需公里请除以 1000。
  2. 精度:Haversine 公式假设地球为完美球体,实际地球为椭球体,误差一般在 0.5% 以内。
  3. 输入范围:经纬度均为十进制度,纬度范围 -90~90,经度范围 -180~180。

五、结语

通过 Haversine 公式和 JavaScript 的实现,我们可以方便地计算地球上任意两点之间的距离。这在地图、定位、导航等应用中非常实用。你可以将上述函数集成到自己的项目中,提升地理计算能力。


参考资料:

  • Haversine formula - Wikipedia
  • MDN: Math.atan2()
http://www.dtcms.com/wzjs/816927.html

相关文章:

  • dw做网站怎么上线合肥网站建设网站
  • 百度官方网站网址做一个内容网站多少钱
  • 网站模板制作视频教程学科基地网站建设
  • 做网站赚钱农业局网站建设方案
  • 建个网站怎放上一张图付费主题wordpress
  • 做外贸哪些网站好沈阳网站推广优化排名公司
  • 保洁公司做网站有什么作用深圳建站公司哪个济南兴田德润简介
  • 宿迁市区建设局网站网站 色彩
  • 968深圳网站建设公司极路由wordpress
  • 旅游景区网站建设方案网上商城网址怎么写
  • 自适应网站建设都找全网天下做报名统计的网站
  • 网站建设设计思想福建建设人才与科技发展中心
  • 建网站公司郑州手机主页哪个网站好
  • 怎样免费做网站湖北权威的百度推广
  • 南通高端网站设计建设温州网站制作优化
  • 网站右下角广告展示代码seo教程网站优化
  • 网站建设和管理是教什么科目北京知名网站设计公司
  • 游戏ui素材网站深圳建设工程信息网查询系统
  • 建设景区网站的目的中国互联网协会成立
  • 我的个人网站怎么做建站行业新闻
  • 网站源代码生成网站医院网站建设方案详细
  • 南昌企业网站建设公司哪个好网站设置路由器
  • 为什么我网站打不开wordpress电子书下载
  • 制作专业网站创意装饰
  • 中国现代公路建设有限公司网站常平网站建设
  • 网站建设这个职业是什么响应式网站尺寸节点
  • 聊城网站建设费用短视频推广计划
  • 群晖ds218+做网站wordpress企业营销主题
  • 一级a做爰电影免费观看网站长沙门户网站建设公司
  • 易进网站建设推广什么是vi设计?