Masalah:
Coretan kod Java yang disediakan mengira jarak antara dua titik berdasarkan latitud dan longitudnya. Kebimbangan ialah formula yang digunakan mungkin menghasilkan keputusan yang sedikit tidak tepat, terutamanya apabila terdapat beberapa titik pada jarak yang ketara.
Penyelesaian:
Untuk menangani isu ini, berikut ialah pelaksanaan Java bagi kaedah Haversine yang mengambil kira perbezaan ketinggian juga:
<code class="java">/** * Calculate distance between two points in latitude and longitude taking * into account height difference. If you are not interested in height * difference pass 0.0. Uses Haversine method as its base. * * lat1, lon1 Start point lat2, lon2 End point el1 Start altitude in meters * el2 End altitude in meters * @returns Distance in Meters */ public static double distance(double lat1, double lat2, double lon1, double lon2, double el1, double el2) { final int R = 6371; // Radius of the earth double latDistance = Math.toRadians(lat2 - lat1); double lonDistance = Math.toRadians(lon2 - lon1); double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); double distance = R * c * 1000; // convert to meters double height = el1 - el2; distance = Math.pow(distance, 2) + Math.pow(height, 2); return Math.sqrt(distance); }</code>
Pelaksanaan ini mengira jarak dengan tepat sambil turut menggabungkan perbezaan ketinggian. Ia menggunakan kaedah Haversine sebagai asas sambil mempertimbangkan perbezaan ketinggian antara dua titik.
Atas ialah kandungan terperinci Bagaimana Mengira Jarak Antara Dua Titik Dengan Tepat Menggunakan Latitud, Longitud dan Altitud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!