Cita:
Originalmente Escrito por superroko2
2.2) Como puedo obtener esas cuatro localizaciones más cercanas? He hecho consultas básicas en SQL con una o varias tablas, y cosillas del estilo (UPDATE, SELECT, DELETE, etc), pero para encontrar las cuatro localizaciones más cercanas en una BD que puede tener 1000 o 10000 localizaciones, como podría conseguirlo?
|
Si tienes latitud y longitud (en 1E6, como le gusta a Google):
$query = "SELECT *, ((ACOS(SIN(($lat / 1000000) * PI() / 180) * SIN((location_lat / 1000000) * PI() / 180) + COS(($lat / 1000000) * PI() / 180) * COS((location_lat / 1000000) * PI() / 180) * COS((($lon / 1000000) - (location_lon / 1000000)) * PI() / 180)) * 180 / PI()) * 60 * 1.853159616) AS `distance` FROM `tabla` ORDER BY `distance` ASC LIMIT 4";