首先假设从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)
},