我试图从这个站点实现该功能。
φ2 = asin( sin(φ1)*cos(d/R) + cos(φ1)*sin(d/R)*cos(θ) )
λ2 = λ1 + atan2( sin(θ)*sin(d/R)*cos(φ1), cos(d/R)-sin(φ1)*sin(φ2))
//import static java.lang.Math.*;
public static LatLng fromBearingDistance(double lat1, double lon1, double brng, double d) {
double R = 6371.0;
double lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) +
Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
double lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1),
Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
return new LatLng(lat2,lon2);
}
我的函数的结果是:0.0905,1.710
应该在什么时候53.188 0.133
调用
fromBearingDistance(53.32055555555556f, 1.7297222222222224f,
96.02166666666666f, 124.8f);
这与示例站点的坐标相同。
这里会发生什么?- 代码字面上的意思是一样的。我唯一改变的是双打的vars。
我使用这个网站将度数转换为十进制。