Debe 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 'Búsqueda de ubicaciones con MySQL'
- Búsqueda geográfica/espacial con MySQL
Citando desde la primera URL:
Esta es la instrucción SQL que encontrará las 20 ubicaciones más cercanas que se encuentran 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 las filas donde el valor de distancia es inferior a 25, ordena toda la consulta 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;