
Untitled
By: a guest on
May 7th, 2012 | syntax:
None | size: 1.39 KB | hits: 8 | expires: Never
PHP and GPS Coordinates, getting the total distance along paths made up of several points
$coordinates = "-82.36554110283872,26.15200821551467,0 -82.420692,26.097404,0 -82.52855700000001,26.186567,0 -82.41250599999999,25.996422,0 -82.50644510379755,26.05431354409091,0"
function coordDistance($lat1, $lon1, $lat2, $lon2) {
$delta_lat = $lat2 - $lat1;
$delta_lon = $lon2 - $lon1;
$earth_radius = 20908800.00; //Distance around the earth in feet
$alpha = $delta_lat/2;
$beta = $delta_lon/2;
$a = sin(deg2rad($alpha)) * sin(deg2rad($alpha)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin(deg2rad($beta)) * sin(deg2rad($beta)) ;
$c = asin(min(1, sqrt($a)));
$distance = 2*$earth_radius * $c;
$distance = round($distance, 4);
return $distance;
}
$total = 0;
$points = explode(' ', $coordinates);
$count = count($points);
for ($i = 0; $count - 1 > $i; ++$i) {
list($lon1, $lat1, $alt1) = explode(',', $points[$i]);
list($lon2, $lat2, $alt2) = explode(',', $points[$i + 1]);
$total += coordDistance($lat1, $lon1, $lat2, $lon2);
}
$coordinatesArray = explode(" ", $coordinates);
coordDistance($coordinatesArray[i], $coordinatesArray[i+1],); // in a loop
$coordinateA = explode(",", $coordinatesArray[i]); // again, in a loop
$coordinateB = explode(",", $coordinatesArray[i+1]);
coordDistance($coordinateA[0], $coordinateB[0], $coordinateA[1], $coordinateB[1])