要完成对 Street View Publish API 进行基本调用所需的步骤,请按照本教程中的步骤操作。
进行 HTTP 调用
您可以使用多种工具(例如 curl、wget 和 Postman)调用 Street View Publish API。 在大多数情况下,您需要使用自己选择的编程语言来构建使用 API 的客户端应用,但本教程将指导您逐步完成各个命令的学习。
如果您不想进行直接 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 密钥
出于身份验证和配额目的,您需要将 Google Street View Publish API 与从 Developers Console 生成的凭据结合使用。
- 导航到 Developers Console 中的凭据页面。
- 如果您已有 API 密钥,则可以使用该密钥中的值。否则,请从 New credentials 菜单中选择 API key 创建新 API 密钥。
获取访问令牌
- 导航到 Google Developers OAuth 2.0 Playground。
- 点击设置菜单(右上角的齿轮图标),勾选使用您自己的 OAuth 凭据,在相应字段中输入您的
Client ID
和Client secret
,然后点击关闭。 - 在第 1 步:选择授权 API 下,在输入您自己的范围字段中输入 API 范围
https://www.googleapis.com/auth/streetviewpublish
,然后点击授权 API。系统会打开一个新的页面,以确认您要授权该 API。 - 点击交换令牌的授权代码。这将填充访问令牌字段,其中包含要在下一步中使用的访问令牌。访问令牌会在 60 分钟后过期。您可以选择在令牌过期前自动刷新令牌,这样会创建一个新令牌。
发送 HTTP 请求
获得 API 密钥和访问令牌后,您可以在 shell 上运行以下命令以对服务执行 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 来上传照片字节。照片字节上传后,第三次调用会上传照片的元数据并返回照片 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
中输入多个以英文逗号分隔的值。