Skip to content

Instantly share code, notes, and snippets.

@gajus
Created April 30, 2013 10:40
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save gajus/5487925 to your computer and use it in GitHub Desktop.
Save gajus/5487925 to your computer and use it in GitHub Desktop.
function distanceGeoPoints ($long1, $lat1, $long2, $lat2) {
$lat = deg2rad($lat2 - $lat1);
$long = deg2rad($long2 - $long1);
$a = sin($lat/2) * sin($lat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($long/2) * sin($long/2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$d = 6371 * $c;
return $d;
}
@MuhSalmaNabila
Copy link

I have many gps data on mysql db. It have 4 column for id, date time, lat, long. If I wanna calculate all of distance from start to last lat/long, how to set $lat1,$lat2,$long1,$long2 ?

@Mehedimuaz
Copy link

@MuhSalmaNabila just fetch the rows in an array. Then call the given distanceGeoPoints() function with longitude and latitude of each two points using loop.

@Devaanandhan
Copy link

Hi, how do i fetch the rows in array from my database? I try using this formula but it is weird because in google map when i test this two location, it shows 11 min but when i use this, it showing me 200+ hours. Please do need some assistance

Here is my example code :
a_lat = '3.159583';
a_lon = '101.717955';

b_lat = '3.160384';
b_lon = '101.736396';

function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
var R = 6371; // Radius of the earth in km
var dLat = deg2rad(lat2-lat1); // deg2rad below
var dLon = deg2rad(lon2-lon1);
var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2)
;
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Distance in km
return d;
}

function deg2rad(deg) {
return deg * (Math.PI/180)
}

distance = getDistanceFromLatLonInKm(a_lat, a_lon, b_lat, b_lon);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment