Omówienie
Geokodowanie to proces konwertowania adresów (np. „1600 Amphitheatre Parkway, Mountain View, CA”). (takie jak szerokość geograficzna 37,423021 i długość geograficzna -122,083739), których można użyć do znaczniki miejsc lub położenie mapy.
Odwrotne geokodowanie to proces konwersji danych geograficznych. za pomocą współrzędnych w postaci zrozumiałego dla człowieka adresu (zobacz Odwrotne geokodowanie (wyszukiwanie adresu)).
Możesz też użyć geokodera, aby znaleźć adres podany identyfikator miejsca.
Interfejs Maps JavaScript API zapewnia klasa geokodera dla: geokodowanie i odwrotne geokodowanie na podstawie danych wejściowych użytkownika. Jeśli zamiast tego Jeśli chcesz geokodować statyczne, znane adresy, wyświetl Usługa sieciowa Geokodowanie.
Pierwsze kroki
Zanim użyjesz usługi Geocoding w interfejsie Maps JavaScript API, upewnij się, że interfejs Geocoding API jest włączony w konsoli Google Cloud, projektu skonfigurowanego na potrzeby Maps JavaScript API.
Aby wyświetlić listę włączonych interfejsów API:
- Przejdź do Konsola Google Cloud.
- Kliknij przycisk Wybierz projekt, a potem wybierz ten sam skonfigurowany projekt. Maps JavaScript API i kliknij Otwórz.
- Na liście interfejsów API w panelu znajdź Geocoding API
- Jeśli interfejs API jest widoczny na liście, nie musisz nic robić. Jeśli interfejsu API nie ma na liście,
włącz:
- U góry strony wybierz WŁĄCZ API, aby wyświetlić Biblioteka. Możesz też w menu po lewej stronie wybierz opcję Biblioteka.
- Wyszukaj Geocoding API, a potem wybierz go w listę wyników.
- Kliknij WŁĄCZ. Gdy proces się zakończy, Geocoding API pojawi się na liście interfejsów API w Panel.
Ceny i zasady
Ceny
16 lipca 2018 r. wszedł w życie nowy abonament z płatnością według wykorzystania dla Map, tras i miejsc. Aby dowiedzieć się więcej o nowych cenach i wykorzystaniu jak i wielu innych zastosowań usługi geokodowania JavaScript, zapoznaj się z Korzystanie i rozliczenia dla interfejsu Geocoding API.
Zasady
Korzystanie z usługi Geocoding musi być zgodne z opisanych zasad dla interfejsu Geocoding API.
Żądania geokodowania
Dostęp do usługi Geocoding jest asynchroniczny, ponieważ interfejs API Map Google musi nawiązać połączenie z serwerem zewnętrznym. Dlatego musisz zdać metodę wywołania zwrotnego, która ma być wykonywana po zakończeniu żądania. Ten metoda wywołania zwrotnego przetwarza wyniki. Pamiętaj, że geokoder może zwrócić więcej niż jeden wynik.
Dostęp do usługi geokodowania interfejsu API Map Google uzyskuje się w kodzie za pomocą
Obiekt konstruktora google.maps.Geocoder
.
Metoda Geocoder.geocode()
inicjuje żądanie do geokodowania
usługi, przekazując go do literału obiektu GeocoderRequest
zawierającego
warunki wejściowe i metodę wywołania zwrotnego, która ma być wykonywana po otrzymaniu odpowiedzi.
Literał obiektu GeocoderRequest
zawiera te pola:
{ address: string, location: LatLng, placeId: string, bounds: LatLngBounds, componentRestrictions: GeocoderComponentRestrictions, region: string }
Wymagane parametry: należy podać tylko jeden parametr tych polach:
address
– adres, którego dane geograficzne chcesz przetworzyć na dane geograficzne.
lub
location
–LatLng
(lubLatLngLiteral
), dla której chcesz uzyskać najbliższy, łatwy do odczytania przez człowieka. Geokoder wykonuje odwrotny geokod. Zobacz Odwrotne geokodowanie.
lub
placeId
– identyfikator wybranego miejsca w celu uzyskania najbliższego, zrozumiałego dla człowieka adresu. Więcej informacji: pobierania adresu dla identyfikatora miejsca.
Parametry opcjonalne:
bounds
–LatLngBounds
w ramach których można bardziej eksponować wyniki geokodowania. Parametrbounds
będzie wpływać tylko na wyniki generowane przez geokoder, a nie w pełni je ograniczyć. Zobacz więcej informacji o promowanie widocznego obszaru poniżej.componentRestrictions
– służy do ograniczenia wyników do konkretne obszary. Zobacz więcej informacji: filtrowania komponentów poniżej.region
– kod regionu określony jako określona jako dwuznakowy (nienumeryczny) podtag regionu Unicode. Najwięcej te tagi są mapowane bezpośrednio na znajomą domenę ccTLD („domenę najwyższego poziomu”) dwuznakowych. Parametrregion
będzie miał wpływ tylko na: nie są w pełni ograniczone, wyniki z geokodera. Zobacz więcej informacji: promowanie kodu regionu poniżej.extraComputations
– jedyna dozwolona wartość w przypadku tego parametru. ma wartośćADDRESS_DESCRIPTORS
. Zobacz deskryptory adresów.fulfillOnZeroResults
– spełnij obietnicę stanu ZERO_RESULT w . Może to być pożądane, ponieważ nawet przy braku wyników geokodowania reklamy mogą być nadal zwracanych dodatkowych pól poziomu odpowiedzi. Zobacz Zadbaj o to, by nie przekraczała wartości zerowej, aby dowiedzieć się więcej.
Odpowiedzi związane z kodowaniem geograficznym
Usługa Geocoding wymaga metody wywołania zwrotnego do wykonania po pobraniu
z wyników geokodera. To wywołanie zwrotne powinno przekazywać 2 parametry do wstrzymania
results
i status
(w tej kolejności).
Wyniki kodowania geograficznego
Obiekt GeocoderResult
reprezentuje jeden
wynik geokodowania. Żądanie geokodu może zwrócić wiele obiektów wyników:
results[]: { types[]: string, formatted_address: string, address_components[]: { short_name: string, long_name: string, postcode_localities[]: string, types[]: string }, partial_match: boolean, place_id: string, postcode_localities[]: string, geometry: { location: LatLng, location_type: GeocoderLocationType viewport: LatLngBounds, bounds: LatLngBounds } }
Poniżej objaśniono te pola:
types[]
to tablica wskazująca typ adresu uzyskany wynik. Ta tablica zawiera zestaw zero lub więcej tagów określając typ cechy zwróconej w wyniku. Na przykład plik Geokod „Chicago” zwraca „locality” który wskazuje, że „Warszawa” jest City i zwraca wartość „political” (polityczny) co wskazuje, że jest to kampania polityczna, podmiotu zabezpieczeń. Zobacz więcej informacji: komponent typów adresów i adresów poniżej.formatted_address
to ciąg znaków zawierający zrozumiały dla człowieka tej lokalizacji.Adres ten jest często odpowiednikiem adresu pocztowego. Pamiętaj, że niektóre takich jak Wielka Brytania, nie zezwalają na dystrybucję prawdziwego adresów pocztowych ze względu na ograniczenia licencyjne.
Sformatowany adres składa się logicznie z jednego lub wielu adresów . Na przykład adres „ul. Polna 13, Warszawa” składa się z następujących komponentów: „111” (numer domu), „Ósma Aleja” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).
Nie analizuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych składników adresu, które zawiera odpowiedź interfejsu API do sformatowanego pola adresu.
address_components[]
to tablica zawierająca oddzielne dotyczące tego adresu.Każdy komponent adresu zawiera zwykle te pola:
types[]
to tablica wskazująca typ adresu. Zobacz listę obsługiwanych typów.long_name
to pełny opis lub nazwa elementu komponentem adresowym zwracanym przez Geocoder.short_name
to skrócona nazwa tekstowa adresu jeśli jest dostępny. Na przykład składnik adresu dla stanu obszaru Alaski może miećlong_name
o wartości „Alaska” ishort_name
pozycji „Akademia” za pomocą dwuliterowego skrótu pocztowego.
Zwróć uwagę na te informacje na temat:
address_components[]
tablica:- Tablica komponentów adresu może zawierać więcej komponentów niż
formatted_address
- Tablica nie musi obejmować wszystkich podmiotów politycznych, które
zawierają adres, oprócz tych zawartych w tagu
formatted_address
Aby pobrać wszystkie jednostki polityczne zawierających konkretny adres, należy zastosować odwrotne geokodowanie, przesyłając szerokość i długość geograficzną adresu jako parametr żądania. - Nie ma gwarancji, że format odpowiedzi będzie taki sam
żądań. W szczególności chodzi o liczbę
address_components
zmienia się w zależności od żądanego adresu i może się zmieniać pod tym samym adresem. Komponent może zmienić pozycję w tablicy. Typ komponentu może się zmienić. Konkretnym komponentem może być których brakuje w późniejszej odpowiedzi.
Zobacz więcej informacji: komponent typów adresów i adresów poniżej.
-
partial_match
oznacza, że geokoder nie zwrócił kodu. dokładne dopasowanie do pierwotnego żądania, chociaż udało mu się dopasować część w żądanym adresie. Możesz sprawdzić pierwotną prośbę pod kątem błędów ortograficznych i/lub jest niepełny adres.Dopasowania częściowe najczęściej pojawiają się w przypadku adresów, które nie istnieją na obszarze objętym zgłoszeniem. Częściowe dopasowania mogą również zostać zwracany, gdy żądanie pasuje do co najmniej 2 lokalizacji w tej samej miejscowości. Na przykład „Hillpar St, Bristol, UK” zwróci częściowe dopasowanie dla obu Henry Street i Henrietta Street. Pamiętaj, że jeśli żądanie zawiera parametr błędnie zapisany adres, usługa geokodowania może zaproponować alternatywę adresu. Sugestie wywołane w ten sposób zostaną również oznaczone jako częściowe dopasowania.
place_id
to unikalny identyfikator miejsca, którego można użyć z innymi interfejsami API Google. Na przykład możesz użyć atrybutuplace_id
za pomocą Miejsc Google API, aby uzyskać szczegółowe informacje o lokalnej firmie, takie jak numer telefonu, godzin otwarcia, opinii użytkowników itp. Zobacz omówienie identyfikatora miejsca.postcode_localities[]
to tablica oznaczająca wszystkie miejscowości zawarte w kodzie pocztowym i występują tylko wtedy, gdy wynikiem jest kod pocztowy. który zawiera wiele lokalizacji.geometry
zawiera te informacje:location
zawiera Geokodowaną wartość szerokości i długości geograficznej. Pamiętaj, że zwracamy tę lokalizację jako obiektLatLng
, a nie jako sformatowany ciąg znaków.location_type
przechowuje dodatkowe dane na temat określonego lokalizacji. Obecnie obsługiwane są te wartości:ROOFTOP
oznacza że zwrócony wynik odzwierciedla dokładny geokod.RANGE_INTERPOLATED
wskazuje, że zwrócony wynik odzwierciedla przybliżony (zwykle na drodze) interpolowane między dwoma dokładnymi punktami (np. w postaci skrzyżowań). Wyniki interpolowane są zazwyczaj zwracane, gdy: Geokody dachów są niedostępne dla adresu.GEOMETRIC_CENTER
wskazuje, że zwrócony wynik jest środkiem geometrycznym wyniku, takiego jak linia łamana (na przykład ulica) lub wielokąt. (region).APPROXIMATE
wskazuje, że zwrócony wynik jest przybliżony.
viewport
przechowuje zalecany widoczny obszar dla wynik.bounds
(opcjonalnie zwracany) przechowuje wartośćLatLngBounds
, która może w całości zawierać zwrócony wynik. Pamiętaj, że te granice mogą nie odpowiadać zalecanemu widocznemu obszarowi. (Do Na przykład San Francisco obejmuje Farallon Wyspy, które technicznie są częścią miasta, ale nie powinny w widocznym obszarze).
Adresy będą zwracane przez geokoder za pomocą ustawień preferowanych w przeglądarce
języka lub języka określonego przy wczytywaniu kodu JavaScript API
za pomocą parametru language
. (Więcej informacji znajdziesz w artykule
Lokalizacja.)
Typy adresów i typy komponentów adresu
Tablica types[]
w
GeocoderResult
wskazuje
typ adresu. Tablica types[]
również może zostać zwrócona
w ciągu
GeocoderAddressComponent
aby wskazać typ konkretnego komponentu adresu. Zwrócone adresy
przez geokoder może mieć kilka typów; które można uznać za tagi.
Na przykład wiele miast jest oznaczonych tagami political
oraz
Typ: locality
.
Geokoder obsługuje i zwraca poniższe typy w obu typy adresów i typy komponentów adresu:
street_address
wskazuje dokładny adres.route
oznacza trasę z nazwą (np. „E101”).intersection
oznacza większe przecięcie, zwykle składające się z dwóch dróg głównych.political
oznacza podmiot polityczny. Zwykle ten typ oznacza wielokąt niektórych jednostek administracji cywilnej.country
oznacza krajowy podmiot polityczny i jest zwykle jest to najwyższy typ kolejności zwracany przez Geocoder.administrative_area_level_1
oznacza cywilny pierwszego rzędu poniżej poziomu kraju. W Stanach Zjednoczonych te poziomy administracyjne to stany. Nie we wszystkich krajach na poziomach administracyjnych. W większości przypadków parametr administracyjny_area_level_1 krótkie nazwy będą dokładnie odpowiadać podziałom zgodnym z normą ISO 3166-2 oraz innymi powszechnymi publikowane listy; Nie jest to jednak gwarantowane, ponieważ wyniki geokodowania na podstawie różnych sygnałów i danych o lokalizacji.administrative_area_level_2
oznacza typ cywilny drugiego rzędu. poniżej poziomu kraju. W Stanach Zjednoczonych te poziomy administracyjne to hrabstwa. Nie we wszystkich krajach na poziomach administracyjnych.administrative_area_level_3
oznacza rodzaj cywilny trzeciego rzędu. poniżej poziomu kraju. Ten typ oznacza niewielką jednostkę cywilną. Nie we wszystkich krajach obowiązują te poziomy administracyjne.administrative_area_level_4
oznacza cywilny rządu czwartego rzędu poniżej poziomu kraju. Ten typ oznacza niewielką jednostkę cywilną. Nie we wszystkich krajach obowiązują te poziomy administracyjne.administrative_area_level_5
oznacza cywilny piątego rzędu poniżej poziomu kraju. Ten typ oznacza niewielką jednostkę cywilną. Nie we wszystkich krajach obowiązują te poziomy administracyjne.administrative_area_level_6
oznacza cywilny szóstego rzędu. poniżej poziomu kraju. Ten typ oznacza niewielką jednostkę cywilną. Nie we wszystkich krajach obowiązują te poziomy administracyjne.administrative_area_level_7
oznacza cywilny siódmego rzędu. poniżej poziomu kraju. Ten typ oznacza niewielką jednostkę cywilną. Nie we wszystkich krajach obowiązują te poziomy administracyjne.colloquial_area
oznacza często używaną nazwę alternatywną. danego podmiotu.locality
oznacza miasto lub miejscowości, na terenie których funkcjonuje podmiotu zabezpieczeń.sublocality
oznacza podmiot cywilny pierwszego rzędu pod lokalizacji. W przypadku niektórych lokalizacji mogą pojawić się dodatkowe typy lokalizacji:sublocality_level_1
dosublocality_level_5
. Każdy poziom podrejonu jest podmiotem cywilnym. Większe liczby oznaczają mniejsze obszar geograficzny.neighborhood
oznacza nazwany dzielnicępremise
wskazuje nazwane lokalizację, zwykle budynek lub zespół budynków o takiej samej nazwiesubpremise
oznacza element pierwszego rzędu pod nazwanym lokalizacji, zwykle pojedynczego budynku w obrębie zespołu budynków imię i nazwiskoplus_code
oznacza zakodowane odniesienie do lokalizacji, pochodne od szerokości i długości geograficznej. Kody Plus Code mogą zastąpić: adresów w miejscach, gdzie nie istnieją (gdzie budynki nie są numerowane lub ulice nie mają nazwy). Zobacz https://plus.codes. .postal_code
oznacza kod pocztowy używany do adresowania. na terenie tego kraju.natural_feature
oznacza ważny obiekt naturalny.airport
oznacza lotnisko.park
oznacza nazwany park.point_of_interest
wskazuje nazwane miejsce. Takie miejsca to zazwyczaj dobrze widoczne obiekty lokalne, które nie zawsze w innej kategorii, takiej jak „Empire State Building” czy „wieża Eiffla”.
Pusta lista typów oznacza, że nie ma znanych typów dla danego składnika adresu, np. Lieu-dit we Francji.
Oprócz wymienionych powyżej składników adresu mogą występować typy opisane poniżej.
Uwaga: ta lista nie jest wyczerpująca i może ulec zmianie.
floor
wskazuje piętro w adresie budynku.establishment
zwykle oznacza miejsce, w którym nie ma jeszcze została sklasyfikowana.landmark
wskazuje miejsce w pobliżu, które jest używane jako odniesienie. i ułatwi nawigację.point_of_interest
wskazuje nazwane miejsce.parking
oznacza parking.post_box
oznacza konkretną skrzynkę pocztową.postal_town
oznacza grupę obszarów geograficznych, takich jaklocality
isublocality
, używane w adresach pocztowych w niektórych krajach.room
wskazuje salę w danym budynku.street_number
wskazuje dokładny numer domu.bus_station
,train_station
itransit_station
wskazują lokalizację autobusu, pociągu lub środka transportu publicznego przystanek.
Kody stanu
Kod status
może zwrócić jedną z tych wartości:
"OK"
oznacza, że nie wystąpiły błędy. adres został pomyślnie przeanalizowany i został zwrócony co najmniej jeden kod geograficzny."ZERO_RESULTS"
oznacza, że geokod został poprawnie użyty, ale nie zwrócił żadnych wyników. Może się tak zdarzyć, jeśli geokoder został przekazany do nieistniejącego elementuaddress
."OVER_QUERY_LIMIT"
oznacza, że limit został przekroczony."REQUEST_DENIED"
oznacza, że prośba została odrzucona. Ta strona internetowa nie jest i zezwalają na używanie geokodera.- Zmienna
"INVALID_REQUEST"
zwykle wskazuje, że zapytanie (address
,components
lublatlng
). "UNKNOWN_ERROR"
oznacza, że nie udało się zrealizować żądania przetworzono z powodu błędu serwera. Żądanie może zostać zrealizowane, jeśli: spróbuj jeszcze raz."ERROR"
oznacza, że upłynął limit czasu żądania lub wystąpiło ma problem z nawiązaniem połączenia z serwerami Google. Żądanie może zostać zrealizowane, jeśli: spróbuj jeszcze raz.
W tym przykładzie geokodujemy adres i umieszczamy znacznik w zwróconych szerokości i długości geograficznej. Zwróć uwagę, że moduł obsługi jest przekazywany jako anonimowego literału funkcji.
var geocoder; var map; function initialize() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(-34.397, 150.644); var mapOptions = { zoom: 8, center: latlng } map = new google.maps.Map(document.getElementById('map'), mapOptions); } function codeAddress() { var address = document.getElementById('address').value; geocoder.geocode( { 'address': address}, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { alert('Geocode was not successful for the following reason: ' + status); } }); } <body onload="initialize()"> <div id="map" style="width: 320px; height: 480px;"></div> <div> <input id="address" type="textbox" value="Sydney, NSW"> <input type="button" value="Encode" onclick="codeAddress()"> </div> </body>
Promowanie widocznego obszaru
Możesz polecić usłudze Geocoding Service preferowanie wyników w danym
widoczny obszar (wyrażony jako ramka ograniczająca). W tym celu ustaw parametr
Parametr bounds
w obiekcie GeocoderRequest
do określenia granic tego widocznego obszaru. Pamiętaj, że odchylenie dotyczy tylko
preferuje wyniki w określonych granicach; jeśli istnieją trafniejsze wyniki
poza tymi granicami, mogą zostać uwzględnione.
Na przykład kod geograficzny dla „Winnetka” zwykle zwraca to przedmieście Chicago:
{ "types":["locality","political"], "formatted_address":"Winnetka, IL, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["locality","political"] },{ "long_name":"Illinois", "short_name":"IL", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location":[ -87.7417070, 42.1083080], "location_type":"APPROXIMATE" }, "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q" }
Jednak określenie parametru bounds
definiującego ramkę ograniczającą
w dolinie San Fernando w Los Angeles oznacza, że geokod jest zwracany
dzielnicy o nazwie „Winnetka” w tej lokalizacji:
{ "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" }, "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ" }
Promowanie kodu regionu
Można tak ustawić usługę Geocoding Service, aby zwracała stronniczone wyniki do określonego
bezpośrednio za pomocą parametru region
. Ten parametr
pobiera kod regionu określony jako dwuznakowy (nienumeryczny) kod Unicode.
podtag regionu. Tagi te są mapowane bezpośrednio na znajomą domenę ccTLD („domenę najwyższego poziomu”)
wartości dwuznakowych, np. „pl”; w ciągu „co.uk”, na przykład. W niektórych przypadkach
Tag region
obsługuje również kody ISO-3166-1, które czasami
różnią się od wartości ccTLD (np. „GB” w przypadku Wielkiej Brytanii).
Gdy używasz parametru region
:
- Określ tylko jeden kraj lub region. Wiele wartości jest ignorowanych, może doprowadzić do nieudanego żądania.
- Używaj tylko dwuznakowych tagów podrzędnych regionów (w formacie Unicode CLDR). Wszystkie pozostałe spowoduje wystąpienie błędów.
- Tylko kraje i regiony wymienione w Google Szczegóły zasięgu Maps Platform są obsługiwane.
Żądania geokodowania mogą być wysyłane w przypadku każdej domeny, w której główny Aplikacja Mapy Google oferuje geokodowanie. Pamiętaj, że promowanie preferuje tylko wyniki z konkretnej domeny; jeśli trafniejsze wyniki istnieją poza tą domeną, mogą zostać uwzględnione.
Na przykład geokod dla „Toledo”. domyślnie zwraca ten wynik. dla usługi Geocoding Service są ustawione Stany Zjednoczone:
{ "types":["locality","political"], "formatted_address":"Toledo, OH, USA", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Ohio", "short_name":"OH", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw" }
Geokod dla „Toledo” z polem region
ustawionym na
'es'
(Hiszpania) wyświetli hiszpańskie miasto:
{ "types":["locality","political"], "formatted_address":"Toledo, España", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Toledo", "short_name":"TO", "types":["administrative_area_level_2","political"] },{ "long_name":"Castilla-La Mancha", "short_name":"CM", "types":["administrative_area_level_1","political"] },{ "long_name":"España", "short_name":"ES", "types":["country","political"] }], "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y" }
Filtrowanie komponentów
Możesz skonfigurować usługę Geocoding, aby zwracać wyniki dotyczące adresów objęte ograniczeniami
do określonego obszaru, używając filtra komponentów. Określ filtr w
componentRestrictions
. Wartości filtrów obsługują
te same metody poprawy pisowni i częściowe dopasowywanie co w przypadku innych geokodowania
żądań.
Geokoder zwraca tylko wyniki pasujące do wszystkich komponentów. filtry. Specyfikacja filtra jest oceniana za pomocą operatora I, a nie LUB.
Filtr komponentów składa się z co najmniej jednego z tych elementów:
route
pasuje do długiej lub krótkiej nazwy trasy.locality
pasuje do typów rejonów i podrejonów.administrativeArea
pasuje do wszystkich obszarów administracyjnych.postalCode
pasuje do kodów pocztowych i prefiksów kodów pocztowych.- Wyrażenie
country
odpowiada nazwie kraju lub dwuliterom ISO 3166-1 dla danego kraju. Uwaga: interfejs API jest zgodny ze standardem ISO dla definiują kraje, a filtrowanie działa najlepiej przy z odpowiednim kodem ISO kraju.
Poniższy przykład pokazuje użycie
componentRestrictions
parametr, według którego chcesz filtrować
country
i postalCode
:
function codeAddress() { geocoder.geocode({ componentRestrictions: { country: 'AU', postalCode: '2000' } }, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
Realizacja przy braku wyników
W przypadku odwrotnego geokodowania obietnica jest domyślnie uszkodzona w status=ZERO_RESULTS
. Pamiętaj jednak:
dodatkowe pola na poziomie odpowiedzi plus_code
i address_descriptor
mogą być nadal
w tym przypadku. Jeśli parametr fulfillOnZeroResults
ma wartość Prawda,
obietnica nie jest unieważniona, a te dodatkowe pola są dostępne z poziomu obietnicy, jeśli istnieje.
Poniżej przedstawiono przykład takiego zachowania dla współrzędnych geograficznych Antarktydy.
Nawet jeśli nie ma żadnych wyników odwrotnego geokodowania, wciąż możemy wydrukować kod plus.
jeśli ustawisz fulfillOnZeroResults=true
.
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(-75.290330, 38.653861); geocoder .geocode({ 'location': latlng, 'fulfillOnZeroResults': true, }) .then((response) => { console.log(response.plus_code); }) .catch((error) => { window.alert(`Error`); }); }
Deskryptory adresów
Deskryptory adresów zawierają dodatkowe informacje, które pomagają opisać lokalizację za pomocą punktów orientacyjnych i obszarów. Zobacz prezentację deskryptorów adresów aby zapoznać się z tą funkcją.
Deskryptory adresów można włączyć za pomocą funkcji extraComputations
. Uwzględnij extra_computations=ADDRESS_DESCRIPTORS
w żądaniu geokodowania
, odwrotne żądanie geokodowania
lub prośba o geokodowanie miejsc.
, aby otrzymywać deskryptory adresów w odpowiedzi.
Przykładowe geokodowanie w miejscach
Kolejne zapytanie zawiera adres miejsca w Delhi.
function addressDescriptorPlaceIdLookup() { geocoder.geocode({ 'placeId': 'ChIJyxAX8Bj9DDkRgBfAnBYa66Q', 'extraComputations': ['ADDRESS_DESCRIPTORS'] }, function(results, status) { if (status == 'OK') { console.log(results[0].address_descriptor); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
Przykład odwrotnego geokodowania
Następujące zapytanie zawiera wartość szerokości/długości geograficznej lokalizacji w regionie Delhi,
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(28.640964,77.235875); geocoder .geocode({ 'location': latlng, 'extraComputations': ["ADDRESS_DESCRIPTORS"], }) .then((response) => { console.log(response.address_descriptor); }) .catch((error) => { window.alert(`Error`); }); }
Przykład deskryptora adresu
Przykład address_descriptor
jest następujący.
{ "address_descriptor" : { "areas" : [ { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Turkman Gate" }, "place_id" : "ChIJ_7LLvyb9DDkRMKKxP9YyXgs" }, { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Chandni Chowk" }, "place_id" : "ChIJWcXciBr9DDkRUb4dCDykTwI" }, { "containment" : "NEAR", "display_name" : { "language_code" : "en", "text" : "Katar Ganj" }, "place_id" : "ChIJH3cWUyH9DDkRaw-9CjvcRvY" } ], "landmarks" : [ { "display_name" : { "language_code" : "en", "text" : "Delite Cinema" }, "straight_line_distance_meters" : 29.9306755065918, "place_id" : "ChIJLfiYDCT9DDkROoEa7NdupUM", "travel_distance_meters" : 418.7794799804688, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "establishment", "movie_theater", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "YES Bank" }, "straight_line_distance_meters" : 66.83731079101562, "place_id" : "ChIJFYHM3yb9DDkRRKGkZl2mpSQ", "travel_distance_meters" : 489.0340270996094, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "UCO Bank" }, "straight_line_distance_meters" : 25.38849639892578, "place_id" : "ChIJ-c6_wCb9DDkRjIk1LeqRtGM", "travel_distance_meters" : 403.2246398925781, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "atm", "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "Delhi By Cycle Meeting Point" }, "straight_line_distance_meters" : 44.02867126464844, "place_id" : "ChIJNxVfkSb9DDkRJD22l-eGFdM", "travel_distance_meters" : 97.41281890869141, "spatial_relationship" : "AROUND_THE_CORNER", "types" : [ "establishment", "point_of_interest", "tourist_attraction", "travel_agency" ] }, { "display_name" : { "language_code" : "en", "text" : "Axis Bank Branch" }, "straight_line_distance_meters" : 102.3495178222656, "place_id" : "ChIJr3uaDCT9DDkR8roHTVSn1x4", "travel_distance_meters" : 330.8566284179688, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] } ] } }
W każdym obiekcie address_descriptor
są dwie tablice: landmarks
oraz
areas
Tablica landmarks
zawiera maksymalnie 5 wyników uporządkowanych według kolejności
trafność, biorąc pod uwagę odległość od żądanych współrzędnych,
powszechności punktu orientacyjnego i jego widoczności. Każdy wynik dotyczący punktu orientacyjnego zawiera
następujące wartości:
place_id
to identyfikator miejsca w wynikach wyszukiwania punktów orientacyjnych. Zobacz identyfikator miejsca .display_name
to wyświetlana nazwa punktu orientacyjnego, która zawieralanguage_code
itext
.straight_line_distance_meters
to odległość między punktami w metrach między podaną współrzędną a wynikami punktów orientacyjnych.travel_distance_meters
to odległość pokonana w metrach przez sieć dróg (z wyłączeniem ograniczeń drogowych) między wejściowymi współrzędnymi a wynikami punktów orientacyjnych.spatial_relationship
to szacowany związek między współrzędnymi wejściowymi a wynikami punktów orientacyjnych:- Gdy nie ma zastosowania żadna z poniższych sytuacji, relacją domyślną jest
"NEAR"
. "WITHIN"
, gdy współrzędna wejściowa znajduje się w granicach obiektu powiązanego z punktem orientacyjnym."BESIDE"
, jeśli współrzędna wejściowa przylega bezpośrednio do punktu dostępu do punktu orientacyjnego lub punktu dostępu."ACROSS_THE_ROAD"
, gdy współrzędne wejściowe są bezpośrednio przeciwne do punktu orientacyjnego po drugiej stronie trasy."DOWN_THE_ROAD"
, gdy współrzędne wejściowe znajdują się wzdłuż tej samej trasy co punkt orientacyjny, ale nie"BESIDES"
ani"ACROSS_THE_ROAD"
."AROUND_THE_CORNER"
, gdy współrzędne wejściowe znajdują się wzdłuż prostopadłej trasy jako punktu orientacyjnego (tylko do jednego skrętu)."BEHIND"
, gdy współrzędna wejściowa jest przestrzennie blisko punktu orientacyjnego, ale daleko od jego punktu dostępu.types
to typy miejsc punktu orientacyjnego.
Obiekt areas
zawiera maksymalnie 3 odpowiedzi i ogranicza się do miejsc, w których
reprezentują małe regiony, takie jak dzielnice, dzielnice i duże
kompleksy. Obszary zawierające żądane współrzędne są wymienione jako pierwsze i
są uporządkowane od najmniejszej do największej wartości. Każdy wynik funkcji areas
zawiera te elementy
wartości:
place_id
to identyfikator miejsca wskazanego w wynikach wyszukiwania obszarów. Zobacz identyfikator miejsca .display_name
to wyświetlana nazwa obszaru. Zawiera onalanguage_code
itext
.containment
to szacunkowy stosunek izolacji między współrzędną wejściową a wynikiem obszaru:- Gdy nie ma zastosowania żadna z poniższych sytuacji, relacją domyślną jest
"NEAR"
. "WITHIN"
, gdy współrzędna wejściowa jest blisko środka obszaru."OUTSKIRTS"
, gdy współrzędna wejściowa jest blisko krawędzi obszaru.
Zasięg deskryptora adresu
Ta funkcja jest dostępna tylko w wybranych krajów.
To jest funkcja w wersji testowej. Chętnie poznamy Twoją opinię. Wyślij e-maila wyślij do nas na adres address-descriptors-feedback@google.com.
Odwrotne geokodowanie (wyszukiwanie adresu)
Termin geokodowanie odnosi się ogólnie do tłumaczenia zrozumiałego dla człowieka adres w lokalizacji na mapie. Cały proces polega na tym, tłumaczenie lokalizacji na mapie na adres czytelny dla człowieka to tzw. odwrotne geokodowanie.
Zamiast podawania tekstowego address
wpisz rozdzielany przecinkami
szerokość i długość geograficzna w parametrze location
.
W poniższym przykładzie geologicznym jest wartość szerokości i długości geograficznej i wyśrodkowuje w niej na mapie w tej lokalizacji i wyświetla się okno informacyjne ze sformatowanym adresem:
TypeScript
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.731, lng: -73.997 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodeLatLng(geocoder, map, infowindow); } ); } function geocodeLatLng( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const input = (document.getElementById("latlng") as HTMLInputElement).value; const latlngStr = input.split(",", 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; geocoder .geocode({ location: latlng }) .then((response) => { if (response.results[0]) { map.setZoom(11); const marker = new google.maps.Marker({ position: latlng, map: map, }); infowindow.setContent(response.results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.731, lng: -73.997 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodeLatLng(geocoder, map, infowindow); }); } function geocodeLatLng(geocoder, map, infowindow) { const input = document.getElementById("latlng").value; const latlngStr = input.split(",", 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; geocoder .geocode({ location: latlng }) .then((response) => { if (response.results[0]) { map.setZoom(11); const marker = new google.maps.Marker({ position: latlng, map: map, }); infowindow.setContent(response.results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } window.initMap = initMap;
Zobacz próbkę
Zwróć uwagę, że w poprzednim przykładzie pierwszy wynik pokazaliśmy przez
wybierając results[0]
. Geokoder odwrotny często zwraca więcej
niż jeden wynik. Adresy geokodowane to nie tylko adresy pocztowe,
sposób określania położenia geograficznego. Na przykład przy geokodowaniu punktu w
miasta Chicago, punkt geokodowany może być oznaczony jako adres,
jako miasto (Chicago), stan (Illinois) lub kraj (Stany Zjednoczone
stany). Wszystkie to adresy geokodera. Geokoder zwraca wszystkie
tych wyników.
Odwrotny geokoder pasuje do podmiotów politycznych (krajów, prowincji, miasta i dzielnice), adresy ulic i kody pocztowe.
Oto przykład listy adresów, które może zwrócić zapytanie:
results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA" results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA" results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA" results[3].formatted_address: "Brooklyn, NY, USA" results[4].formatted_address: "New York, NY, USA" results[5].formatted_address: "Brooklyn, NY 11211, USA" results[6].formatted_address: "Kings County, NY, USA" results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA" results[8].formatted_address: "New York Metropolitan Area, USA" results[9].formatted_address: "New York, USA"
Adresy są zwracane w kolejności od największej do najmniejszej liczby dopasowań. Ogólnie rzecz biorąc,
im dokładny adres jest najbardziej widocznym wynikiem, tak jak w tym przypadku.
Zwróć uwagę, że zwracamy różne typy adresów, od najbardziej szczegółowych
adresu do mniej konkretnych jednostek politycznych, takich jak dzielnice,
miasta, hrabstwa, województwa itp. Jeśli chcesz dopasować bardziej ogólny adres,
sprawdź pole results[].types
.
Uwaga: odwrotne geokodowanie nie jest dokładne nauki. Geokoder spróbuje znaleźć najbliższą możliwa lokalizację w ramach określonej tolerancji.
Pobieranie adresu dla identyfikatora miejsca
Podaj placeId
, aby znaleźć adres dla danego identyfikatora miejsca.
identyfikator miejsca to unikalny identyfikator, którego można używać z innymi interfejsami API Google. Dla:
możesz podać wartość placeId
zwrócona przez funkcję
Roads API, aby pobrać
dla przyciągniętego punktu. Więcej informacji o identyfikatorach miejsc znajdziesz tutaj:
omówienie identyfikatora miejsca.
Jeśli podasz placeId
, żądanie nie może zawierać żadnych z
tych polach:
address
latLng
location
componentRestrictions
W przykładzie poniżej przyjmujemy identyfikator miejsca, znajduje on odpowiedni adres i wyśrodkowuje mapę w tej lokalizacji. Wyświetlane jest również okno informacyjne, sformatowany adres odpowiedniego miejsca:
TypeScript
// Initialize the map. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.72, lng: -73.96 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodePlaceId(geocoder, map, infowindow); } ); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const placeId = (document.getElementById("place-id") as HTMLInputElement) .value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// Initialize the map. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.72, lng: -73.96 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodePlaceId(geocoder, map, infowindow); }); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId(geocoder, map, infowindow) { const placeId = document.getElementById("place-id").value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } window.initMap = initMap;