微信小程序批量计算两地坐标距离

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

  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;
}

总结:
基础数学方法
直角三角形,角度计算
此方法为计算所的值,符合理论数据正确的情况下的结果集。
具体使用可根据个人业务需求调整。
如有不理解的地方可以留言,一起讨论。
Mark!

猜你喜欢

转载自blog.csdn.net/qq_43784821/article/details/112781516