Migracja z interfejsu Geocoding API w wersji 3 do wersji 4

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Interfejs Geocoding API w wersji 4 wprowadza kilka nowych punktów końcowych, które zastępują funkcje interfejsu API w wersji 3. Z tego przewodnika dowiesz się, jak przenieść aplikację, aby korzystała z nowych punktów końcowych w wersji 4.

Możesz używać dotychczasowych kluczy interfejsu API z nowymi punktami końcowymi w wersji 4. Jeśli jednak poprosisz o zwiększenie limitu w przypadku interfejsu API w wersji 3, musisz poprosić o zwiększenie limitu w przypadku nowych interfejsów API w wersji 4. Użytkownicy JavaScriptu nie mogą przeprowadzić migracji.

Migracja z geokodowania w wersji 3

Jeśli używasz geokodowania do geokodowania adresów, przenieś się na punkt końcowy v4 Geocode an address (Geokodowanie adresu), który akceptuje żądanie GET.

W interfejsie API w wersji 4 zmieniliśmy nazwy, strukturę i obsługę kilku parametrów. Zdecydowanie zalecamy używanie maski pola do określania pól, które mają zostać zwrócone w odpowiedzi.

Zmiany parametru żądania

Parametr v3 Parametr v4 Uwagi
address, components address Nieustrukturyzowany adres (wersja 3 address) jest teraz przekazywany w ścieżce adresu URL. Filtry komponentów (wersja 3 components) są teraz przekazywane jako parametry zapytania address.*.
bounds locationBias.rectangle Zmieniono nazwę i strukturę na obiekt.
language languageCode Nazwa została zmieniona.
region regionCode Nazwa została zmieniona.
extra_computations Usunięto

Zmiany w polu odpowiedzi

Pole w wersji 3 Pole v4 Uwagi
status, error_message Usunięto Wersja 4 korzysta z kodów stanu HTTP i treści błędów.
results.address_components.long_name/results.address_components.short_name results.addressComponents.longText/results.addressComponents.shortText Nazwa została zmieniona.
results.geometry.location_type results.granularity Nazwa została zmieniona.
results.geometry.location results.location Nazwy pól: lat/lng -> latitude/longitude.
results.geometry.viewport results.viewport Nazwy pól: northeast/southwest -> high/low.
results.postcode_localities results.postalCodeLocalities Nazwa została zmieniona. Teraz zwracany w przypadku co najmniej 1 lokalizacji (wymagana wersja 3 > 1).
results.partial_match Usunięto
Nowość results.addressComponents.languageCode Język konkretnego komponentu adresu.
Nowość results.bounds Jawne granice za pomocą tagów high/low.
Nowość results.place Nazwa zasobu miejsca.
Nowość results.postalAddress Ustrukturyzowany obiekt PostalAddress.

Migracja z odwrotnego geokodowania w wersji 3

Jeśli używasz geokodowania odwrotnego do przekształcania współrzędnych w adresy, musisz przejść na punkt końcowy v4 Geokodowanie odwrotne lokalizacji, który akceptuje żądanie GET.

W interfejsie API w wersji 4 zmieniliśmy nazwy, strukturę i obsługę kilku parametrów. Zdecydowanie zalecamy używanie maski pola do określania pól, które mają zostać zwrócone w odpowiedzi.

Zmiany parametru żądania

Parametr v3 Parametr v4 Uwagi
language languageCode Nazwa została zmieniona.
region regionCode Nazwa została zmieniona.
result_type types Zmieniono nazwę; używa powtarzanych parametrów zapytania.
location_type granularity Zmieniono nazwę; używa powtarzanych parametrów zapytania.
extra_computations Usunięto

Zmiany w polu odpowiedzi

Pole w wersji 3 Pole v4 Uwagi
status, error_message Usunięto Wersja 4 korzysta z kodów stanu HTTP i treści błędów.
results.address_components.long_name/results.address_components.short_name results.addressComponents.longText/results.addressComponents.shortText Nazwa została zmieniona.
results.geometry.location_type results.granularity Nazwa została zmieniona.
results.geometry.location results.location Nazwy pól: lat/lng -> latitude/longitude.
results.geometry.viewport results.viewport Nazwy pól: northeast/southwest -> high/low.
Nowość results.addressComponents.languageCode Język konkretnego komponentu adresu.
Nowość results.bounds Jawne granice za pomocą tagów high/low.
Nowość results.place Nazwa zasobu miejsca.
Nowość results.postalAddress Ustrukturyzowany obiekt PostalAddress.

Migracja z geokodowania miejsc w wersji 3

Jeśli używasz place_id do uzyskiwania adresu dla konkretnego identyfikatora miejsca za pomocą geokodowania w wersji 3, musisz przejść na punkt końcowy Place Geocoding w wersji 4, który akceptuje żądanie GET.

W interfejsie API w wersji 4 zmieniliśmy nazwy, strukturę i obsługę kilku parametrów. Zdecydowanie zalecamy używanie maski pola do określania pól, które mają zostać zwrócone w odpowiedzi.

Zmiany parametru żądania

Parametr v3 Parametr v4 Uwagi
place_id place pole w protokole żądania Identyfikator miejsca jest teraz podawany jako parametr ścieżki places/{place}, np. https://geocode.googleapis.com/v4beta/geocode/places/ChIJj61dQgK6j4AR4GeTYWZsKWw. Odpowiada to polu miejsca w żądanym zapytaniu.
language languageCode Nazwa została zmieniona.
region regionCode Nazwa została zmieniona.

Zmiany w polu odpowiedzi

Pole w wersji 3 Pole v4 Uwagi
status, error_message Usunięto Wersja 4 korzysta z kodów stanu HTTP i treści błędów.
results (root) Wersja 4 zwraca pojedynczy obiekt wyniku, a nie tablicę results.
results.address_components.long_name/results.address_components.short_name addressComponents.longText/addressComponents.shortText Nazwa została zmieniona.
results.geometry.location_type granularity Nazwa została zmieniona.
results.geometry.location location Nazwy pól: lat/lng -> latitude/longitude.
results.geometry.viewport viewport Nazwy pól: northeast/southwest -> high/low.
results.postcode_localities postalCodeLocalities Nazwa została zmieniona. Teraz zwracany w przypadku co najmniej 1 lokalizacji (wymagana wersja 3 > 1).
Nowość addressComponents.languageCode Język konkretnego komponentu adresu.
Nowość bounds Jawne granice za pomocą tagów high/low.
Nowość place Nazwa zasobu miejsca.
Nowość postalAddress Ustrukturyzowany obiekt PostalAddress.

Migracja z Geocoding Hyperlocal Data do Destinations

Te funkcje w Geocoding API w wersji 3 zostaną zastąpione przez punkt końcowy SearchDestinations w Geocoding API w wersji 4:

  • Wejścia
  • Punkty nawigacyjne
  • Tworzenie konspektów
  • Tereny posiadłości

Jeśli do obsługi powyższych funkcji używasz interfejsu Geocoding API w wersji 3, zapoznaj się z tym dokumentem, aby dowiedzieć się, jak zamiast niego używać punktu końcowego SearchDestinations. Z tego dokumentu dowiesz się, gdzie w odpowiedzi interfejsu SearchDestinations API można znaleźć te funkcje, oraz poznasz różnice w sposobie ich reprezentowania w odpowiedziach interfejsu API między interfejsem Geocoding API w wersji 3 a punktem końcowym SearchDestinations interfejsu Geocoding API w wersji 4.

Wejścia

Aby uzyskać wejścia powiązane z destination, użyj pola destination.entrances.

Pamiętaj, że format entrance różni się nieco od formatu wejścia w interfejsie Geocoding API w wersji 3. Każde wejście w destination.entrances ma te pola:

  • displayName – to nowe pole opcjonalne, które będzie zawierać czytelną dla użytkownika nazwę wejścia, np. „Brama B”.
  • location – jest to lokalizacja typu LatLng, która różni się od formatu używanego w interfejsie Geocoding API w wersji 3.
  • tags – to pole jest takie samo jak pole tags w przypadku wejść z interfejsu Geocoding API w wersji 3.
  • place – analogiczne do pola buildingPlaceId w przypadku wejść z interfejsu Geocoding API w wersji 3. Identyfikator miejsca w tym polu może jednak dotyczyć miejsca dowolnego typu, nie tylko budynku.

Aby uzyskać punkty nawigacyjne powiązane z destination, użyj pola destination.navigationPoints.

Pamiętaj, że format navigationPoint nieco różni się od formatu punktu nawigacyjnego w interfejsie Geocoding API w wersji 3. Każdy punkt nawigacyjny w destination.navigationPoints ma te pola:

  • displayName – to nowe pole opcjonalne, które będzie zawierać czytelną dla użytkownika nazwę punktu nawigacyjnego, np. „5th Ave”.
  • location – jest to lokalizacja typu LatLng, która różni się od formatu używanego w interfejsie Geocoding API w wersji 3.
  • travelModes – jest to podobne do pola restrictedTravelModes punktów nawigacyjnych z interfejsu Geocoding API w wersji 3. Możliwe wartości wyliczenia są takie same. Jedyna różnica polega na tym, że to pole reprezentuje teraz dopuszczalne środki transportu dla punktu nawigacyjnego, a nie ograniczone środki transportu.
  • usage – to nowe pole zawiera przypadki użycia obsługiwane przez punkt nawigacyjny. Pamiętaj, że większość punktów nawigacyjnych ma UNKNOWN zastosowanie, ale nie oznacza to, że ich użycie jest w jakikolwiek sposób ograniczone.

Tworzenie konspektów

Aby uzyskać kontury budynków powiązane z destination, użyj pola displayPolygon obiektów placeViewdestination, które reprezentują budynki. W przypadku każdego placeView możesz sprawdzić, czy jest to budynek, korzystając z pola placeView.structureType. Jeśli typ struktury to BUILDING, kontur możesz uzyskać z pola placeView.displayPolygon. placeView będzie też zawierać dodatkowe pola dotyczące budynku, których nie było w interfejsie Geocoding API w wersji 3.

Obiekt destination może mieć obiekt placeView, który reprezentuje budynek w tych polach:

  • destination.primary – to główne miejsce docelowe.
  • destination.containingPlaces – to pole powtarzane, które może zawierać większe miejsca „zawierające” miejsce podstawowe. Jeśli np. głównym miejscem jest subpremise, containingPlaces zwykle zawiera placeView reprezentujący budynek.
  • destination.subDestinations – jest to pole powtarzane, które może zawierać podrzędne miejsca docelowe głównego miejsca. Na przykład poszczególne mieszkania w budynku. To pole zwykle nie zawiera ikony placeView reprezentującej budynek.

Pamiętaj, że format placeView.displayPolygon jest zgodny z formatem konturu budynku w interfejsie Geocoding API w wersji 3, czyli formatem GeoJSON, który korzysta z formatu RFC 7946.

Tereny posiadłości

Podobnie jak w przypadku konturów budynków, aby uzyskać tereny powiązane z destination, użyj pola displayPolygon obiektów placeViewdestination, które reprezentują tereny. W przypadku każdego placeView możesz sprawdzić, czy jest to podstawa, korzystając z pola placeView.structureType. Jeśli typ struktury to GROUNDS, możesz pobrać konspekt z pola placeView.displayPolygon. placeView będzie też zawierać dodatkowe pola dotyczące powodów, których nie było w interfejsie Geocoding API w wersji 3.

Obiekt destination może mieć obiekt placeView, który reprezentuje podstawy w tych polach:

  • destination.primary
  • destination.containingPlaces
  • destination.subDestinations

Pamiętaj, że format placeView.displayPolygon jest zgodny z formatem konturu terenu w interfejsie Geocoding API w wersji 3, czyli formatem GeoJSON, który korzysta z formatu RFC 7946.

Użyj maski pola, aby poprosić o te funkcje

Punkt końcowy SearchDestinations wymaga maski pola, co wyjaśniono w sekcji Wybieranie pól do zwrócenia. Maskę pola można ustawić na *, aby zwrócić wszystkie pola, lub ustawić ją na konkretne pola, które chcesz otrzymać. Na przykład to żądanie API ustawia maskę pola, aby otrzymać wszystkie pola wymagane do uzyskania wejść, punktów nawigacyjnych, zarysów budynków i terenów miejsca docelowego:

curl -X POST -d '{"place": "places/ChIJG3kh4hq6j4AR_XuFQnV0_t8"}' \
  -H "X-Goog-Api-Key: API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Goog-FieldMask: destinations.entrances,destinations.navigationPoints,destinations.primary,destinations.containingPlaces,destinations.subDestinations" \
  https://geocode.googleapis.com/v4alpha/geocode/destinations