2012-05-27 10 views
5

Tengo una base de datos llamada users con las columnas latitude y longitude, y quiero trabajar en los usuarios más cercanos (usuarios de la tabla users) que están dentro de un radio de 50 kilómetros a una cierta latitud y longitud provisto por $_POST.Calcular los usuarios más cercanos MySQL

¿Puede 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í?

+2

posible duplicado de [Proximity Search] (http://stackoverflow.com/questions/260335/proximity-search) –

Respuesta

2

Usted puede 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_latitude ref_longitude

Punto B: latitud longitud

Mi Lat Valores/Lon están en grados, al igual este:

Dresden: 13.721067614 881400/51.060033646337900

1

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"; 
Cuestiones relacionadas