Wyszukiwanie po Latitude i Longitude
Kilka dni temu mieliśmy drobny problem z wykonaniem części wyszukiwarki, która według kodu pocztowego (punkt startowy) wyciągałaby z bazy rekordy firm znajdujących się w promieniu x kilometrów, coś jak na Allegro
.
Rozwiązanie dość proste, na podstawie kodu pocztowego dzięki API Google Maps możemy wyliczyć Latitude (szerokość geograficzna) i Longitude (długość geograficzna), teraz posiadamy już dane punktu startowego
. Problemem pozostaje zapytanie do bazy, które wyliczy promień i wyciągnie interesujące nas rekordy mieszczące się w promieniu, w tym przypadku wyglądało tak:
1 | SELECT * (6371*acos(cos(radians(%f))*cos(radians(latitude))*cos(radians(longitude)-radians(%f))+sin(radians(%f))*sin(radians(latitude)))) AS distance FROM gmapimarkers HAVING distance < %f ORDER BY distance ASC LIMIT 0,%d;",$lat,$lng,$lat,$rad,$quantity |

