Termin geokodowanie ogólnie odnosi się do przekształcania adresu zrozumiałego dla człowieka na lokalizację na mapie. Proces odwrotny, czyli przekształcanie lokalizacji na mapie w adres zrozumiały dla człowieka, nazywa się odwrotnym geokodowaniem.
Żądania odwrotnego geokodowania
Wymagane parametry
latlng– współrzędne szerokości i długości geograficznej określające lokalizację, dla której chcesz uzyskać najbliższy adres zrozumiały dla człowieka.key– klucz interfejsu API aplikacji. Ten klucz identyfikuje Twoją aplikację na potrzeby zarządzania limitami. Dowiedz się, jak uzyskać klucz.
Parametry opcjonalne
Oto opcjonalne parametry, które możesz uwzględnić w żądaniu odwrotnego geokodowania:
language– język, w którym mają być zwracane wyniki.- Zobacz listę obsługiwanych języków. Google często aktualizuje obsługiwane języki, więc ta lista może nie być wyczerpująca.
- Jeśli nie podasz parametru
language, geokoder spróbuje użyć preferowanego języka określonego w nagłówkuAccept-Languagelub języka ojczystego domeny, z której wysłano żądanie. - Geokoder stara się podać adres, który jest czytelny zarówno dla użytkownika, jak i dla mieszkańców. Aby osiągnąć ten cel, zwraca adresy pocztowe w języku lokalnym, w razie potrzeby transliterowane na pismo czytelne dla użytkownika, z uwzględnieniem preferowanego języka. Wszystkie pozostałe adresy są zwracane w preferowanym języku. Wszystkie komponenty adresu są zwracane w tym samym języku, który jest wybierany z pierwszego komponentu.
- Jeśli nazwa nie jest dostępna w preferowanym języku, geokoder używa najbliższego dopasowania.
region– kod regionu określony jako dwuznakowa wartość ccTLD („domena najwyższego poziomu”). Parametr może też wpływać na wyniki zgodnie z obowiązującymi przepisami.result_type– filtr obejmujący co najmniej 1 typ adresu, rozdzielone znakiem pionowej kreski (|). Jeśli parametr zawiera kilka typów adresów, interfejs API zwraca wszystkie adresy, które pasują do dowolnego z tych typów. Uwaga dotycząca przetwarzania: parametrresult_typenie ogranicza wyszukiwania do określonych typów adresów. Parametrresult_typedziała raczej jako filtr po wyszukiwaniu: interfejs API pobiera wszystkie wyniki dla określonego parametrulatlng, a następnie odrzuca te, które nie pasują do określonych typów adresów. Obsługiwane są te wartości:Typy adresów i typów komponentów adresów
Tablica
typesw treściGeocodeResultw odpowiedzi wskazuje typ adresu. Przykłady typów adresów: adres pocztowy, kraj lub podmiot polityczny. Tablicatypesw poluAddressComponentsobiektuGeocodeResultwskazuje typ każdej części adresu. Przykłady: numer domu lub kraj.Adresy mogą mieć wiele typów. Typy można traktować jako „tagi”. Na przykład wiele miast jest oznaczonych typami
politicalilocality.Obsługiwane są te typy, które są zwracane zarówno w tablicach typów adresów, jak i tablicach typów komponentów adresów:
Typ adresu Opis street_addressdokładny adres, routenazwana trasa (np. „US 101”). intersectionGłówne skrzyżowanie, zwykle 2 głównych dróg. politicalPodmiot polityczny. Zwykle ten typ wskazuje wielokąt jakiejś administracji cywilnej. countryNarodowy podmiot polityczny, zwykle najwyższy poziom zwracany przez geokoder. administrative_area_level_1Jednostka administracyjna pierwszego rzędu poniżej poziomu kraju. W Stanach Zjednoczonych są to stany. Nie wszystkie kraje używają tych poziomów administracyjnych. W większości przypadków krótkie nazwy administrative_area_level_1będą ściśle odpowiadać podregionom ISO 3166-2 i innym powszechnie używanym listom. Nie możemy jednak tego zagwarantować, ponieważ nasze wyniki geokodowania są oparte na różnych sygnałach i danych o lokalizacji.administrative_area_level_2Jednostka administracyjna drugiego rzędu poniżej poziomu kraju. W Stanach Zjednoczonych są to hrabstwa. Nie wszystkie kraje używają tych poziomów administracyjnych. administrative_area_level_3Jednostka administracyjna trzeciego rzędu poniżej poziomu kraju. Ten typ wskazuje mniejszą jednostkę administracyjną. Nie wszystkie kraje używają tych poziomów administracyjnych. administrative_area_level_4Jednostka administracyjna czwartego rzędu poniżej poziomu kraju. Ten typ wskazuje mniejszą jednostkę administracyjną. Nie wszystkie kraje używają tych poziomów administracyjnych. administrative_area_level_5Jednostka administracyjna piątego rzędu poniżej poziomu kraju. Ten typ wskazuje mniejszą jednostkę administracyjną. Nie wszystkie kraje używają tych poziomów administracyjnych. administrative_area_level_6Jednostka administracyjna 6 rzędu poniżej poziomu kraju. Ten typ wskazuje mniejszą jednostkę administracyjną. Nie wszystkie kraje używają tych poziomów administracyjnych. administrative_area_level_7Jednostka administracyjna 7 rzędu poniżej poziomu kraju. Ten typ wskazuje mniejszą jednostkę administracyjną. Nie wszystkie kraje używają tych poziomów administracyjnych. colloquial_areaPowszechnie używana alternatywna nazwa podmiotu. localitypodmiot polityczny miasta lub miejscowości; sublocalityJednostka administracyjna pierwszego rzędu poniżej poziomu miejscowości. W przypadku niektórych lokalizacji możesz otrzymać jeden z dodatkowych typów: od sublocality_level_1dosublocality_level_5. Każdy poziom dzielnicy jest jednostką administracyjną. Im większa liczba, tym mniejszy obszar geograficzny.neighborhoodnazwana okolica, premiseNazwana lokalizacja, zwykle budynek lub zespół budynków o wspólnej nazwie. subpremiseElement podlegający adresowaniu poniżej poziomu budynku, np. mieszkanie, lokal lub apartament. plus_codeZakodowane odniesienie do lokalizacji, uzyskane na podstawie szerokości i długości geograficznej. Plus codes mogą zastępować adresy ulic tam, gdzie ich nie ma (gdzie budynki nie są ponumerowane lub ulice nie mają nazw). Więcej informacji znajdziesz na stronie https://plus.codes. postal_codeKod pocztowy używany do adresowania przesyłek pocztowych na terenie danego kraju. natural_featureWyrazisty obiekt naturalny. airportLotnisko. parkpark z nazwą, point_of_interestnazwane ciekawe miejsce, Zwykle są to znane lokalne obiekty, które nie pasują do żadnej innej kategorii, np. „Pałac Kultury i Nauki” czy „Wieża Eiffla”. Pusta lista typów oznacza, że nie ma znanych typów dla danego komponentu adresu (np. Lieu-dit we Francji).
location_type– filtr obejmujący co najmniej 1 typ lokalizacji, rozdzielone znakiem pionowej kreski (|). Jeśli parametr zawiera wiele typów lokalizacji, interfejs API zwraca wszystkie adresy, które pasują do dowolnego z tych typów. Uwaga dotycząca przetwarzania: parametrlocation_typenie ogranicza wyszukiwania do określonych typów lokalizacji. Zamiast tegolocation_typedziała jako filtr po wyszukiwaniu: interfejs API pobiera wszystkie wyniki dla określonegolatlng, a następnie odrzuca te, które nie pasują do określonych typów lokalizacji. Obsługiwane są te wartości:"ROOFTOP"zwraca tylko adresy, dla których Google ma informacje o lokalizacji z dokładnością do adresu ulicy."RANGE_INTERPOLATED"zwraca tylko adresy, które odzwierciedlają przybliżoną lokalizację (zwykle na drodze) interpolowaną między 2 dokładnymi punktami (np. skrzyżowaniami). Zakres interpolowany zwykle oznacza, że kody geograficzne dachu są niedostępne dla adresu."GEOMETRIC_CENTER"zwraca tylko geometryczne środki lokalizacji, takie jak linia łamana (np. ulica) lub wielokąt (region)."APPROXIMATE"zwraca tylko adresy, które są oznaczone jako przybliżone.
extra_computations– użyj tego parametru, aby określić w odpowiedzi te dodatkowe funkcje:ADDRESS_DESCRIPTORS– więcej informacji znajdziesz w artykule o deskryptorach adresów.BUILDING_AND_ENTRANCES– więcej informacji znajdziesz w sekcji Wejścia i kontury budynków.
extra_computationsdla każdej funkcji, na przykład:extra_computations=ADDRESS_DESCRIPTORS&extra_computations=BUILDING_AND_ENTRANCES
Jeśli występują oba filtry (result_type i location_type), interfejs API zwraca tylko te wyniki, które pasują do wartości result_type i location_type. Jeśli żadna z wartości filtra nie jest akceptowalna, interfejs API zwraca błąd ZERO_RESULTS.
Przykład odwrotnego geokodowania
To zapytanie zawiera wartość szerokości i długości geograficznej lokalizacji na Brooklynie:
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY
Powyższe zapytanie zwraca ten wynik:
{
"results" : [
{
"address_components" : [
{
"long_name" : "277",
"short_name" : "277",
"types" : [ "street_number" ]
},
{
"long_name" : "Bedford Avenue",
"short_name" : "Bedford Ave",
"types" : [ "route" ]
},
{
"long_name" : "Williamsburg",
"short_name" : "Williamsburg",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Brooklyn",
"short_name" : "Brooklyn",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Kings",
"short_name" : "Kings",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "New York",
"short_name" : "NY",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "11211",
"short_name" : "11211",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
"geometry" : {
"location" : {
"lat" : 40.714232,
"lng" : -73.9612889
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 40.7155809802915,
"lng" : -73.9599399197085
},
"southwest" : {
"lat" : 40.7128830197085,
"lng" : -73.96263788029151
}
}
},
"place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
"types" : [ "street_address" ]
},
... Additional <code>results[]</code> ...
Zwróć uwagę, że odwrotne geokodowanie zwróciło więcej niż 1 wynik. Wyniki "formatted_address" to nie tylko adresy pocztowe, ale też dowolne nazwy geograficzne lokalizacji. Na przykład podczas geokodowania punktu w Chicago może on zostać oznaczony jako adres, miasto (Chicago), stan (Illinois) lub kraj (Stany Zjednoczone). Wszystkie te elementy są „adresami” dla geokodera. Odwrotny geokoder zwraca dowolny z tych typów jako prawidłowe wyniki.
Odwrotne geokodowanie dopasowuje jednostki polityczne (kraje, prowincje, miasta i dzielnice), adresy i kody pocztowe.
Poniżej znajdziesz pełną listę wartości formatted_address zwróconych przez poprzednie zapytanie.
{
"plus_code" : {
"compound_code" : "P27Q+MCM New York, NY, USA",
"global_code" : "87G8P27Q+MCM"
},
"results" : [
{
"formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "street_address" ]
},
{
"formatted_address" : "279 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "premise" ]
},
{
"formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "establishment", "point_of_interest" ]
},
{
"formatted_address" : "291-275 Bedford Ave, Brooklyn, NY 11211, USA",
...
"types" : [ "route" ]
},
{
"formatted_address" : "P27Q+MC New York, NY, USA",
...
"types" : [ "plus_code" ]
},
{
"formatted_address" : "South Williamsburg, Brooklyn, NY, USA",
...
"types" : [ "neighborhood", "political" ]
},
{
"formatted_address" : "Brooklyn, NY 11211, USA",
...
"types" : [ "postal_code" ]
},
{
"formatted_address" : "Williamsburg, Brooklyn, NY, USA",
...
"types" : [ "neighborhood", "political" ]
},
{
"formatted_address" : "Kings County, Brooklyn, NY, USA",
...
"types" : [ "administrative_area_level_2", "political" ]
},
{
"formatted_address" : "Brooklyn, NY, USA",
...
"types" : [ "political", "sublocality", "sublocality_level_1" ]
},
{
"formatted_address" : "New York, NY, USA",
...
"types" : [ "locality", "political" ]
},
{
"formatted_address" : "New York, USA",
...
"types" : [ "administrative_area_level_1", "political" ]
},
{
"formatted_address" : "United States",
...
"types" : [ "country", "political" ]
}
],
"status" : "OK"
}
Ten interfejs API zwraca różne typy adresów, od najbardziej szczegółowych adresów ulic po mniej szczegółowe jednostki polityczne, takie jak dzielnice, miasta, hrabstwa i stany. Dokładniejszy adres jest zwykle najbardziej widocznym wynikiem, tak jak w tym przypadku. Jeśli chcesz dopasować konkretny typ adresu, zapoznaj się z sekcją poniżej dotyczącą ograniczania wyników według typu. Z tego powodu lokalizacja wyników względem siebie może się różnić.
Odwrotne geokodowanie filtrowane według typu
W tym przykładzie zwracane adresy są filtrowane tak, aby uwzględniać tylko te, które mają typ lokalizacji ROOFTOP i typ adresu street_address.
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452
&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY
Uwaga: te filtry są prawidłowe tylko w przypadku odwrotnego geokodowania.
Odpowiedzi odwrotnego geokodowania
Format odpowiedzi odwrotnego geokodowania jest taki sam jak format odpowiedzi geokodowania. Zobacz Odpowiedzi geokodowania. Poniżej znajdziesz kody stanu, które mogą pojawić się w odpowiedzi na odwrotne geokodowanie.
Kody stanu odwrotnego geokodowania
Pole "status" w obiekcie odpowiedzi geokodowania zawiera stan żądania i może zawierać informacje na potrzeby debugowania, które pomogą Ci ustalić, dlaczego odwrotne geokodowanie nie działa. Pole "status" może zawierać te wartości:
"OK"wskazuje, że nie wystąpiły żadne błędy i został zwrócony co najmniej 1 adres."ZERO_RESULTS"wskazuje, że odwrotne geokodowanie zakończyło się powodzeniem, ale nie zwróciło żadnych wyników. Może się tak zdarzyć, jeśli do geokodera przekazanolatlngw odległej lokalizacji."OVER_QUERY_LIMIT"oznacza, że przekroczono limit."REQUEST_DENIED"oznacza, że prośba została odrzucona. Możliwe, że żądanie zawiera parametrresult_typelublocation_type, ale nie zawiera klucza interfejsu API."INVALID_REQUEST"zwykle oznacza jedną z tych sytuacji:- Brakuje zapytania (
address,componentslublatlng). - Podano nieprawidłowy parametr
result_typelublocation_type.
- Brakuje zapytania (
"UNKNOWN_ERROR"oznacza, że nie udało się przetworzyć żądania z powodu błędu serwera. Jeśli spróbujesz ponownie, żądanie może się powieść.
Odwrotne geokodowanie kodów Plus Code
Pole plus_code w odpowiedzi geokodowania zawiera kod Plus Code, który najlepiej przybliża zapytanie o szerokość i długość geograficzną.
Dodatkowo tablica wyników JSON w większości przypadków zawiera pełny wynik geokodowania z typem plus_code i adresem zawierającym plus code. Odległość między zdekodowanym kodem Plus Code a punktem żądania nie przekracza 10 metrów.