您正在查看 Google Photos Library API 的旧版文档。
添加扩充项
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
扩充项可让您的应用控制
Google 相册中的影集内。通过自适应展示广告,您可以向用户展示
通过文字或位置注释和顺序/分组来提供更多背景信息
共同讲述故事的图片。
所需的授权范围
如需添加扩充项,至少需要以下范围之一:
photoslibrary.appendonly
photoslibrary.library
photoslibrary.sharing
对于每个范围,enrichAlbum
调用仅限于创建的影集
。
使用 .sharing
范围时,enrichAlbum
会受到限制
开发者代表共享影集的所有者。
扩充项类型
Google 相册在影集中支持三种类型的扩充项:文本、
位置和地图。
文本扩充项
文本扩充项是纯文本字符串,可插入以注释
影集。
位置扩充项
位置扩充项是一种标记和可插入地点的名称
为营业地点添加注释。
地图扩充项
地图扩充项是具有指定起点和终点的地图,
已插入影集中。
位置
如要插入媒体内容和影集扩充项,请指定影集的位置。
对于媒体内容,此位置是可选的,但必须为影集指定
扩充属性。
仅当满足以下条件时,才能指定位置:
创建媒体项
或添加扩充项。影集中的现有媒体内容无法重新整理,因此
在添加项目时设置其位置非常重要。
影集开头
媒体/扩充项内容可作为绝对内容添加到影集开头
定位。
影集末尾
媒体/扩充项内容可作为绝对内容添加到影集末尾
定位。
媒体/扩充项内容可相对于媒体项在下列位置开始添加
它在影集中的位置。
扩充项内容的相对位置
可相对于扩充项内容的开头添加媒体/扩充项内容
。
向影集添加扩充项
一次只能添加一个扩充项,必须将其添加到影集中的某个位置。
要向影集添加扩充项,请调用
albums.addEnrichment
。
如果请求成功,则返回扩充项内容的 id
,
可用于定位媒体项或其他扩充项。
REST
以下是一个 POST 请求:
POST https://photoslibrary.googleapis.com/v1/albums/album-id:addEnrichment
Content-type: application/json
Authorization: Bearer oauth2-token
request-body
请求正文包含扩充项内容及其位置:
{
"newEnrichmentItem": {
enrichment-to-be-added
},
"albumPosition": {
position-of-enrichment
}
以下是示例响应:
{
"enrichmentItem": {
"id": "enrichment-item-id",
}
}
Java
try {
// Create the enrichment using the NewEnrichmentItemFactory helper
NewEnrichmentItem newEnrichmentItem = NewEnrichmentItemFactory.createTextEnrichment("");
// Set the position of the enrichment within the album
AlbumPosition albumPosition = AlbumPositionFactory.createFirstInAlbum();
// To add an enrichment, specify the album, the enrichment item,
// and the position in the album where the enrichment is to be added
AddEnrichmentToAlbumResponse response = photosLibraryClient
.addEnrichmentToAlbum(albumId, newEnrichmentItem, albumPosition);
// The response contains an EnrichmentItem
// whose ID can be used to position media items or other enrichments
EnrichmentItem enrichmentItem = response.getEnrichmentItem();
String itemId = enrichmentItem.getId();
} catch (ApiException e) {
// Handle error
}
PHP
// Create the enrichment item using the PhotosLibraryResourceFactory helper
$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithText("");
// ...
// Set the position of the enrichment within the album
$position = new AlbumPosition();
// ...
try {
// To add an enrichment, specify the album, the enrichment item,
// and the position in the album where the enrichment is to be added
$response = $photosLibraryClient->addEnrichmentToAlbum($albumId, $newEnrichmentItem, $position);
// The response contains an EnrichmentItem
// whose ID can be used to position media items or other enrichments
$enrichmentItem = $response->getEnrichmentItem();
$itemId = $enrichmentItem->getId();
} catch (\Google\ApiCore\ApiException $e) {
// Handle error
}
支持的扩充项
文本扩充项
文本扩充项包含单个文本字符串(不超过 1000 个字符),如
如以下示例中所示:
REST
{
"text": "Text to be shown"
}
Java
// Use the NewEnrichmentItemFactory helper to create a text enrichment item
NewEnrichmentItem newEnrichmentItem =
NewEnrichmentItemFactory.createTextEnrichment("text to be shown");
PHP
$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithText("text to be shown");
位置扩充项
位置扩充项由任意位置名称、纬度和
经度位置。locationName
不得超过 500 个字符。
REST
{
"location": {
"locationName": "Australia",
"latlng": {
"latitude": "-21.197",
"longitude": "95.821"
}
}
}
Java
// Use the NewEnrichmentItemFactory helper to create a location enrichment
// with the name, latitude, and longitude of the location
NewEnrichmentItem newEnrichmentItem =
NewEnrichmentItemFactory.createLocationEnrichment("Australia", -21.197, 95.821);
PHP
// Create a new location object and set the name, latitude, and longitude of the location
$newLocation = new Location();
$newLocation->setLocationName("Australia");
$newLocation->setLatlng((new LatLng())->setLatitude(-21.197)->setLongitude(95.821));
$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithLocation($newLocation);
地图扩充项
地图扩充项会显示两个位置,每个位置均由名称和纬度组成
和经度。与位置扩充项类似,locationName
source 和 destination
不得超过 500 个字符。
REST
{
"origin": {
"locationName": "Australia",
"latlng": {
"latitude": "-21.197",
"longitude": "95.821"
}
},
"destination": {
"locationName": "San Francisco",
"latlng": {
"latitude": "37.757",
"longitude": "122.507"
}
}
}
Java
// Use the NewEnrichmentItemFactory helper to create a map enrichment item for
// an origin and a destination location
NewEnrichmentItem newEnrichmentItem = NewEnrichmentItemFactory.createMapEnrichment(
"Australia", -21.197, 95.821, // origin
"San Francisco", 37.757, 122.507 // destination
);
PHP
// Create two new location objects to create a map enrichment item
// for an origin and a destination location
$locationAustralia = new Location();
$locationAustralia->setLocationName("Australia");
$locationAustralia->setLatlng((new LatLng())->setLatitude(-21.197)->setLongitude(95.821));
$locationSanFrancisco = new Location();
$locationSanFrancisco->setLocationName("San Francisco");
$locationSanFrancisco->setLatlng((new LatLng())->setLatitude(37.757)->setLongitude(122.507));
$newEnrichmentItem =
PhotosLibraryResourceFactory::newEnrichmentItemWithMap($locationAustralia, $locationSanFrancisco);
支持的定位
影集开头
FIRST_IN_ALBUM
位置指的是影集的开头。已找到的项
示例如下:
REST
{
"position": "FIRST_IN_ALBUM",
}
Java
AlbumPosition albumPosition = AlbumPositionFactory.createFirstInAlbum();
PHP
$albumPosition = new AlbumPosition();
$albumPosition->setPosition(PositionType::FIRST_IN_ALBUM);
影集末尾
LAST_IN_ALBUM
位置指的是影集的末尾。位于此处的项
最后显示给用户
REST
{
"position": "LAST_IN_ALBUM",
}
Java
AlbumPosition albumPosition = AlbumPositionFactory.createLastInAlbum();
PHP
$albumPosition = new AlbumPosition();
$albumPosition->setPosition(PositionType::LAST_IN_ALBUM);
指定位置 relativeMediaItem
是指相对于
媒体项。这些内容会添加到指定媒体项之后。
REST
{
"position": "after-media-item",
"relativeMediaItemId": "media-item-id"
}
Java
AlbumPosition albumPosition = AlbumPositionFactory.createAfterMediaItem(mediaItemId);
PHP
$albumPosition = PhotosLibraryResourceFactory::albumPositionAfterMediaItem($mediaItemId);
扩充项内容的相对位置
指定 relativeEnrichmentItemId
是指相对于
扩充项内容。这些内容会添加到指定扩充项内容之后。
REST
{
"position": "after-enrichment-item",
"relativeEnrichmentItemId": "enrichment-item-id"
}
Java
AlbumPosition albumPosition = AlbumPositionFactory.createAfterEnrichmentItem(enrichmentItemId);
PHP
$albumPosition = PhotosLibraryResourceFactory::albumPositionAfterEnrichmentItem($enrichmentItemId);
修改扩充项
目前无法修改扩充项。但是,一旦扩充
已创建并添加到影集后,用户可以修改扩充项
。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-09-04。
[null,null,["最后更新时间 (UTC):2025-09-04。"],[[["\u003cp\u003eEnrichments give your application control over the structure and presentation of photos within Google Photos albums by adding context through annotations and ordering.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Photos supports three types of enrichments: text, locations (markers with place names), and maps (showing an origin and destination).\u003c/p\u003e\n"],["\u003cp\u003eWhen adding enrichments, you must specify their position in the album, which can be at the start, end, or relative to an existing media or enrichment item.\u003c/p\u003e\n"],["\u003cp\u003eEnrichments are added individually using the \u003ccode\u003ealbums.addEnrichment\u003c/code\u003e call, requiring specific authorization scopes.\u003c/p\u003e\n"],["\u003cp\u003eAlthough enrichments can't be modified programmatically, users can edit them directly through the Google Photos app.\u003c/p\u003e\n"]]],["Enrichments allow control over photo presentation in Google Photos albums by adding context and organizing images. Three enrichment types are supported: text, location, and map. Adding enrichments requires specific authorization scopes and is restricted to albums the app created. Enrichments are added one at a time via `albums.addEnrichment`, specifying the enrichment item and its position within the album. Positions can be at the start or end of the album, or relative to media or other enrichment items. The enrichment item ID returned can be used to position items.\n"],null,["Enrichments let your application control the structure and presentation of\nphotos within an album in Google Photos. They allow you to present the user\nwith additional context through text or location annotations and order/group\nimages that tell a story together.\n\nRequired authorization scope\n\nTo add enrichments, at least one of the following scopes is required:\n\n- `photoslibrary.appendonly`\n- `photoslibrary.library`\n- `photoslibrary.sharing`\n\nFor each scope, the `enrichAlbum` call is restricted to only the albums created\nby the app.\n\nWhen using the `.sharing` scope, `enrichAlbum` is restricted to circumstances\nwhere the developer is acting on behalf of the owner of the shared album.\n\nEnrichment types\n\nGoogle Photos supports three types of enrichments in albums: text,\nlocations, and maps.\n\nText enrichments\n\nA text enrichment is a plain text string that can be inserted to annotate the\nalbum.\n\nLocation enrichments\n\nA location enrichment is a marker and the name of the place that can be inserted\nto annotate a location.\n\nMap enrichments\n\nA map enrichment is a map with a specified origin and destination that can be\ninserted in the album.\n\nPositions\n\nTo insert media items and album enrichments, specify the position of the album.\nA position is optional for media items, but must be specified for album\nenrichment.\n\nA position can only be specified when\n[creating a media item](/photos/library/guides/upload-media#creating-media-item)\nor adding enrichments. Existing media items in an album can't be reorganized, so\nit's important to set the position of an item when it's being added.\n\nStart of album\n\nA media/enrichment item can be added to the start of the album as absolute\npositioning.\n\nEnd of album\n\nA media/enrichment item can be added to the end of the album as absolute\npositioning.\n\nRelative to media item\n\nA media/enrichment item can be added relative to a media item beginning after\nits position in the album.\n\nRelative to enrichment item\n\nA media/enrichment item can be added relative to an enrichment item beginning\nafter its position in the album.\n\nAdding enrichments to album\n\nEnrichments are added one at a time and must be added to a position in an album.\nTo add enrichments to an album, call\n[`albums.addEnrichment`](/photos/library/legacy/reference/rest/v1/albums/addEnrichment).\n\nIf the request is successful, it returns the `id` of the enrichment item, which\ncan be used to position media items or other enrichments. \n\nREST\n\nHere is a POST request: \n\n```\nPOST https://photoslibrary.googleapis.com/v1/albums/album-id:addEnrichment\nContent-type: application/json\nAuthorization: Bearer oauth2-token\n\u003cvar translate=\"no\"\u003erequest-body\u003c/var\u003e\n```\n\nThe request body consists of the enrichment item and its position: \n\n```restructuredtext\n{\n \"newEnrichmentItem\": {\n enrichment-to-be-added\n },\n \"albumPosition\": {\n position-of-enrichment\n}\n```\n\nHere is a sample response: \n\n```restructuredtext\n{\n \"enrichmentItem\": {\n \"id\": \"enrichment-item-id\",\n }\n}\n```\n\nJava \n\n```java\ntry {\n // Create the enrichment using the NewEnrichmentItemFactory helper\n NewEnrichmentItem newEnrichmentItem = NewEnrichmentItemFactory.createTextEnrichment(\"\");\n\n // Set the position of the enrichment within the album\n AlbumPosition albumPosition = AlbumPositionFactory.createFirstInAlbum();\n\n // To add an enrichment, specify the album, the enrichment item,\n // and the position in the album where the enrichment is to be added\n AddEnrichmentToAlbumResponse response = photosLibraryClient\n .addEnrichmentToAlbum(albumId, newEnrichmentItem, albumPosition);\n // The response contains an EnrichmentItem\n // whose ID can be used to position media items or other enrichments\n EnrichmentItem enrichmentItem = response.getEnrichmentItem();\n String itemId = enrichmentItem.getId();\n} catch (ApiException e) {\n // Handle error\n}\n```\n\nPHP \n\n```php\n// Create the enrichment item using the PhotosLibraryResourceFactory helper\n$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithText(\"\");\n// ...\n// Set the position of the enrichment within the album\n$position = new AlbumPosition();\n// ...\ntry {\n // To add an enrichment, specify the album, the enrichment item,\n // and the position in the album where the enrichment is to be added\n $response = $photosLibraryClient-\u003eaddEnrichmentToAlbum($albumId, $newEnrichmentItem, $position);\n // The response contains an EnrichmentItem\n // whose ID can be used to position media items or other enrichments\n $enrichmentItem = $response-\u003egetEnrichmentItem();\n $itemId = $enrichmentItem-\u003egetId();\n\n} catch (\\Google\\ApiCore\\ApiException $e) {\n // Handle error\n}\n```\n\nSupported enrichments\n\nText enrichments\n\nText enrichments contain a single text string (no more than 1000 characters), as\nshown in the following example: \n\nREST \n\n```restructuredtext\n{\n \"text\": \"Text to be shown\"\n}\n```\n\nJava \n\n```java\n// Use the NewEnrichmentItemFactory helper to create a text enrichment item\nNewEnrichmentItem newEnrichmentItem =\n NewEnrichmentItemFactory.createTextEnrichment(\"text to be shown\");\n```\n\nPHP \n\n```php\n$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithText(\"text to be shown\");\n```\n\nLocation enrichments\n\nLocation enrichments consist of an arbitrary location name and the latitude and\nlongitude position. The `locationName` is limited to 500 characters. \n\nREST \n\n```restructuredtext\n{\n \"location\": {\n \"locationName\": \"Australia\",\n \"latlng\": {\n \"latitude\": \"-21.197\",\n \"longitude\": \"95.821\"\n }\n }\n}\n```\n\nJava \n\n```java\n// Use the NewEnrichmentItemFactory helper to create a location enrichment\n// with the name, latitude, and longitude of the location\nNewEnrichmentItem newEnrichmentItem =\n NewEnrichmentItemFactory.createLocationEnrichment(\"Australia\", -21.197, 95.821);\n```\n\nPHP \n\n```php\n// Create a new location object and set the name, latitude, and longitude of the location\n$newLocation = new Location();\n$newLocation-\u003esetLocationName(\"Australia\");\n$newLocation-\u003esetLatlng((new LatLng())-\u003esetLatitude(-21.197)-\u003esetLongitude(95.821));\n\n$newEnrichmentItem = PhotosLibraryResourceFactory::newEnrichmentItemWithLocation($newLocation);\n```\n\nMap enrichments\n\nMap enrichments show two locations, each consisting of a name and the latitude\nand longitude. Similar to the location enrichment, the `locationName` within the\norigin and `destination` is limited to 500 characters. \n\nREST \n\n```restructuredtext\n{\n \"origin\": {\n \"locationName\": \"Australia\",\n \"latlng\": {\n \"latitude\": \"-21.197\",\n \"longitude\": \"95.821\"\n }\n },\n \"destination\": {\n \"locationName\": \"San Francisco\",\n \"latlng\": {\n \"latitude\": \"37.757\",\n \"longitude\": \"122.507\"\n }\n }\n}\n```\n\nJava \n\n```java\n// Use the NewEnrichmentItemFactory helper to create a map enrichment item for\n// an origin and a destination location\nNewEnrichmentItem newEnrichmentItem = NewEnrichmentItemFactory.createMapEnrichment(\n \"Australia\", -21.197, 95.821, // origin\n \"San Francisco\", 37.757, 122.507 // destination\n);\n```\n\nPHP \n\n```php\n// Create two new location objects to create a map enrichment item\n// for an origin and a destination location\n$locationAustralia = new Location();\n$locationAustralia-\u003esetLocationName(\"Australia\");\n$locationAustralia-\u003esetLatlng((new LatLng())-\u003esetLatitude(-21.197)-\u003esetLongitude(95.821));\n\n$locationSanFrancisco = new Location();\n$locationSanFrancisco-\u003esetLocationName(\"San Francisco\");\n$locationSanFrancisco-\u003esetLatlng((new LatLng())-\u003esetLatitude(37.757)-\u003esetLongitude(122.507));\n\n$newEnrichmentItem =\n PhotosLibraryResourceFactory::newEnrichmentItemWithMap($locationAustralia, $locationSanFrancisco);\n```\n\nSupported positioning\n\nStart of album\n\nThe position `FIRST_IN_ALBUM` refers to the start of the album. Items located\nhere are shown to the user first: \n\nREST \n\n```restructuredtext\n{\n \"position\": \"FIRST_IN_ALBUM\",\n}\n```\n\nJava \n\n```java\nAlbumPosition albumPosition = AlbumPositionFactory.createFirstInAlbum();\n```\n\nPHP \n\n```php\n$albumPosition = new AlbumPosition();\n$albumPosition-\u003esetPosition(PositionType::FIRST_IN_ALBUM);\n```\n\nEnd of album\n\nThe position `LAST_IN_ALBUM` refers to the end of the album. Items located here\nare shown to the user last. \n\nREST \n\n```restructuredtext\n{\n \"position\": \"LAST_IN_ALBUM\",\n}\n```\n\nJava \n\n```java\nAlbumPosition albumPosition = AlbumPositionFactory.createLastInAlbum();\n```\n\nPHP \n\n```php\n$albumPosition = new AlbumPosition();\n$albumPosition-\u003esetPosition(PositionType::LAST_IN_ALBUM);\n```\n\nRelative to media item\n\nSpecifying the position `relativeMediaItem` refers to a position relative to a\nmedia item. The items are added after the specified media item. \n\nREST \n\n```restructuredtext\n{\n \"position\": \"after-media-item\",\n \"relativeMediaItemId\": \"media-item-id\"\n}\n```\n\nJava \n\n```java\nAlbumPosition albumPosition = AlbumPositionFactory.createAfterMediaItem(mediaItemId);\n```\n\nPHP \n\n```php\n$albumPosition = PhotosLibraryResourceFactory::albumPositionAfterMediaItem($mediaItemId);\n```\n\nRelative to enrichment item\n\nSpecifying a `relativeEnrichmentItemId` refers to a position relative to an\nenrichment item. The items are added after the specified enrichment item. \n\nREST \n\n```restructuredtext\n{\n \"position\": \"after-enrichment-item\",\n \"relativeEnrichmentItemId\": \"enrichment-item-id\"\n}\n```\n\nJava \n\n```java\nAlbumPosition albumPosition = AlbumPositionFactory.createAfterEnrichmentItem(enrichmentItemId);\n```\n\nPHP \n\n```php\n$albumPosition = PhotosLibraryResourceFactory::albumPositionAfterEnrichmentItem($enrichmentItemId);\n```\n\nModifying enrichments\n\nCurrently, there is no way to modify enrichments. However, once an enrichment\nhas been created and added to an album, the user can modify the enrichments\nthrough the Google Photos app."]]