我想找到距当前点一些X公里的点A,
如果我知道中心点的纬度和经度我怎样才能获得周长四个点的纬度,经度......我正在寻找很长时间但却无法用JavaScript或Java获得解决方案。 ..距离在我的情况下将在几公里,所以不能认为地球是平坦的表面,所以PLZ不建议这样的解决方案......
由于
答案 0 :(得分:6)
看一下at this page,它详细解释了使用JavaScript示例进行距离计算的球形模型:
给定起点,初始方位和距离,这将计算沿(最短距离)大圆弧行进的目标点和最终方位。
JavaScript:
var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) +
Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1),
Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
答案 1 :(得分:2)
我正在粉碎上面的代码直到我没有意识到lat和lon都是弧度值! 你必须将它们转换回学位,你会看到真正的价值观。
这是代码
public class cal
{
public static void main(String []args){
double R = 6371.0;
double d = 0.100;
double lat1 = 42.873, lon1 = 74.568;
double Radlat1 = Math.toRadians(42.873);
double Radlon1 = Math.toRadians(74.568);
double brng = Math.toRadians(225);
double lat2,lon2;
System.out.println("Hello World");
//lat2 = Math.sin();
lat2 = Math.asin(Math.sin(Radlat1)*Math.cos(d/R) +
Math.cos(Radlat1)*Math.sin(d/R)*Math.cos(brng));
System.out.println("Lat2degree"+"="+Math.toDegrees(lat2)+"\n"+"Lat2="+lat2);
double NewRadLat2 = Math.toRadians(Math.toDegrees(lat2));
lon2 = Radlon1+Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(Radlat1),
Math.cos(d/R)-Math.sin(Radlat1)*Math.sin(lat2));
System.out.println("Lon2"+"="+Math.toDegrees(lon2));
}
}