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 typuLatLng, która różni się od formatu używanego w interfejsie Geocoding API w wersji 3.tags– to pole jest takie samo jak poletagsw przypadku wejść z interfejsu Geocoding API w wersji 3.place– analogiczne do polabuildingPlaceIdw przypadku wejść z interfejsu Geocoding API w wersji 3. Identyfikator miejsca w tym polu może jednak dotyczyć miejsca dowolnego typu, nie tylko budynku.
Punkty nawigacyjne
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 typuLatLng, która różni się od formatu używanego w interfejsie Geocoding API w wersji 3.travelModes– jest to podobne do polarestrictedTravelModespunktó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 maUNKNOWNzastosowanie, 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 placeView w destination, 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 jestsubpremise,containingPlaceszwykle zawieraplaceViewreprezentują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 ikonyplaceViewreprezentują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 placeView w destination, 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.primarydestination.containingPlacesdestination.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