php geográficas - ¿Cómo encontrar la ubicación más cercana usando latitud y longitud desde la base de datos sql?




4 Answers

Encontrar lugares cercanos con MySQL

Aquí está la declaración de SQL que encontrará las 20 ubicaciones más cercanas que se encuentran dentro de un radio de 25 millas con la coordenada 37, -122. 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 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.

Estructura de la tabla:

id,name,address,lat,lng

NOTA - Aquí la latitud = 37 y la longitud = -122. Entonces solo pasa el tuyo.

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

Puede encontrar detalles here .

mapa como

Quiero encontrar una ubicación más cercana de la siguiente tabla de la base de datos

Address                            Latitude                longitude 

Kathmandu 44600, Nepal              27.7                   85.33333330000005
Los, Antoniterstraße                37.09024               -95.71289100000001
Sydney NSW, Australia               49.7480755             8.111794700000019
goa india                           15.2993265             74.12399600000003

He obtenido todos estos datos de los mapas de Google. Aquí tengo que encontrar la ubicación más cercana de un lugar. Supongamos que estoy en el lugar Surkhet, su latitud es 28.6 y la longitud es 81.6, ¿cómo puedo encontrar el lugar más cercano desde el lugar Surkhet?




Para encontrar la ubicación cercana, puede usar la clase Geocoder. Como tiene los Geopoints (latitud y longitud), se puede usar la geocodificación inversa. La geocodificación inversa es el proceso de transformar una coordenada (latitud, longitud) en una dirección (parcial). Mira this para más información.




sesach : ( 3959 * acos( cos( radians('.$_REQUEST['latitude'].') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('.$_REQUEST['longitude'].') ) + sin( radians('.$_REQUEST['latitude'].') ) * sin( radians( latitude ) ) ) ) <='.$_REQUEST['mile'];



SELECT latitude, longitude, SQRT(
    POW(69.1 * (latitude - [startlat]), 2) +
    POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 25 ORDER BY distance;

donde [starlat] y [startlng] es la posición donde comenzar a medir la distancia y 25 es la distancia en kms.

Se recomienda hacer un procedimiento almacenado para usar la consulta, ya que sería comprobar un montón de filas para encontrar el resultado.




Related

php mysql google-maps