una - usar mysql y php con google maps
Calcula los usuarios más cercanos MySQL (2)
Tengo una base de datos llamada users
con las columnas latitude
y longitude
, y quiero calcular los usuarios más cercanos (usuarios en la tabla de users
) que se encuentran dentro de un radio de 50 km a una cierta latitud y longitud proporcionada por $_POST
.
¿Puedes decirme cómo podría hacer eso? ¿Hay alguna función matemática que deba usarse o una función en MySQL como latitude_compare()
o algo así?
Puedes hacer algo como esto:
SELECT *,
(ACOS((SIN(RADIANS(ref_latitude))*SIN(RADIANS(latitude))) +
(COS(RADIANS(ref_latitude))*COS(RADIANS( latitude ))*COS(RADIANS( longitude)
-RADIANS(ref_longitude)))) * 6371) AS distance
FROM table
ORDER BY distance ASC
Punto A: ref_latitud ref_longitud
Punto B: latitud longitud
Mis valores Lat / Lon están en grados, como este:
Dresden: 13.721067614881400 / 51.060033646337900
Aquí hay un código que he estado usando, esto está en millas. Selecciona todo lat y lng dentro de un radio dado.
$q = "SELECT * ( 3959 * acos( cos( radians($current_lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($current_lng) ) + sin( radians($current_lat) ) * sin( radians( lat )))) AS distance FROM users HAVING distance < $radius";