通过long和lat来计算毕达哥拉斯的短距离

时间:2015-05-07 08:53:09

标签: javascript math

我试图用毕达哥拉斯公式计算两点之间的短距离(4-5米),但我得到的结果如1.1979775925924383E7, 1.1979777593853703E7, 1.1979940093453636E7两点之间的距离。这是什么意思?

我将这个80.234578的纬度和经度传递给函数,后面还有6位数的逗号。

    private double pyth(double lat1, double lon1, double lat2,
        double lon2) {

    final int R = 6371 * 1000; // Radious of the earth in meter
     double x = toRad(lon2-lon1);
     double y = toRad(lat1+lat2);

     double distance = Math.sqrt(x*x+y*y)*R;
     return distance;
}

private double toRad(double value) {
    return value * Math.PI / 180;
}

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

你需要考虑纬度的差异,而不是总和。这将给你答案只是略有错误,因为它假装地球是平的(经度应该乘以纬度的余弦)。我还将xy更改为dxdy,因为它更具描述性。

private double pyth(double lat1, double lon1, double lat2, double lon2) {
    final int R = 6371 * 1000; // Radius of the earth in meter
    double dx = toRad(lon2-lon1)*Math.cos((lat1+lat2)/2);
    double dy = toRad(lat1-lat2);

    return Math.sqrt(dx*dx+dy*dy)*R;
}

private double toRad(double value) {
    return value * Math.PI / 180;
}