最初の API 呼び出しを行う

Street View Publish API の基本的な呼び出しに必要な手順を完了するには、このチュートリアルの手順を行います。

HTTP 呼び出しを行う

Street View Publish API は、curl、wget、Postman などの複数のツールを使用して呼び出すことができます。ほとんどの場合、任意のプログラミング言語を使用して、API を使用するクライアント アプリケーションを構築します。このチュートリアルでは、個々のコマンドを使用して、基本的な操作を説明します。

Google では、直接 HTTP 呼び出しを行わない場合は、クライアント ライブラリも提供しています。

Prerequisites

  1. Google API Console へのアクセス、API キーのリクエスト、アプリケーションの登録を行うには、Google アカウントが必要です。

  2. Google Developers Console でプロジェクトを作成し、アプリケーションが API リクエストを送信できるように認証情報を取得します。

  3. プロジェクトを作成したら、ストリートビュー Publish API がアプリケーション用に登録されているサービスの 1 つであることを確認します。

    1. API Console に移動し、登録したプロジェクトを選択します。
    2. [有効な API] ページに移動します。Google Street View API が、有効な API のリストに含まれていることを確認します。そうでない場合は、API ライブラリを開いて、API を有効にします。
  4. OAuth 2.0 認証の実装方法については、認証のガイドをご覧ください。

  5. JavaScript Object Notation(JSON)データ形式の基本コンセプトを理解できます。JSON は言語に依存しない一般的なデータ形式で、任意のデータ構造をシンプルなテキストで表現します。詳しくは json.org をご覧ください。

API キーを取得する

認証と割り当てを行うには、Google Street View Publish API で Developers Console から生成した認証情報を使用する必要があります。

  1. Developers Console の [認証情報] ページに移動します。
  2. API キーをすでに取得している場合は、その値を使用できます。それ以外の場合は、[新しい認証情報] メニューから [API キー] を選択して新しい API キーを作成します。

アクセス トークンを取得する

  1. Google Developers OAuth 2.0 Playground に移動します。
  2. 設定メニュー(右上の歯車アイコン)をクリックし、[Use your own OAuth credentials] をオンにして、対応するフィールドに Client IDClient secret を入力し、[Close] をクリックします。
  3. [Step 1: Select & authorization APIs] で、[Input your own scopes] に API スコープ https://www.googleapis.com/auth/streetviewpublish を入力し、[Authorize APIs] をクリックします。新しいページが開き、API を承認することを確認できます。
  4. [Exchange authorization code for tokens] をクリックします。これにより、[アクセス トークン] フィールドに値が入力され、次の手順で使用するアクセス トークンが入力されます。アクセス トークンの有効期限は 60 分です。有効期限が切れる前にトークンを自動更新するオプションを選択できます。これにより、新しいトークンが作成されます。

HTTP リクエストを送信する

API キーとアクセス トークンを取得したら、シェルで次のコマンドを実行して、サービスへの HTTP 呼び出しを実行できます。下の例では、/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'
  

サンプル リクエスト

上記の HTTP リクエストの送信に問題がなければ、いくつかの方法をお試しください。以下に、さまざまな呼び出しを示します。

写真のリストを表示する

    $ curl --request GET \
    --url 'https://streetviewpublish.googleapis.com/v1/photos?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
  

写真の取得

    $ curl --request GET \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
  

写真のアップロード

写真を作成するには、3 回の呼び出しが必要です。最初の呼び出しでアップロード URL が返され、2 回目の呼び出しで写真のバイトのアップロードに使用されます。写真バイトがアップロードされると、3 回目の呼び出しで写真のメタデータがアップロードされ、写真 ID が返されます。

  1. アップロード URL をリクエストする
            $ 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. アップロード URL に写真のバイト数をアップロードします。
            $ curl --request POST \
            --url 'UPLOAD_URL' \
            --upload-file 'PATH_TO_FILE' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
          
  3. 写真のメタデータをアップロードする
            $ 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
                      },
                    }'
          

写真を更新する

   $ 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
                 }
               }
             }'
  

複数の写真の一括更新

   $ 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"
                  }
              ]
          }'
  

写真を削除する

    $ curl --request DELETE \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
  

updateMask とは

updateMask を使用すると、写真の一部ではなくすべての写真を更新する場合に、リクエストを小さくすることができます。updateMask を使用しないと、リクエストによって写真全体が更新されます。つまり、updateMask を設定せず、リクエストに pose がない場合、写真の pose は消去されます。updateMask に有効な値は places, pose.heading, pose.latlngpair, pose.level, connections です。updateMask には複数のカンマ区切り値を指定できます。