Tengo una tabla mySQL con nombre de usuario, latitud y longitud del usuario. Me gustaría obtener una lista de usuarios que están dentro del círculo o cuadrado de una latitud y longitud dada con una distancia dada. Por ejemplo, mi entrada Lat = 78.3232 y Long = 65.3234 y distancia = 30 millas. Me gustaría obtener la lista de usuarios que están dentro de 30 millas de distancia del punto 78.3232 y 65.3234. ¿Es posible resolver esto con una sola consulta? ¿O puede darme una pista para comenzar a resolver esta consulta? Soy nuevo en la información basada en geo.
20
Respuestas:
La instrucción SQL que encontrará las 20 ubicaciones más cercanas dentro de un radio de 30 millas a la coordenada 78.3232, 65.3234. Calcula la distancia en función de la latitud / longitud de esa fila y la latitud / longitud objetivo, y luego solicita solo filas donde el valor de la distancia es inferior a 30 millas, ordena la consulta completa por distancia y la limita a 20 resultados. Para buscar por kilómetros en lugar de millas, reemplace 3959 con 6371.
Esto está utilizando la API de Google Maps v3 con un servidor MySQL que ya tienes.
https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql
fuente
La respuesta de Mapperz no es válida. El seno debe calcularse a partir de la latitud y NO a partir de la longitud. Entonces, la declaración corect SQL es:
fuente
Puede ser base para crear una función ... para que pueda reutilizarla en otras áreas. También haría su consulta un poco más limpia ... Al menos eso son mis 2 centavos.
fuente
Aquí está mi variante de consulta, parece un poco más fácil ( http://dexxtr.com/post/83498801191/how-to-determine-point-inside-circle-using-mysql )
fuente