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
全局中部横幅
精易论坛

富有学习气氛的编程技术论坛。易语言答疑互助模式,让新手的疑问得到解决,让高手接到软件定制业务。-精易e语言论坛!

ITeye

Java编程,SpringStrutsWebwork框架深入,XMLHTTPAjax开发,JavaWeb开发,Java企业应用,Java设计模式,Java开源框架,Java应用服务器,RichClient讨论,Ruby编程,RubyDSL开发,Rubyonrails实践,JavaScript编程,敏捷软件开发XPTDD,软件配置管理,软件测试,项目管理UML,数据库,C#/.netC/C++Erlang/FPPHP/Linux平台,精通Hibernate

666资源网

666资源网提供最新最全的免费网站源码下载(公众号源码,小程序源码,php网站源码,DZ模板,帝国模板,棋牌游戏,H5网页游戏,dede模板,各种插件模板等),精品商业网站插件模版免费下载,建站教程和建站工具,为各位站长提供最新最全的的网站资源下载,打造专业的互联网精品资源为一体化的源码资源分享平台!

论坛

该站点未添加描述description...

凤凰网

凤凰网是中国领先的综合门户网站,提供含文图音视频的全方位综合新闻资讯、深度访谈、观点评论、财经产品、互动应用、分享社区等服务,同时与凤凰无线、凤凰宽频形成三屏联动,为全球主流华人提供互联网、无线通信、电视网三网融合无缝衔接的新媒体优质体验。

Chrome

该站点未添加描述description...

ASUS

ASUS,华硕,ASUS官网,华硕官网,华硕官方网站,ASUS,华硕,华硕电脑.华硕始终对质量与创新全力以赴,不断为消费者及企业用户提供崭新的科技解决方案.华硕拥有众多划时代的产品,查找&购买笔记本电脑,游戏手机,路由器,显示器,主板及更多产品.

TOM网首页

TOM是国内领先的互联网公司,为全球用户提供全面的最新新闻资讯、邮箱及游戏定制等服务,内容涵盖新闻、娱乐时尚、体坛赛事、汽车科技、母婴生活、健康旅游、商业财经等近30个频道的资讯内容和最新热点。

翱联旅游网

翱联旅游网是您一站式的旅行专家,致力于为您打造无与伦比的旅游体验。在这里,您将开启一段精彩纷呈的探索之旅。我们拥有海量的旅游资源,涵盖全球热门目的地以及小众秘境,无论是浪漫的海滨度假、神秘的古老遗迹、壮丽的山川湖泊,还是充满异域风情的城市漫步,翱联旅游网都能满足您的多元需求。

最新免费电影

电影资源网(www.zxghc.com)是一个免费手机在线影院,涵盖大量免费的VIP电视剧资源、最新上映大片、好看的综艺节目及动漫视频,是一个播放速度快,资源多的免费影视网站。