为什么计算两个lat之间的距离,long给出了错误的结果?

时间:2016-04-15 19:15:20

标签: java android

我从Stackoverflow获取此代码并将其标记为正常工作。我只是测试它,但在我的情况下,它给出了错误的结果。这些点的实际距离约为139 km b / w,但显示的是2.07 km。方法以米为单位返回距离然后将其转换为km但它给出了错误的值。请帮忙。enter image description here

2 个答案:

答案 0 :(得分:0)


查看thisthis链接,您一定会找到所需的结果。

我用这个公式,它起作用了:

        double R = 6371.0; // km
        double dLat = (lat2-lat1)*Math.PI/180.0;
        double dLon = (lon2-lon1)*Math.PI/180.0;
        lat1 = lat1*Math.PI/180.0;
        lat2 = lat2*Math.PI/180.0;

        double a = Math.sin(dLat/2.0) * Math.sin(dLat/2.0) +
                Math.sin(dLon/2.0) * Math.sin(dLon/2.0) * Math.cos(lat1) * Math.cos(lat2); 
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
        double d = R * c;       

        return d*1000;

答案 1 :(得分:0)

您需要做的第一件事是找出您用来计算距离的坐标系和投影系统。你能提供你正在使用的坐标吗?

如果您正在使用WGS84,则上述答案将有效。否则,您需要重新投影当前坐标系中的点。