Rumus menghitung jarak antar 2 titik koordinat (latitude,longitude)
Ada yg pernah pakai Google Maps? Lokasi dimana Anda berada dapat ditunjukkan dengan koordinat, seperti "-6.2110,106.8214". Jika kalian mengetahui lokasi suatu tempat kan tinggal klik kanan-lalu pilih "Ada apa disini?what's here?" , maka koordinat akan didapat. Nah diantara titik2 tempat yg ingin Anda ketahui, pasti perlu tau berapa jarak dari kedua titik tersebut.
public double getDistance(double lat1, double lon1, double lat2, double lon2)
{
double R = 6371;//ini kalau tidaksalah adalah Radius bumi
double dividerToRad = 57.29577951;
double lat1rad = lat1 / dividerToRad;
double lon1rad = lon1 / dividerToRad;
double lat2rad = lat2 / dividerToRad;
double lon2rad = lon2 / dividerToRad;
double dLat = (lat2 - lat1);
double dLon = (lon2 - lon1);
double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(lat1rad) * Math.Cos(lat2rad) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2);
double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
double d = R * c;
return d; //jarak dua titik didapat (dalam satuan kilometer)
}
Contoh input:
Misalnya saya ingin mengetahui berapa jarak dari kantor saya ke BEJ. Koordinat gedung kantor saya terletak pada "-6.2110,106.8214", sedangkan untuk BEJ terletak di "-6.223497,106.808631". Maka pemanggilan methodnya menjadi seperti ini:
double jarak = getDistance(-6.2110,106.8214,-6.223497,106.808631);
Setelah dihitung kira2 jarak yg didapat adalah: 1.98073733882295 km atau kira2 1980.7373 meter