e***@163.com
e***@163.com
  • 发布:2019-09-27 10:15
  • 更新:2019-09-27 10:56
  • 阅读:6800

uni-app如何计算两个坐标距离?

分类:uni-app
			uni.getLocation({  
				success: (res) => {  
					let p1 = new plus.maps.Point(res.longitude, res.latitude);  
					let p2 = new plus.maps.Point(120.159018, 42.026545);  
				}  
			})  

在微信开发者工具中报错,说plus未定义。
生成安卓app不报错,但是微信小程序报错说plus未定义,我就想计算两个坐标的距离,如何实现?

2019-09-27 10:15 负责人:无 分享
已邀请:
羊仔

羊仔

plus 是app的方法,肯定不行了,可以用直接算:
function getFlatternDistance(lat1,lng1,lat2,lng2){
var f = getRad((lat1 + lat2)/2);
var g = getRad((lat1 - lat2)/2);
var l = getRad((lng1 - lng2)/2);

    var sg = Math.sin(g);  
    var sl = Math.sin(l);  
    var sf = Math.sin(f);  
      
    var s,c,w,r,d,h1,h2;  
    var a = EARTH_RADIUS;  
    var fl = 1/298.257;  
      
    sg = sg*sg;  
    sl = sl*sl;  
    sf = sf*sf;  
      
    s = sg*(1-sl) + (1-sf)*sl;  
    c = (1-sg)*(1-sl) + sf*sl;  
      
    w = Math.atan(Math.sqrt(s/c));  
    r = Math.sqrt(s*c)/w;  
    d = 2*w*a;  
    h1 = (3*r -1)/2/c;  
    h2 = (3*r +1)/2/s;  
      
    return d*(1 + fl*(h1*sf*(1-sg) - h2*(1-sf)*sg));  
}

该问题目前已经被锁定, 无法添加新回复