Aby wykonać podstawowe czynności wykonywane w interfejsie API Street View Publish, wykonaj czynności opisane w tym samouczku.
Nawiązywanie połączeń przez HTTP
Interfejs Street View Publish API można wywoływać za pomocą wielu narzędzi, takich jak curl, wget czy Postman. W większości przypadków najlepiej jest użyć wybranego języka programowania, aby utworzyć aplikację kliencką, która korzysta z interfejsu API, ale w tym samouczku poznasz podstawowe polecenia.
Jeśli nie chcesz wykonywać bezpośrednich wywołań HTTP, udostępniamy też biblioteki klienta.
Wymagania wstępne
-
Musisz mieć konto Google, aby uzyskać dostęp do konsoli interfejsu Google API, poprosić o klucz interfejsu API i zarejestrować aplikację.
-
Utwórz projekt w Google Developers Console i uzyskaj dane logowania, aby Twoja aplikacja mogła przesyłać żądania do interfejsu API.
-
Po utworzeniu projektu upewnij się, że interfejs Street View Publish API jest jedną z usług, które są zarejestrowane w Twojej aplikacji:
- Otwórz Konsolę interfejsów API i wybierz zarejestrowany przed chwilą projekt.
- Wejdź na stronę Włączone interfejsy API. Upewnij się, że interfejs Google Street View API znajduje się na liście włączonych interfejsów API. Jeśli nie jest, otwórz Bibliotekę API i włącz ten interfejs.
-
Przeczytaj przewodnik uwierzytelniania, aby dowiedzieć się, jak wdrożyć autoryzację OAuth 2.0.
-
Zapoznaj się z podstawowymi pojęciami dotyczącymi formatu danych w formacie JSON (JavaScript Object Notation). JSON to popularny, niezależny od języka format danych, który w prosty sposób obrazuje dowolne struktury danych. Więcej informacji znajdziesz na stronie json.org.
Uzyskiwanie klucza interfejsu API
Do uwierzytelniania i limitów musisz używać interfejsu Google Street View Publish API z danymi logowania wygenerowanymi w Developer Console.
- Otwórz stronę Dane logowania w Developer Console.
- Jeśli masz już klucz interfejsu API, możesz użyć jego wartości. W przeciwnym razie utwórz nowy klucz, wybierając Klucz interfejsu API z menu Nowe dane logowania.
Uzyskiwanie tokena dostępu
- Otwórz Google Play OAuth 2.0 Playground.
- Kliknij menu ustawień (ikonę koła zębatego w prawym górnym rogu), zaznacz opcję Użyj własnych danych logowania OAuth, wpisz
Client ID
iClient secret
w odpowiednich polach, a następnie kliknij Zamknij. - W Kroku 1. Wybierz &autoryzuj interfejsy API, wpisz zakres API
https://www.googleapis.com/auth/streetviewpublish
w polu Wpisz własne zakresy i kliknijAutoryzuj interfejsy API. Otworzy się nowa strona z potwierdzeniem, że chcesz autoryzować interfejs API. - Kliknij Kod autoryzacji Exchange dla tokenów. Spowoduje to wypełnienie pola Token dostępu zawierający token dostępu, którego użyjesz w następnym kroku. Token dostępu wygasa po 60 minutach. Możesz wybrać opcję automatycznego odświeżania tokena przed wygaśnięciem, co spowoduje utworzenie nowego tokena.
Wysyłanie żądania HTTP
Po utworzeniu klucza interfejsu API i tokena dostępu możesz uruchomić w powłoce to polecenie, aby wykonać wywołanie HTTP usługi. W przykładzie poniżej wywołujemy metodę /v1/photo:startUpload
.
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Length: 0'
Przykładowe żądania
Po wysłaniu tego żądania HTTP możesz skorzystać z innych metod. Poniżej wyświetlane są różne połączenia.
Pobieram listę Twoich zdjęć
$ curl --request GET \ --url 'https://streetviewpublish.googleapis.com/v1/photos?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
Pobieram zdjęcie
$ curl --request GET \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \ --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
Przesyłam zdjęcie
Utworzenie zdjęcia wymaga 3 osobnych połączeń. Pierwsze wywołanie zwróci adres URL przesyłania, który jest używany w drugim wywołaniu do przesłania zdjęć. Gdy prześlesz bajty zdjęć, trzecie połączenie prześle ich metadane i zwróci identyfikator zdjęcia.
- Przesyłanie żądania URL-a:
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Length: 0'
- Prześlij bajty zdjęć do adresu URL przesyłania
$ curl --request POST \ --url 'UPLOAD_URL' \ --upload-file 'PATH_TO_FILE' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
- Prześlij metadane zdjęcia
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photo?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "uploadReference": { "uploadUrl": "UPLOAD_URL" }, "pose": { "heading": 105.0, "latLngPair": { "latitude": 46.7512623, "longitude": -121.9376983 } }, "captureTime": { "seconds": 1483202694 }, }'
Aktualizowanie zdjęcia
$ curl --request PUT \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY&updateMask=pose.latLngPair' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "pose": { "latLngPair": { "latitude": 46.7512624, "longitude": -121.9376982 } } }'
Zbiorcze aktualizowanie wielu zdjęć
$ curl --request POST \ --url 'https://streetviewpublish.googleapis.com/v1/photos:batchUpdate?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "updatePhotoRequests": [ { "photo": { "photoId": { "id": "FIRST_PHOTO_ID" }, "pose": { "latLngPair": { "latitude": 37.1701638, "longitude": -122.3624387 } } }, "updateMask": "pose.latLngPair" }, { "photo": { "photoId": { "id": "SECOND_PHOTO_ID" }, "pose": { "latLngPair": { "latitude": 37.1685704, "longitude": -122.3618021 } } }, "updateMask": "pose.latLngPair" } ] }'
Usuwanie zdjęcia
$ curl --request DELETE \ --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
Co to jest updateMask?
updateMask
pozwala zmniejszyć liczbę żądań, jeśli chcesz zaktualizować tylko część zdjęcia, a nie wszystkie. Jeśli nie podasz wartości updateMask
, prośba o zaktualizowanie całego zdjęcia zostanie zaktualizowana. Oznacza to, że jeśli nie ustawisz parametru updateMask
, a w żądaniu brakuje pola pose
, zdjęcie pose
zostanie usunięte. Możliwe wartości dla updateMask
: places, pose.heading, pose.latlngpair, pose.level,
connections
. W updateMask
możesz umieścić wiele wartości rozdzielonych przecinkami.