สูตรการคำนวณหาระยะห่าง latitude,longitude จาก GPS



สูตรการคำนวณหาระยะห่าง latitude,longitude จาก GPS

สูตรการคำนวณหาระยะห่าง latitude,longitude จาก GPS บน Android Studio ด้วยภาษา Java

บทความดีดีจากที่เราได้ค้นคว้าหาข้อมูลจากหลายๆแหล่งแล้วนำมาทดลองจนได้สูตรที่ถูกต้อง ซึ่งถ้าเราคอยเรียก 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(ไมล์)
ทางเราหวังว่าบทความนี้จะเป็นประโยชน์แก่ผู้กำลังทำในเรื่องนี้อยู่ไม่มากก็น้อย

บทความที่ให้คุณเข้าใจการเขียนโค้ด เขียนโปรแกรม เกมหลายๆอย่างมากขึ้น