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
全局中部横幅
流星导航系统

流星导航网,免费收录,致力于简洁高效的上网导航和搜索入口,沉淀最具价值链接,全站无商业推广,简约而不简单。

西瓜创作平台

西瓜创作平台是西瓜创作者的专属创作平台,支持用户发布西瓜视频,并通过提供发布视频、内容管理、数据分析、评论管理、收益分析、创作激励、创作课程、消息管理等服务助力西瓜用户高效运营和创作!

网易新闻

新闻,新闻中心,包含有时政新闻,国内新闻,国际新闻,社会新闻,时事评论,新闻图片,新闻专题,新闻论坛,军事,历史,的专业时事报道门户网站

ZAKER新闻

ZAKER聚合了新闻、杂志、报纸、公众号等各类头条资讯,提供头条,科技,娱乐,体育,国内,国际,军事,财经,互联网,教育,时尚,社会,亲子,情感,旅游,科学,星座,奢侈品,游戏,美食,电影,健康,理财等多个领域今日最热门内容,并通过大数据算法提供个性化、社会化新闻服务。

seo基础知识

我们梵吉seo专注百度SEO优化领域,本站总结了seo基础入门教程,让零基础的朋友可以快速学会SEO,并提供了SEO快速进阶技术、百度云视频教程、seo面试测试题、seo实战培训。希望可以帮助到更多的新手朋友们!

科赋锐信息科技Cloudflare

使员工、应用程序和网络在任何地方都更快、更安全,同时降低复杂性和成本。

800+热门手游下载推荐

魔玩游戏网为您推荐800+热门好玩的手机游戏、高人气经典单机游戏和网络游戏、常用游戏软件辅助工具;手游排行榜,手游福利,优惠礼包码,游戏攻略教程,玩BT手游必备游戏盒子APP下载!

最新免费电影

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

富贵论坛

富贵论坛,二十五年老富贵论坛官网,业务涉及QQ号码、YY、淘宝、抖音、陌陌、手机靓号、游戏账号,二手交易论坛,买号卖号就上富贵交易平台官方网站。

网站收录

全人工编辑的开放式网站分类目录,收录国内外、各行业优秀网站,旨在为用户提供网站分类目录检索、优秀网站参考、网站推广服务。