我們常說的經緯度,屬于球面坐标系,因為地球是個球體。如果知道地球上A、B兩個地方的坐标,如何求它們之間的距離?
這是有公式的,照算可也:
function getOffset(p,p0){//計算p和p0之間的距離
//x:經度 y:緯度
let x = getRadian(p.x);//經度轉為弧度
let y = getRadian(p.y);
let x0 = getRadian(p0.x);
let y0 = getRadian(p0.y);
let R = 6371.393;//地球半徑,千米
let acos = Math.acos;
let cos = Math.cos;
let sin = Math.sin;
let pi = 3.1415926;
//R * arccos(cos(y1) * cos(y2) * cos(x2 - x1) + sin(y1) * sin(y2))
return off = R * acos(cos(y) * cos(y0) * cos(x0 - x) + sin(y) * sin(y0));
function getRadian(jw){//經緯度轉弧度
return (jw * pi) / 180;
}
}