vue:如何通过两个点的经纬度进行距离的计算(很简单)

36 篇文章 1 订阅
36 篇文章 0 订阅

首先假设从api获取到了自己的纬经度和别人的纬经度

首先有一个概念需要说一下

地球半径

由于地球不是一个完美的球体,所以并不能用一个特别准确的值来表示地球的实际半径,不过由于地球的形状很接近球体,用[6357km] 到 [6378km]的范围值可以涵盖需要的所有半径。并且通常情况下,地球半径有几个常用值:

极半径,从地球中心至南极或北极的距离, 相当于6356.7523km; 赤道半径,从地球中心到赤道的距离,大约6378.137km; 平均半径,6371.393km,表示地球中心到地球表面所有各点距离的平均值; RE,地球半径,有时被使用作为距离单位, 特别是在天文学和地质学中常用,大概距离是6370.856km;

所以我们通过地球半径进行计算的时候,通常情况下,我们可以使用上面的每一个值都可以进行计算,不过或多或少都会有误差的,但这样的误差是也是允许存在的。最后通过let f = e.toFixed(2)保留距离的两位小数

通过生命周期函数mouted获取当前两个位置的距离

运行结果

这样就可以完成通过经纬度进行距离的计算了是不是很简单实用,直接复制粘贴方法调用就可以使用了。

方法:

calculateDistance(lat1, lon1, lat2, lon2) { //计算两点之间的距离
				console.log('lat1, lon1, lat2, lon2', lat1, lon1, lat2, lon2)
				let R = 6371; //地球半径
				let dLat = this.deg2rad(lat2 - lat1)
				let dLon = this.deg2rad(lon2 - lon1)
				let a =
					Math.sin(dLat / 2) * Math.sin(dLat / 2) +
					Math.cos(this.deg2rad(lat1)) * Math.cos(this.deg2rad(lat2)) *
					Math.sin(dLon / 2) * Math.sin(dLon / 2);
				let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
				let d = R * c; // 距离,单位:千米  
				let e = parseFloat(d)
				let f = e.toFixed(2)
				return f;
			},
 deg2rad(deg) {
			 return deg * (Math.PI / 180)
			},

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 Haversine 公式来计算两个经纬度坐标之间的距离。Haversine 公式基于球面三角形的一些性质,可以近似计算地球上两之间的直线距离。 以下是使用 Haversine 公式计算两个经纬度坐标之间距离Vue 代码示例: ```javascript // 计算两个经纬度之间的距离 function getDistance(lat1, lon1, lat2, lon2) { const R = 6371; // 地球半径,单位为公里 const dLat = deg2rad(lat2 - lat1); const dLon = deg2rad(lon2 - lon1); const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); const d = R * c; // 距离,单位为公里 return d; } // 将角度转换为弧度 function deg2rad(deg) { return deg * (Math.PI / 180); } // 示例:计算北京和上海之间的距离 const distance = getDistance(39.9042, 116.4074, 31.2304, 121.4737); console.log(distance); // 输出结果:1068.3100608591576 ``` 在上面的代码中,`getDistance` 函数接受四个参数:`lat1`、`lon1`、`lat2` 和 `lon2`,分别代表两个经纬度坐标的纬度和经度。该函数先将两个经纬度坐标转换为弧度,然后根据 Haversine 公式计算之间的距离。最后,函数返回距离,单位为公里。 可以将上面的代码用于 Vue 项目中,例如在组件的方法中调用 `getDistance` 函数来计算两个经纬度坐标之间的距离

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值