Sprawdzone metody dotyczące geokodowania adresów

Geokodowanie to proces konwertowania adresów (np. adresu ulicy) na współrzędne geograficzne (szerokość i długość geograficzną), których można używać do umieszczania znaczników na mapie lub do jej pozycjonowania. W tym dokumencie wyjaśniamy, na co zwracać uwagę podczas geokodowania adresów. Pokazuje, kiedy warto używać interfejsu Geocoding API, a kiedy – usługi Autocomplete API w interfejsie Places API.

Zazwyczaj do geokodowania pełnych adresów (np. „48 Pirrama Rd, Pyrmont, NSW, Australia”) należy używać interfejsu Geocoding API. Używaj Places API usługi Autouzupełnianie miejsc podczas geokodowania niejednoznacznych (niepełnych) adresów lub w przypadku aplikacji wrażliwych na opóźnienia, np. podczas przetwarzania danych wejściowych użytkownika.

Przypadki użycia i zalecenia dotyczące interfejsu API

Przypadki użycia i zalecenia dotyczące interfejsu API
Reagować w czasie rzeczywistym na dane wprowadzane przez użytkownika (w tym na niejednoznaczne, niekompletne, źle sformatowane lub niepoprawnie zapisane adresy); Użyj usługi Autocomplete API Places, aby uzyskać identyfikator miejsca, a potem interfejsu Geocoding API, aby zgeokodować identyfikator miejsca na współrzędne latlng.
automatyczne systemy przetwarzające pełne, jednoznaczne adresy pocztowe (np. „48 Pirrama Rd, Pyrmont, NSW, Australia”), Użyj usługi internetowej Geokodowania API.
Automatyczne systemy przetwarzające niejednoznaczne zapytania(np. niepełne, źle sformatowane lub błędnie zapisane adresy) Zalecamy, aby systemy automatyczne korzystały z usługi sieciowej Geokodowania API. Automatyczne systemy, w których przypadku od użytkowników pochodzą niejednoznaczne, niepełne lub źle zapisane zapytania, mogą jednak skorzystać z dodania interaktywnego widżetu Autouzupełnianie miejsc, aby umożliwić użytkownikom wybór wyniku i uniknięcie błędnego zapisu adresu.
Problemy z opóźnieniami podczas korzystania z interfejsu Directions API (w wersji starszej) lub interfejsu Distance Matrix API (w wersji starszej) w przypadku punktów początkowych, docelowych lub pośrednich określonych jako ciągi adresów. Zmniejsz opóźnienie geokodowania, używając usługi autouzupełniania interfejsu Places API do pobierania identyfikatorów miejsc, a potem przekazuj te identyfikatory do interfejsu Directions API (starsza wersja) lub Distance Matrix API (starsza wersja).

Odpowiedzi na dane wejściowe użytkownika

Aplikacje, które reagują w czasie rzeczywistym na dane wejściowe użytkownika, muszą uwzględnić 2 główne kwestie, które wpływają na wybór interfejsu API:

  1. Dane wprowadzane przez użytkownika zwykle obejmują adresy podawane stopniowo (np. „123 Ulica Główna”), dlatego możliwość geokodowania niepełnych, niejednoznacznych adresów jest korzystna, ponieważ pozwala użytkownikowi szybciej uzyskać wynik.
  2. Aplikacje, które reagują na działania użytkownika, są bardzo wrażliwe na opóźnienia.

Te 2 kryteria sprawiają, że usługa autouzupełniania miejsc w interfejsie Places API jest idealna do reagowania na dane wprowadzane przez użytkownika. Autouzupełnianie miejsc zwraca wiele możliwych opcji i pozwala użytkownikowi wybrać jedną z nich. Interfejs Places API może być ograniczony do wyszukiwania tylko kodów geograficznych lub adresów, z wyłączeniem firm. Ponadto funkcja wyszukiwania autouzupełniania może być zaprogramowana w taki sposób, aby zwracać wyniki dotyczące konkretnej lokalizacji. Interfejs Places API zwraca identyfikator miejsca, który można przekazać jako w pełni jednoznaczne położenie do usługi internetowej Geokodowania API, która zwraca pełne dane adresu i geokoduje adres na współrzędne latlng. Identyfikatory miejsc można też przekazywać do innych interfejsów API, takich jak Directions API (starsza wersja) i Distance Matrix API (starsza wersja) (patrz poniżej).

Geokodowanie adresów w interfejsie Geocoding API powoduje znacznie większe opóźnienia i daje mniej dokładne wyniki w przypadku niepełnych lub niejednoznacznych zapytań. Nie zalecamy więc korzystania z niego w przypadku aplikacji, które muszą reagować na dane wejściowe użytkownika w czasie rzeczywistym.

Dowiedz się więcej o usłudze Autouzupełnianie miejsc na Android, iOS, JavaScript Places API.

Automatyczne systemy

Automatyczne systemy przetwarzające pełne, jednoznaczne adresy pocztowe: jednoznaczne zapytania, takie jak pełne ciągi znaków adresu pocztowego (np. „48 Pirama Rd, Pyrmont, NSW, Australia”), są najlepiej obsługiwane przez usługę internetową Geokodowania API. Backend do geokodowania adresów zapewnia większą liczbę adresów na całym świecie oraz jest zoptymalizowany pod kątem wysokiej jakości wyników w przypadku tego typu kompletnych, jednoznacznych zapytań.

Automatyczny system przetwarzający niejednoznaczne zapytania: niejednoznaczne zapytania to takie, które zawierają źle sformatowane adresy, niekompletne adresy lub błędy ortograficzne. W przypadku systemów zautomatyzowanych zalecamy korzystanie z  usługi internetowej interfejsu Geocoding API. Interfejs Geocoding API nie jest jednak przystosowany do obsługi niejednoznacznych zapytań i może zwracać mniej dokładne wyniki lub w ogóle nie zwracać wyników w odpowiedzi na niejednoznaczne zapytania. Jeśli Twój system automatyczny przetwarza dużą liczbę niejednoznacznych zapytań pochodzących z danych wprowadzanych przez użytkownika, możesz dodać do aplikacji element interaktywny za pomocą usługi Autouzupełnianie miejsc w interfejsie Places API, która została zaprojektowana tak, aby zwracać wiele możliwych opcji i umożliwiać użytkownikowi wybór spośród nich. Interfejs Places API zwraca identyfikator miejsca, który można przekazać jako w pełni jednoznaczne położenie do usługi internetowej Geokodowania API, która zwraca pełne dane adresu i geokoduje adres na współrzędne latlng. Dowiedz się więcej o usłudze Autouzupełnianie miejsc na Android, iOS, JavaScript Places API.

Zmniejsz opóźnienie w przypadku interfejsu Directions API (starsza wersja) i interfejsu Distance Matrix API (starsza wersja)

Gdy punkty początkowe, docelowe lub pośrednie są określone jako ciągi adresów, interfejsy Directions API (wcześniejsza wersja) i Distance Matrix API (wcześniejsza wersja) korzystają z tego samego backendu co interfejs Geocoding API, aby przeprowadzić geokodowanie tych adresów przed obliczeniem trasy. To znacznie wydłuża opóźnienie w porównaniu ze wskazaniem tych samych lokalizacji za pomocą współrzędnych lub identyfikatorów miejsca.

Jeśli Twoja aplikacja korzysta z interfejsu Directions API (w wersji starszej) lub interfejsu Distance Matrix API (w wersji starszej) w sytuacji, w której opóźnienia są niewskazane (np. podczas reagowania na dane wejściowe użytkownika), a miejsca docelowe lub pośrednie są początkowo określone jako ciągi adresów, zalecamy zminimalizowanie opóźnień za pomocą usługi automatycznego uzupełniania miejsc w interfejsie Places API, aby konwertować ciągi adresów na identyfikatory miejsc, a następnie przekazywać te identyfikatory do interfejsu Directions API (w wersji starszej) lub interfejsu Distance Matrix API (w wersji starszej). Dowiedz się więcej o usłudze Autouzupełnianie miejsc na Android, iOS, JavaScript Places API. Zobacz też przykład JavaScripta z autouzupełnianiem miejsc i kierunkami.

Podsumowanie

W zależności od przypadku użycia, geokodowanie adresów za pomocą interfejsu Geocoding API lub użycie usługi Autocomplete Miejsc w połączeniu z interfejsem Geocoding API umożliwia tworzenie aplikacji, które zapewniają użytkownikom dokładne wyniki geokodowania oraz zmniejszają opóźnienia.

Zarządzanie błędami i powtórzeniami

Jeśli otrzymasz odpowiedzi UNKNOWN_ERROR, są one spowodowane przejściowymi błędami. Najlepiej jest wtedy ponownie spróbować po krótkim czasie. Zalecamy korzystanie z  bibliotek klienta usług internetowych Google Maps Platform, które zawierają logikę ponownego próbowania i obsługują uwierzytelnianie w ramach abonamentu Premium w Google Maps Platform. Java Client, Python Client, Go ClientNode.js Client w usługach Map Google to biblioteki klienta obsługiwane przez społeczność, dostępne do pobrania i w celu dokonywania w nich zmian na GitHubie, gdzie znajdziesz też instrukcje instalacji i przykładowy kod.

Jeśli w odpowiedzi otrzymasz kod stanu OVER_QUERY_LIMIT, oznacza to, że przekroczyłeś limity korzystania z interfejsu API. Zalecamy wypróbowanie tych strategii optymalizacji wykorzystania.