saber obtener mis mapa longitud lector latitud google geográficas geograficas coordenadas con como buscar php mysql google-maps

php - obtener - mapa con coordenadas geográficas



¿Cómo encontrar la ubicación más cercana usando latitud y longitud desde la base de datos sql? (7)

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?


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;

Esta es la mejor consulta


Cuando el método debe funcionar, es mejor primero filtrar en latitud y longitud, y luego calcular la distancia cuadrada aproximativa. Para los países nórdicos, será alrededor del 0.3 por ciento de descuento dentro de los 1000 km.

Entonces, en lugar de calcular la distancia como:

dist_Sphere = r_earth * acos ( sin (lat1) * sin (lat2) + cos(lat1)*cos(lat2)*cos(lon 2 - lon 1)

uno puede calcular el valor aproximado (suponiendo que lat = lat 1 está cerca de lat 2) como

const cLat2 = cos lat ^ 2 const r_earth2 = r_earth ^ 2 dist_App ^2 = r_earth2 * ((lat 2 - lat 1) ^2 + clat2 *(lon 2 - lon 1) ^2)

Ordene por Dist_App 2, y luego simplemente tome la raíz cuadrada del resultado.


El SQL tiene un problema. En la tabla como:

`ubicacion` ( `id_ubicacion` INT(10) NOT NULL AUTO_INCREMENT , `latitud` DOUBLE NOT NULL , `longitud` DOUBLE NOT NULL , PRIMARY KEY (`id_ubicacion`) )

La id_ubicacion cambia cuando se usa:

SELECT `id_ubicacion` , ( 3959 * ACOS( COS( RADIANS( 9.053933 ) ) * COS( RADIANS( latitud ) ) * COS( RADIANS( longitud ) - RADIANS( - 79.421215 ) ) + SIN( RADIANS( 9.053933 ) ) * SIN( RADIANS( latitud ) ) ) ) AS distance FROM ubicacion HAVING distance <25 ORDER BY distance LIMIT 0 , 20


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.


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 .


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.


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''];