获得2个经度或2个纬度的英里距离

时间:2017-01-04 05:42:21

标签: java c# google-maps math

我试图修改公式以获得2 lat或2 lon之间的距离,这将转换为x,y坐标。

下面的代码/公式(Haversine)给出了斜边(两个角度之间的直接距离)

然而,我只想使用纬度和光度来获得x,y坐标。经度。由于这些是直线,因此角度无关紧要。

一种方法是将两个纬度设置为零 - 这将给我经度距离(反之亦然) - 但是它需要我调用相同的函数3次:

1表示直接距离,1表示x距离,1表示y距离

有没有什么方法可以修改下面的代码来有效地计算所有3并将其作为数组返回[x_dis,y_dis,direct_dist]

{{1}}

1 个答案:

答案 0 :(得分:0)

我能看到的最好方法是创建一个调用它三次并返回每个值的函数。

private static double[] getAlldistances(double lat1, double lat2, double long1, double long2, string unit){
    double latDistance = distance(lat1, 0, lat2, 0, unit);
    double longDistance = distance(0, long1, 0, long2, unit);
    double directDistance = distance(lat1, long1, lat2, long2, unit);
    return double int[3] {latDistance, longDistance, directDistance};
} 

这应该使用您现有的功能而不会出现问题。通过将两个点的long或lat设置为0,我们可以计算出lats或longs之间的距离。代码未经测试,应视为伪代码。