首页 > 其他分享 >js 计算两个地点坐标之间的间距

js 计算两个地点坐标之间的间距

时间:2023-11-14 14:59:08浏览次数:23  
标签:间距 const string location2 js 坐标 toRadians sin Math

/**
 * 计算两个地点坐标之间的间距
 * @param {array} location1 [lon: string, lat: string] 地点坐标
 * @param {array} location2 [lon: string, lat: string] 地点坐标
 */
export function calculateDistance(location1, location2) {
	const earthRadius = 6371 // 地球半径,单位为千米

	function toRadians(degrees) {
		return degrees * (Math.PI / 180)
	}

	// 将经纬度转换为弧度
	const radLat1 = toRadians(location1[1])
	const radLon1 = toRadians(location1[0])
	const radLat2 = toRadians(location2[1])
	const radLon2 = toRadians(location2[0])

	// 计算经纬度差值(弧度)
	const diffLat = radLat2 - radLat1
	const diffLon = radLon2 - radLon1

	// 应用 Haversine 公式计算距离
	const a =
		Math.sin(diffLat / 2) * Math.sin(diffLat / 2) +
		Math.cos(radLat1) * Math.cos(radLat2) * Math.sin(diffLon / 2) * Math.sin(diffLon / 2)
	const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))
	return earthRadius * c
}

标签:间距,const,string,location2,js,坐标,toRadians,sin,Math
From: https://www.cnblogs.com/frank-link/p/17831563.html

相关文章

  • 原生JS实现视频截图
    视频截图效果预览利用Canvas进行截图要用原生js实现视频截图,可以利用canvas的绘图功能ctx.drawImage,只需要获取到视频标签,就可以通过drawImage把视频当前帧图像绘制在canvas画布上。constvideo=document.querySelector('video')constcanvas=document.createElement('c......
  • 表格数据拖拽排序 sortable.js
    需求拖拽表格的行数据,实现排序。问题拖拽后调用接口,但视图没变,还是原来的顺序场景:拖拽表格行数据后,tableDataArr中数据的orderNum值会改变,实现拖拽换序。期望情况:页面根据更改后的orderNum重新排序。实际情况:接口数据变了,但是页面行数据没有改变。也就是说,页面没有实现......
  • app直播源代码,JS 替换日期的横杠为斜杠
    app直播源代码,JS替换日期的横杠为斜杠例如1:   vardt="2010-01-05";      vardt=dt.replace("-","/");    //只替换第一个“-”:2010/01-05  alert(dt); ​例如2:   vardt="2010-01-05";     vardt=dt.replace(/-/g,"/&q......
  • 原生JS上传大文件分片
    上传大文件分片是一种常见的上传方式,可以有效地避免上传过程中出现网络中断等问题导致的上传失败。下面是一个使用原生JS实现上传大文件分片的示例代码: javascript//定义上传文件的分片大小constCHUNK_SIZE=1024*1024;//1MB//获取文件的MD5值functiongetFi......
  • VSCode 中 Json 文件介绍
    VisualStudioCode官方文档1.Json配置文件EditingJSONwithVisualStudioCodesettings.json分类defaultsettings.json:只读格式,相当于官方的参考文档;settings.json:自定义形式,优先级大于默认的settings.json文件,ctrl+shift+o查看默认提供的格式,而后自定......
  • js:React中使用classnames实现按照条件将类名连接起来
    参考文档https://www.npmjs.com/package/classnameshttps://github.com/JedWatson/classnames安装npminstallclassnames示例importclassNamesfrom"classnames";//字符串合并console.log(classNames("foo","bar"));//foobar//对象合并console.lo......
  • js:可选链运算符(?.)和空值合并运算符(??)
    文档:可选链运算符(?.)https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining空值合并运算符(??)https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing目录1、可选链运算符(?.)2、空值合并运算......
  • 基于React使用swiperjs实现竖向滚动自动轮播
    很多文章,都只提供了js部分,包括官方的文档也只有js部分,如果css设置不正确,会导致轮播图不自动播放。使用的swiper版本:v11.0.3文档https://swiperjs.com/get-startedhttps://swiperjs.com/react实现效果使用vite创建react应用pnpmcreatevitereact-app--templatereact完整依赖pac......
  • js运行机制
    区分进程和线程线程和进程区分不清,是很多新手都会犯的错误,没有关系。这很正常。先看看下面这个形象的比喻:进程是一个工厂,工厂有它的独立资源工厂之间相互独立线程是工厂中的工人,多个工人协作完成任务工厂内有一个或多个工人工人之间共享空间再完善完善概念:工......
  • vuejs3.0 从入门到精通——Pinia——Store 是什么?
    Pinia——Store是什么?https://pinia.vuejs.org/zh/getting-started.html#what-is-a-store一、Store是什么? Store(如Pinia)是一个保存状态和业务逻辑的实体,它并不与你的组件树绑定。换句话说,它承载着全局状态。它有点像一个永远存在的组件,每个组件都可以读取和写入它。......