如何使用纬度和经度计算距离和方位?

时间:2010-11-14 13:05:24

标签: c# java map navigation geolocation

假设这4个值:

        double lat1 = ToRadians(53.14722222222222);
        double lon1 = ToRadians(-1.8494444444444447);
        double lat2 = ToRadians(52.20444444444445);
        double lon2 = ToRadians(-0.14055555555555554);

我计算谷歌地图获取方向,我有大约181公里,但在这个网站(http://www.movable-type.co.uk/scripts/latlong.html)它有大约170公里。

在我的源代码中,我使用java和c#来实现这个功能,当我计算它时,我得到了大约155公里。

为什么它们不相同?

您是否有能够准确计算出这2个值的函数?

2 个答案:

答案 0 :(得分:1)

网站上的Haversine公式是合理准确的“乌鸦飞行”。您没有说明如何使用Google地图计算距离,但如果您只是输入值并要求它计算路线,那么它将使用更长的行驶距离(跟随道路)。如果您对Haversine公式的实现提出了与网站不同的答案,那么您或他们已经错误地实现了它。您可能会发现another web site检查您的答案,看看哪个。

您可以在C#here中找到实现。

答案 1 :(得分:0)

在Google地球上,该值为155.92km。 所以它同意你的结果。

Google地球使用Great Circle Distance计算,考虑到地球是球体的事实。 我不知道其他两个来源。

我会保留你当前的实现。