Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

248
Views
Compruebe si una latitud y longitud están dentro de un círculo en PHP

Pregunta original Comprobar si una latitud y longitud está dentro de un círculo

Me gustaría saber cómo se puede lograr esto usando PHP. Tengo una serie de latitudes y longitudes y me gustaría probarlas con otra serie de latitudes/longitudes para dar un escenario verdadero/falso

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

He preparado el fragmento de código de muestra para usted. Está funcionando bien para mí. Siéntete libre de adaptarte con tu propia lógica.

 $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"; }

Si el resultado de 'K' es inferior a 10 km, obtendrá el resultado como "Verdadero". De lo contrario, se devolverá 'Falso' como resultado.

over 4 years ago · Santiago Trujillo Report

0

Lo haría de esta manera, primero necesitaré calcular la distancia entre dos puntos (este es un método similar al de Google Maps: https://stackoverflow.com/a/53069194/7071905 ):

 function computeDistance($lat1, $lng1, $lat2, $lng2, $radius) { static $x = M_PI / 180; $lat1 *= $x; $lng1 *= $x; $lat2 *= $x; $lng2 *= $x; $distance = 2 * asin(sqrt(pow(sin(($lat1 - $lat2) / 2), 2) + cos($lat1) * cos($lat2) * pow(sin(($lng1 - $lng2) / 2), 2))); return $distance * $radius; }

Luego, necesitaré una función simple con el punto base (el centro) para volver verdadero cuando la distancia sea inferior a 10 kilómetros ($ KM):

 function isWithinCircle($lat, $lng, $KM = 10): bool { $baseLat = 0; $baseLng = 0; $radius = 6378137; return computeDistance($baseLat, $baseLng, $lat, $lng, $radius) <= $KM; }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!