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

Zostaw komentarz

XHTML: Możesz użyć następujących TAG'ów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  • RSS
  • Blip
  • Facebook
  • GoldenLine
  • LinkedIn
  • Last.fm