puntos lugares longitud latitud guardar google geograficos geograficas entre encontrar ejemplos distancia coordenadas con cercanos calcular mysql geolocation geospatial geo

lugares - guardar coordenadas google maps en mysql



Consultando dentro de longitud y latitud en MySQL (2)

Antes de solicitar ejemplos de códigos específicos, solo quería preguntar si es posible realizar una consulta similar a este pseudo código:

seleccione elementos de la tabla donde lat / lon = -en x millas de un determinado punto lat / lon-

¿Es eso factible? ¿O tengo que saltar a través de algunos aros? ¡Cualquier buen enfoque que pueda recomendarse sería genial!


Debería buscar la fórmula de Haversine, pero un buen comienzo podría ser:

Citando desde la primera url:

Aquí está la declaración SQL que encontrará las 20 ubicaciones más cercanas que están dentro de un radio de 25 millas a la coordenada 37, -122. Calcula la distancia en función de la latitud / longitud de esa fila y la latitud / longitud de destino, y luego solicita solo filas donde el valor de la distancia es menor a 25, 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.

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;


Recomendaría encarecidamente utilizar SpatiaLite o PostGIS para este tipo de operación. Han incorporado el tipo de funciones que intentas escribir a mano. También tienen soporte adecuado para datos espaciales que no existen realmente en MySQL.

No es exactamente una solución en MySQL, pero es una mejor solución si desea seguir haciendo solicitudes espaciales en el futuro.