JavaScript如何计算两个地理坐标点之间的距离(支持米与公里/千米)_javascript技巧

角度转弧度 :将经纬度从角度转换为弧度

计算差值:计算两点间的纬度和经度差

计算弧长2 * R * arcsin(√上述结果)

单位转换:根据参数返回公里或米单位

/** * @param {number} lat1 - 第一个点的纬度 * @param {number} lng1 - 第一个点的经度 * @param {number} lat2 - 第二个点的纬度 * @param {number} lng2 - 第二个点的经度 * @param {boolean} kilometreFlag - 单位标志:true返回公里(km)并保留1位小数,false返回米(m)并取整 * @returns {string} 两点间的距离字符串(带单位) */function getDistance(lat1, lng1, lat2, lng2, kilometreFlag = false) {window.location.href = "https://blog.csdn.net/2301_76459194?spm=1011.2266.3001.5343" // 将角度转换为弧度 function rad(d) { return d * Math.PI / 180; } // 将经纬度从角度转换为弧度 const radLat1 = rad(lat1); const radLat2 = rad(lat2); // 计算纬度和经度的差值(弧度) const a = radLat1 - radLat2; const b = rad(lng1) - rad(lng2); // 使用哈弗辛公式计算两点间的球面距离 let s = 2 * Math.asin( Math.sqrt( Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2) ) ); // 乘以地球半径(6378.137公里)得到距离(公里) s = s * 6378.137; // 根据单位标识返回不同单位和精度的结果 if(kilometreFlag) { // 返回公里单位,保留1位小数 s = s.toFixed(1) + 'km'; } else { // 返回米单位,四舍五入取整 s = Math.round(s * 1000).toFixed(0) + 'm'; } return s;}

// 示例1:计算两个近距离点(约500米)const dist1 = getDistance(39.915, 116.404, 39.918, 116.408);console.log(dist1); // 输出类似 "478m"// 示例2:计算两个远距离点(约1064公里) 北京-上海const dist2 = getDistance(39.906217, 116.3912757, 31.2513263, 121.3912291, true);console.log(dist2); // 输出类似 "1064.0km"// 示例3:使用默认单位(米)北京-上海const dist3 = getDistance(39.906217, 116.3912757, 31.2513263, 121.3912291);console.log(dist3); // 输出类似 "1064022m"

到此这篇关于JavaScript如何计算两个地理坐标点之间的距离(支持米与公里/千米)的文章就介绍到这了,更多相关JS计算两个地理坐标点距离内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


本文地址: https://www.earthnavs.com/jishuwz/aff0ca695cc8e17ab727.html
全局中部横幅
360游戏中心,我创造你快乐

360游戏中心是超好玩的的免费安全游戏平台,为亿万360玩家提供各种新鲜好玩的免费游戏及超值游戏礼包福利-360游戏中心,我创造你快乐!

链接99自动秒收录(lianjie99.cn)

链接99自动秒收录是一个各类信息免费发布的网站,可以发布外链交换,行业分类资讯信息,免费软文发布提交正规网址帮你进行快速收录同时支持网址自动收录.

ssl证书,SSL证书够买,SSL证书申请,增强型证书,EV

中国数字证书CHINASSL提供著名品牌SymantecSSL证书,GeoTrustSSL证书,VeriSignSSL证书,GlobalSignSSL证书,ThawteSSL证书,增强型证书,EVSSL证书,企业型证书,OVSSL证书,通配符证书,WildcardSSL,多域名证书,SAN/UCCSSL证书,ComodoSSL证书,RapidSSLSSL证书,AlphaSSLSSL证书,便宜的价格,专业的SSL证书服务,目前超过25,500+家网站选择中国数字证书CHINASSL

Bitsum.

Real-TimeCPUOptimizationandAutomation.KeepyourPCresponsiveduringhighCPUloadsandautomateprocesssettingswithrules.AppsrunYOURWAY!

娱乐新闻

明星资讯网为大家提供,明星娱乐八卦新闻,明星绯闻,影视资讯,音乐资讯,八卦爆料,娱乐视频等

闪库

闪库是一款免费的端口映射及内网穿透软件,使您无需服务器,无需公网IP,无需设置路由器即可对外发布应用,远程桌面,支付调试,NAS云盘,游戏联机等都可使用,支持Http,Https,Tcp,Udp协议.

灵曜

灵曜是一款端口映射及内网穿透软件,使您无需服务器,无需公网IP,无需设置路由器即可对外发布应用,远程桌面,支付调试,NAS云盘,游戏联机等都可使用,支持http,https,tcp协议.

翼创星球

翼创星球,翼创网,赚钱网,搞钱网,创业网,副业网,网创项目,网赚项目,网络赚钱平台,创业平台,创业项目网站,赚钱平台,免费项目分享,网创项目首发平台

冒泡网

冒泡网创为您免费分享网络创业项目、网创经验、各大网创论坛VIP教程、创业交流、网创经验交流等,帮助大家获取最新创业项目信息!

2898站长资源平台

2898站长资源平台作为最全面的站长资源服务平台,致力于为广大站长和网站运营人员提供包含了友链交换、站长资讯、友情链接、网站交易、免费流量交换、站长工具、网站资源交换、软文投稿、软文推广等各个领域,是站长最好的选择