บทความดีดีจากที่เราได้ค้นคว้าหาข้อมูลจากหลายๆแหล่งแล้วนำมาทดลองจนได้สูตรที่ถูกต้อง ซึ่งถ้าเราคอยเรียก API ของ google บ่อยๆจะทำให้เราเสีย Request โดยใช่เหตุ ดังนั้นเราจึงมีวิธีแก้คือนำสูตรมาเขียนที่ฝั่ง Client แทนแล้วดึงค่าจาก GPS ของเครื่องมาแทนค่าแล้วคำนวณ วิธีการนี้จะสามารถลด Request จาก Google ได้เยอะและยังสามารถทำให้แอพทำงานได้เร็วขึ้น
1. ให้เราสร้าง callatlon.java
public class calLatlong {
public Double Callatlongx(double lat1, double lon1, double lat2, double lon2, String unit) {
double theta = lon1 - lon2;
double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
dist = dist * 60 * 1.1515;
if (unit == "K") {
dist = dist * 1.609344;
} else if (unit == "N") {
dist = dist * 0.8684;
}
return (dist);
}
private static double deg2rad(double deg) {
return (deg * Math.PI / 180.0);
}
private static double rad2deg(double rad) {
return (rad * 180 / Math.PI);
}
}
2. การเรียกใช้
calLatlong callatlon = new calLatlong();
callatlon.Callatlongx(0.00000, 0.00000, 0.00000, 0.00000, "K");
การคำนวณหาระยะห่างนั้นเราจำเป็นต้องแปลงค่าที่ได้มาเป็นองศาก่อน
lat1 คือ ค่า latitude จากเครื่อง
lon1 คือ ค่า longitude จากเครื่อง
lat2 คือ ค่า latitude ของเป้าหมาย
lon2 คือ ค่า longitude ของเป้าหมาย
unit คือ หน่วยของการคำนวณมี 2 หน่วยคือ K(กิโลเมตร),N(ไมล์)
ทางเราหวังว่าบทความนี้จะเป็นประโยชน์แก่ผู้กำลังทำในเรื่องนี้อยู่ไม่มากก็น้อย
บทความที่ให้คุณเข้าใจการเขียนโค้ด เขียนโปรแกรม เกมหลายๆอย่างมากขึ้น