若要完成对 Street View Publish API 进行基本调用所需的步骤,请按照本教程中的步骤操作。
进行 HTTP 调用
可以使用多种工具调用 Street View Publish API,例如 curl、wget 和 Postman。 在大多数情况下,您需要使用您选择的编程语言来构建客户端应用 但本教程将引导您完成一些基本操作 一条命令
此外,我们还提供了一些客户端库 进行直接 HTTP 调用
前提条件
-
您需要 Google 账号才能访问 Google API 控制台、请求 API 密钥以及注册应用。
-
在 Google Developers Console 中创建一个项目并获取授权凭据,以便您的应用能够提交 API 请求。
-
创建项目后,请确保您的 Street View Publish API 是您应用注册要使用的服务之一:
- 转到 API 控制台,选择您刚刚注册的项目。
- 访问“已启用的 API”页面。确保 Google Street View API 位于已启用的 API 列表中。否则,请打开 API 库并启用该 API。
-
阅读身份验证指南,了解如何实现 OAuth 2.0 授权。
-
熟悉 JavaScript 对象表示法 (JSON) 数据格式的核心概念。JSON 是一种与语言无关的常见数据格式,可通过简单的文本方式来表示任意数据结构。如需了解详情,请参阅 json.org。
获取 API 密钥
为便于进行身份验证和获取配额,您需要通过 Developers Console 生成的凭据来使用 Google Street View Publish API。
- 前往凭据页面 页面。
- 如果您已有 API 密钥,可以使用其值。否则 从新建凭据菜单中选择 API 密钥,以创建新凭据。
获取访问令牌
- 前往 Google Developers OAuth 2.0 Playground。
- 点击设置菜单(右上角的齿轮图标),选中使用您自己的 OAuth 凭据 (Use your own OAuth credentials) 并输入
Client ID
, 相应字段中的Client secret
,然后点击关闭。 <ph type="x-smartling-placeholder"> - 在第 1 步:选择 &授权 API,输入 API 范围
https://www.googleapis.com/auth/streetviewpublish
在 Input your own scope 字段中,点击 Authorize APIs。答 新页面将会打开,以确认您要授权该 API。 - 点击交换令牌的授权代码。这会填充 访问令牌字段,其中包含要在 下一步。访问令牌将在 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。
- 请求上传网址
$ 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'
- 将照片字节上传到上传网址
$ curl --request POST \ --url 'UPLOAD_URL' \ --upload-file 'PATH_TO_FILE' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
- 上传照片的元数据
$ 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
中输入多个以英文逗号分隔的值。