Pierwsze wywołania interfejsu API

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

  1. Musisz mieć konto Google, aby uzyskać dostęp do konsoli interfejsu Google API, poprosić o klucz interfejsu API i zarejestrować aplikację.

  2. Utwórz projekt w Google Developers Console i uzyskaj dane logowania, aby Twoja aplikacja mogła przesyłać żądania do interfejsu API.

  3. Po utworzeniu projektu upewnij się, że interfejs Street View Publish API jest jedną z usług, które są zarejestrowane w Twojej aplikacji:

    1. Otwórz Konsolę interfejsów API i wybierz zarejestrowany przed chwilą projekt.
    2. 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.
  4. Przeczytaj przewodnik uwierzytelniania, aby dowiedzieć się, jak wdrożyć autoryzację OAuth 2.0.

  5. 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.

  1. Otwórz stronę Dane logowania w Developer Console.
  2. 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

  1. Otwórz Google Play OAuth 2.0 Playground.
  2. 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 i Client secret w odpowiednich polach, a następnie kliknij Zamknij.
  3. W Kroku 1. Wybierz &autoryzuj interfejsy API, wpisz zakres APIhttps://www.googleapis.com/auth/streetviewpublishw polu Wpisz własne zakresy i kliknijAutoryzuj interfejsy API. Otworzy się nowa strona z potwierdzeniem, że chcesz autoryzować interfejs API.
  4. 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.

  1. 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'
          
  2. 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'
          
  3. 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.