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:
- Creación de un localizador de tiendas con PHP, MySQL y Google Maps : consulte la sección "Cómo encontrar ubicaciones con MySQL"
- Búsqueda Geo / Espacial con MySQL
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.