Search code examples
phpgeometrydistancelatitude-longitude

Check if a latitude and longitude is within a circle in PHP


Original question Check if a latitude and longitude is within a circle

I would like to know how this can be achieved using PHP. I have an array of latitudes and longitudes and would like to test them against another array of latitudes/longitudes to give a true/false scenario

enter image description here


Solution

  • I've prepared the sample code snippet for you. It's working well for me. Feel free to adapt with your own logic.

    $lat1 = "10.5900627";
    $lon1 = "77.1933317";
    
    $lat2 = "10.6068507";
    $lon2 = "77.117246";
    
    function distance($lat1, $lon1, $lat2, $lon2, $unit) 
    {
      if (($lat1 == $lat2) && ($lon1 == $lon2)) {
        return 0;
      }
      else {
        $theta = $lon1 - $lon2;
        $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
        $dist = acos($dist);
        $dist = rad2deg($dist);
        $miles = $dist * 60 * 1.1515;
        $unit = strtoupper($unit);
    
        if ($unit == "K") {
          return ($miles * 1.609344);
        } else if ($unit == "N") {
          return ($miles * 0.8684);
        } else {
          return $miles;
        }
      }
    }
    
    if(distance($lat1, $lon1, $lat2, $lon2, "K") < 10)
    {
      echo "True";
    }
    else
    {
      echo "False";
    }
    

    If the result of 'K' is less than 10Km, then you will get the result as "True". Otherwise 'False' will return as result.