计算两地坐标距离

箴水技术分享 . 发布于 2023-03-31 05:34:38 . 阅读 53

计算两个经纬度坐标系的拟直线距离

1、获取相对位置的经纬度坐标

2、获取对应的批量统计的数据经纬坐标点

3、数学方法计算两地直线记录

/*
	1.假设地球是一个完美的球体
	2.A坐标(x,y) B坐标(x,y)
	计算可得
	X轴差值:|A.x - B.x|
	Y轴差值:|A.y - B.y|
	模拟以量条计算所得的距离为直角坐标系原点无限延长的交点
	C边:X²+Y²=C²
	当坐标系周展示以球体的方式展示
*/
let MathLeb = Math.PI / 180.0;//经纬度转换成三角函数中度分表形式。

坐标描述

Demo示例

// 计算坐标距离
//pow() 方法可返回 x 的 y 次幂的值。
MapMath:async function(){
	let A = {"lat":102,"lng":100};
	let B = [{"lat":100,"lng":100},{"lat":101,"lng":101}];
	for(var i=0;i<B.length;i++){
		B[i].distance = await this.GetMapDistance(A.lat,A.lng,B[i].lat,B[i].lng);
	}
	console.log("B数组",B);
}
GetMapDistance:async function(lat1,lng1,lat2,lng2) {
let MathLeb = Math.PI / 180.0;//经纬度转换成三角函数中度分表形式。
   var radLat1 = Number(lat1*MathLeb);
   var radLat2 = Number(lat2*MathLeb);
   var a = radLat1 - radLat2;
   var  b = Number(lng1*MathLeb) - Number(lng2*MathLeb);
   var 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)));
   s = s *6378.137 ;//地球半径;
   s = Math.round(s * 10000) / 10000;//以Km输出
   s=s.toFixed(2);
   return s;
}

总结

此方法为计算所的值,符合理论数据正确的情况下的结果集。

具体使用可根据个人业务需求调整。