Tôi đã triển khai công thức "mang" từ http://www.movable-type.co.uk/scripts/latlong.html. Nhưng nó có vẻ rất không chính xác - tôi nghi ngờ một số sai lầm trong việc thực hiện của tôi. Bạn có thể giúp tôi tìm nó không? Mã của tôi bên dưới:Mang từ một tọa độ này sang một tọa độ khác
protected static double bearing(double lat1, double lon1, double lat2, double lon2){
double longDiff= lon2-lon1;
double y = Math.sin(longDiff)*Math.cos(lat2);
double x = Math.cos(lat1)*Math.sin(lat2)-Math.sin(lat1)*Math.cos(lat2)*Math.cos(longDiff);
return Math.toDegrees((Math.atan2(y, x))+360)%360;
}
Phải! Nhưng các thông số đầu vào vẫn là ProcJobLocation.bearing (53.944592, 27.595215, 55.745752, 37.630768); và đầu ra là 359.11592632310266. Vẫn còn một số sai lầm. –
Các yếu tố đầu vào của bạn dường như bằng độ. Bạn cần chuyển đổi chúng thành radian bằng 'Math.toRadians()', nếu không 'Math.sin()', 'Math.cos()' vv sẽ cho kết quả sai. – DNA
Cảm ơn sự giúp đỡ của bạn! –