考虑到两者之间的距离,如何从给定点找到一个点的纬度和经度?

时间:2011-09-28 11:35:16

标签: java javascript java-ee

我想找到距当前点一些X公里的点A,  Example

如果我知道中心点的纬度和经度我怎样才能获得周长四个点的纬度,经度......我正在寻找很长时间但却无法用JavaScript或Java获得解决方案。 ..距离在我的情况下将在几公里,所以不能认为地球是平坦的表面,所以PLZ不建议这样的解决方案......

由于

2 个答案:

答案 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));

     }
}