我从Stackoverflow获取此代码并将其标记为正常工作。我只是测试它,但在我的情况下,它给出了错误的结果。这些点的实际距离约为139 km b / w,但显示的是2.07 km。方法以米为单位返回距离然后将其转换为km但它给出了错误的值。请帮忙。
答案 0 :(得分:0)
我用这个公式,它起作用了:
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,则上述答案将有效。否则,您需要重新投影当前坐标系中的点。