Potrzebuję listy krajów, stanów i miast na podstawie zbioru wartości szerokości / długości geograficznej, które posiadam. Muszę przechowywać te informacje w sposób zapewniający zachowanie hierarchii i bez duplikatów (np. „USA” i „Stany Zjednoczone” i „Stany Zjednoczone” to ten sam kraj; chcę, aby w mojej bazie danych znajdowało się tylko jedno wystąpienie tego kraju) .
Czy można to zrobić za pomocą Google Map API?
google-maps
geolocation
google-maps-api-3
geocoding
StackOverflowNewbie
źródło
źródło
Odpowiedzi:
To, czego szukasz, nazywa się odwrotnym geokodowaniem . Google zapewnia usługę odwrotnego geokodowania po stronie serwera za pośrednictwem interfejsu API Google Geocoding , którego możesz użyć w swoim projekcie.
Tak wyglądałaby odpowiedź na następujące zapytanie:
Odpowiedź:
Możesz również zdecydować się na otrzymywanie odpowiedzi w formacie xml zamiast json, po prostu zastępując json zamiast xml w identyfikatorze URI żądania:
O ile mi wiadomo, Google zwraca tę samą nazwę również do składników adresu, zwłaszcza w przypadku nazw wysokiego poziomu, takich jak nazwy krajów i miast. Niemniej jednak należy pamiętać, że chociaż wyniki są bardzo dokładne w przypadku większości aplikacji, nadal można znaleźć sporadyczny błąd w pisowni lub niejednoznaczny wynik.
źródło
sensor=false
zrobić?Masz tutaj podstawową odpowiedź: Uzyskaj nazwę miasta za pomocą geolokalizacji
Ale jeśli szukasz tego, czego szukasz, polecam ten sposób.
Tylko jeśli potrzebujesz również Administrative_area_level_1 do przechowywania różnych rzeczy dla Paryża, Teksasu, Stanów Zjednoczonych i Paryża, Ile-de-France we Francji i zapewnienia ręcznej rezerwy:
-
Michał ma problem z tym, że bierze pierwszy wynik, a nie konkretny. Wykorzystuje wyniki [0]. Uważam za stosowne (właśnie zmodyfikowałem jego kod), aby wziąć TYLKO wynik, którego typem jest „lokalizacja”, która jest zawsze obecna, nawet w przypadku ewentualnego ręcznego wycofania, na wypadek gdyby przeglądarka nie obsługiwała geolokalizacji.
Jego sposób: pobrane wyniki różnią się od użycia http://maps.googleapis.com/maps/api/geocode/json?address=bucharest&sensor=false niż użycia http://maps.googleapis.com/maps/api/geocode /json?latlng=44.42514,26.10540&sensor=false (wyszukiwanie według nazwy / wyszukiwanie według lat i lng)
W ten sposób: te same pobrane wyniki.
źródło
Użyłem tego pytania jako punktu wyjścia do własnego rozwiązania. Pomyślałem, że należy oddać mój kod, ponieważ jest mniejszy niż kod tabacitu
Zależności:
Kod:
źródło
Uważam, że javascript GeoCodera jest trochę błędne, kiedy umieściłem go w moich plikach jsp.
Możesz też spróbować tego:
źródło
$.get(url).success(function(data)
na$.get(url, function(data)
i działa dobrzeNapisałem tę funkcję, która wyodrębnia to, czego szukasz, na podstawie
address_components
zwróconych z API gmaps. To jest miasto (na przykład).Zmień
locality
naadministrative_area_level_1
dla stanu itp.W moim kodzie js używam tak:
Wróci:
Waltham, MA
źródło
Po prostu wypróbuj ten kod, który działa ze mną
źródło
Stworzyłem małą funkcję mapera:
To rozwiązanie dla Angular 4, ale myślę, że wpadniesz na pomysł.
Stosowanie:
W ten sposób
address
obiekt będzie wyglądał mniej więcej tak:Mam nadzieję, że to pomoże!
źródło
źródło
@ Szkíta Miałem świetne rozwiązanie, tworząc funkcję, która pobiera części adresu z nazwanej tablicy. Oto skompilowane rozwiązanie dla tych, którzy chcą używać zwykłego JavaScript.
Funkcja do konwersji wyników na nazwaną tablicę:
Geokoduj wartości LAT / LNG:
źródło