2012-10-18 10 views
5

Jestem nowicjuszem w mapach Google. Mam tabelę, w której znajduje się lista wszystkich lokalizacji (lokalizacja super sklepów) z ich szerokości i długości geograficznej.Pobierz szerokość i długość geograficzną wszystkich lokalizacji, które znajdują się w promieniu 10 km od mojej bieżącej lokalizacji za pomocą mapy google (przy użyciu PHP)

Teraz chcę poznać wszystkie możliwe lokalizacje (może b szerokość i długość geograficzna) tych super sklepów, które są w promieniu 10 km od mojej bieżącej lokalizacji.

Nie mam pojęcia, jak to zrobić, używając mapy Google (w kodzie php). Jakiego interfejsu API mapy Google powinienem używać? Wszelkie sugestie, kod projektu, informacje będą pomocne dla mnie

Dzięki z gory

+1

Niektóre próbki kodu? Co próbujesz? – transilvlad

+0

@tntu dzięki za odpowiedź .. praktycznie nie mam pojęcia, od czego zacząć, co powinienem użyć. nic nie próbowałem. –

+0

Przynajmniej podaj więcej informacji o tym, jak twój system musi działać. W PHP cau nie może wchodzić w interakcje z api map, chyba że użyjesz kodu javascript do przekazania danych do php. – transilvlad

Odpowiedz

6

https://developers.google.com/maps/articles/phpsqlsearch_v3 Wystarczy popatrzeć na góry. Powinien dać ci dobry pomysł.

Aby znaleźć miejsca w tabeli markerów, które są w pewnej odległości promienia danej szerokości/długości, można użyć SELECT oświadczenie w oparciu o formułę Haversine. Formuła Haversine'a to , używana ogólnie do obliczania odległości między dwoma parami, rzędu współrzędnych na kuli. Dogłębne wyjaśnienie matematyczne to podane przez Wikipedię i dobre omówienie formuły związanej z programowaniem na stronie Movable Type.

Oto instrukcja SQL, która znajdzie najbliższe 20 lokalizacji, które znajdują się w promieniu 25 mil do współrzędnej 37, -122. To oblicza odległość na podstawie szerokości/długości geograficznej tego rzędu i docelowej szerokości/długości geograficznej, a następnie prosi o podanie tylko tych wierszy, w których wartość odległości jest mniejsza niż 25, zamawia całe zapytanie przez odległość i ogranicza je do 20 wyników. Aby wyszukać według kilometrów zamiast mil zastąpić 3959 z 6371.

+0

Gdzie jest to polecenie SQL? – Faizan

+0

Sprawdź w temacie "Znajdowanie lokalizacji za pomocą MySQL" – xelber

6

można użyć następującej kwerendy MySQL, aby wszystkie sklepy w określonych mil

select * from stores where lat!='' and lng!='' and (3959 * acos(cos(radians(" . $centerpoints['lat'] . ")) * cos(radians(lat)) * cos(radians(lng) - radians(" . $centerpoints['lng'] . ")) + sin(radians(" . $centerpoints['lat'] . ")) * sin(radians(lat)))) < " . $distanceInMile 
+0

Jak obliczyć $ centerpoints ['lng'] i $ centerpoints ['lat']? – AlanP

+0

Co właściwie oznacza 3959 w zapytaniu? –

Powiązane problemy