PHP calculate distance between 2 places in 9 easy steps
Last Updated on Feb 14, 2023
Introduction
For whatever reason you might need to calculate the distance between two place.
In order to calculate the distance between two places we need the latitude and longitude of both of those places.
The formula might look hard but it’s actually very easy and with the help of mathematical functions in php we can easily do that. So let’s get started
Steps
1- we need to calculate the difference of longitude of the second place and the first place
$longDiff = $placeA['longitude'] - $placeB['longitude'];
2- we need to convert this value to radians with deg2rad function in PHP
$longDiffRad = deg2rad($longDiff);
3- and then calculate its cosine
$cosThetaRad = cos($longDiffRad);
4- we need to convert the latitude of both places to radians
Radian is 180 / pi but we don’t need to worry about it. PHP will take care of it.
$latARad = deg2rad($placeA['latitude']);
$latBRad = deg2rad($placeB['latitude']);
5- we need to calculate the sine and cosine of both converted latitudes
$sinLatARad = sin($latARad);
$sinLatBRad = sin($latBRad);
$cosLatARad = cos($latARad);
$cosLatBRad = cos($latBRad);
6- let’s do the magic and calculate the distance
$dist = $sinLatARad * $sinLatBRad + $cosLatARad * $cosLatBRad * $cosThetaRad;
7- now let’s calculate the arc cosine of the distance
$arcCosDist = acos($dist);
8- and finally let’s multiply that to the radius of the earth
$radius = 6364.963; // kilometers
$arcCosDist * $radius;
9- we are done but we can round the final number as well
round($arcCosDist * $radius,2)
Now let’s see the whole formula at once
$radius = 6364.963; // kilometers
$longDiff = $placeA['longitude'] - $placeB['longitude'];
$longDiffRad = deg2rad($longDiff);
$cosThetaRad = cos($longDiffRad);
$latARad = deg2rad($placeA['latitude']);
$latBRad = deg2rad($placeB['latitude']);
$sinLatARad = sin($latARad);
$sinLatBRad = sin($latBRad);
$cosLatARad = cos($latARad);
$cosLatBRad = cos($latBRad);
$dist = $sinLatARad * $sinLatBRad + $cosLatARad * $cosLatBRad * $cosThetaRad;
$arcCosDist = acos($dist);
echo round($arcCosDist * $radius,2);
We can turn it into a function and test it with different places
$locationA = ['latitude' => 41.0138, 'longitude' => 28.9497]; // istanbul
$locationB = ['latitude' => 52.5244, 'longitude' => 13.4105]; // berlin
function howLong(array $placeA,array $placeB){
$radius = 6364.963; // kilometers
$longDiff = $placeA['longitude'] - $placeB['longitude'];
$longDiffRad = deg2rad($longDiff);
$cosThetaRad = cos($longDiffRad);
$latARad = deg2rad($placeA['latitude']);
$latBRad = deg2rad($placeB['latitude']);
$sinLatARad = sin($latARad);
$sinLatBRad = sin($latBRad);
$cosLatARad = cos($latARad);
$cosLatBRad = cos($latBRad);
$dist = $sinLatARad * $sinLatBRad + $cosLatARad * $cosLatBRad * $cosThetaRad;
$arcCosDist = acos($dist);
return round($arcCosDist * $radius, 2);
}
echo howLong($locationA,$locationB);
Conclusion
Now you know about caclulating the distance between two places in PHP.
I recommend you to open a PHP files and try to write the function and try it with different latitude and longitudes.
If you have any suggestions, questions, or opinions, please contact me. I’m looking forward to hearing from you!
Key takeaways
- calculate distance in php
- using mathematics in php