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 just fetch the rows in an array. Then call the given distanceGeoPoints() function with longitude and latitude of each two points using loop.
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);
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 ?