Search code examples
phpgeolocation

How to check if a certain coordinates fall to another coordinates radius using PHP only


I have seen so many functions but it happens to work only for MySQL or Postgresql. I want the equivalent logic for PHP. I'm doing some comparisons, like I have this data that were being produced when created.

Lat: 56.130366
Long: -106.34677099999

Later on, I want to check if this coordinates will fall within a radius of another coordinates.

Lat: 57.223366
Long: -106.34675644699
radius: 100000 ( meters )

Thanks in advance!


Solution

  • Thanks for the help. Below is an example function that takes two sets of longitude and latitude co-ordinates and returns the distance between the two.

    function getDistance($latitude1, $longitude1, $latitude2, $longitude2) {  
      $earth_radius = 6371;
    
      $dLat = deg2rad($latitude2 - $latitude1);  
      $dLon = deg2rad($longitude2 - $longitude1);  
    
      $a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * sin($dLon/2) * sin($dLon/2);  
      $c = 2 * asin(sqrt($a));  
      $d = $earth_radius * $c;  
    
      return $d;  
    }
    
    $distance = getDistance(56.130366, -106.34677099999, 57.223366, -106.34675644699);
    if ($distance < 100) {
      echo "Within 100 kilometer radius";
    } else {
      echo "Outside 100 kilometer radius";
    }