进行首次 API 调用

若要完成对 Street View Publish API 进行基本调用所需的步骤,请按照本教程中的步骤操作。

进行 HTTP 调用

可以使用多种工具调用 Street View Publish API,例如 curl、wget 和 Postman。 在大多数情况下,您需要使用您选择的编程语言来构建客户端应用 但本教程将引导您完成一些基本操作 一条命令

此外,我们还提供了一些客户端库 进行直接 HTTP 调用

前提条件

  1. 您需要 Google 账号才能访问 Google API 控制台、请求 API 密钥以及注册应用。

  2. Google Developers Console 中创建一个项目并获取授权凭据,以便您的应用能够提交 API 请求。

  3. 创建项目后,请确保您的 Street View Publish API 是您应用注册要使用的服务之一:

    1. 转到 API 控制台,选择您刚刚注册的项目。
    2. 访问“已启用的 API”页面。确保 Google Street View API 位于已启用的 API 列表中。否则,请打开 API 库并启用该 API。
  4. 阅读身份验证指南,了解如何实现 OAuth 2.0 授权。

  5. 熟悉 JavaScript 对象表示法 (JSON) 数据格式的核心概念。JSON 是一种与语言无关的常见数据格式,可通过简单的文本方式来表示任意数据结构。如需了解详情,请参阅 json.org

获取 API 密钥

为便于进行身份验证和获取配额,您需要通过 Developers Console 生成的凭据来使用 Google Street View Publish API。

  1. 前往凭据页面 页面。
  2. 如果您已有 API 密钥,可以使用其值。否则 从新建凭据菜单中选择 API 密钥,以创建新凭据。

获取访问令牌

  1. 前往 Google Developers OAuth 2.0 Playground
  2. 点击设置菜单(右上角的齿轮图标),选中使用您自己的 OAuth 凭据 (Use your own OAuth credentials) 并输入 Client ID, 相应字段中的 Client secret,然后点击关闭。 <ph type="x-smartling-placeholder">
  3. 第 1 步:选择 &授权 API,输入 API 范围 https://www.googleapis.com/auth/streetviewpublishInput your own scope 字段中,点击 Authorize APIs。答 新页面将会打开,以确认您要授权该 API。
  4. 点击交换令牌的授权代码。这会填充 访问令牌字段,其中包含要在 下一步。访问令牌将在 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'
  

正在上传照片

创建照片需要三个单独的调用。第一次调用将返回上传网址 用于上传照片字节的第二个调用中。上传照片字节后, 第三个调用会上传照片的元数据并返回带照片的 ID。

  1. 请求上传网址
            $ 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. 将照片字节上传到上传网址
            $ 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 中输入多个以英文逗号分隔的值。