tôi đã sử dụng mã này, nhưng nó không làm việc:Làm thế nào tôi có thể tính toán khoảng cách giữa hai điểm gps trong Java?
Cần khoảng cách giữa hai gps phối như 41,1212, 11,2323 bằng km (Java)
double d2r = (180/Math.PI);
double distance = 0;
try{
double dlong = (endpoint.getLon() - startpoint.getLon()) * d2r;
double dlat = (endpoint.getLat() - startpoint.getLat()) * d2r;
double a =
Math.pow(Math.sin(dlat/2.0), 2)
+ Math.cos(startpoint.getLat() * d2r)
* Math.cos(endpoint.getLat() * d2r)
* Math.pow(Math.sin(dlong/2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 6367 * c;
return d;
} catch(Exception e){
e.printStackTrace();
}
Cách tiếp cận lượng giác của bạn sẽ hoạt động thực sự tốt nếu Trái đất là một hình cầu hoàn hảo. Tuy nhiên, nó thực sự là một ellipsoid, vì vậy bán kính từ bề mặt đến lõi của Trái đất là biến tùy thuộc vào vị trí của bạn trên trái đất. Để có được phép đo khoảng cách chính xác, bạn cần có một thư viện hệ thống tọa độ có thể giải thích cho điều này. Giả sử một quả cầu có thể đủ gần với bất cứ điều gì bạn đang làm, nhưng nếu bạn cần nó là rất chính xác, bạn sẽ cần phải tìm một thư viện tốt. –
trùng lắp từ: [http://stackoverflow.com/questions/3694380/calculating-distance-between-two-points-using-latitude-longitude-what-am-i-doi][1] [1]: http://stackoverflow.com/questions/3694380/calculating-distance-between-two-points-using-latitude-longitude-what-am-i-doi – gonella