2017-07-18 29 views
0

所以我已经坐标(A)x经度和纬度。我想要的是根据用户输入创建新坐标(B),其中坐标和方向(0 - 360)之间的距离(米)。什么公式来实现呢?基于距离和方向创建坐标

到目前为止,我要做的就是用这个公式从answer1answer2

new_latitude = latitude + (dy/r_earth) * (180/pi); 
new_longitude = longitude + (dx/r_earth) * (180/pi)/cos(latitude * pi/180); 

,但它只是创造新的一个方向的坐标,我想是的方向是可以改变的。

回答

1

可以使用从this excellent site式(节目标点给定的距离,并从开始点轴承)

var φ2 = Math.asin(Math.sin(φ1)*Math.cos(d/R) + 
        Math.cos(φ1)*Math.sin(d/R)*Math.cos(brng)); 
var λ2 = λ1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(φ1), 
         Math.cos(d/R)-Math.sin(φ1)*Math.sin(φ2)); 

其中φ是纬度,λ是经度,θ在轴承(顺时针从北),δ是角距离d/R; d为行进距离,R为地球半径