地点照片(新)可让您将高品质照片内容添加到 应用。地点照片可让您查看存储在 Google 中的 商家信息数据库。“地点照片”会返回位图图像的 URI。位图 最大尺寸为 4800 x 4800 像素。
“地点照片”请求
要检索地点的图片,请执行以下操作:
- 使用地点详情(新)提取
Place
对象,方法是:fetchPlace()
。 请务必在字段列表中添加Place.Field PHOTO_METADATAS
字段, 添加到响应的Place
对象中。 - 在
OnSuccessListener
供您的FetchPlaceResponse
,调用Place.getPhotoMetadas()
可获取类型为PhotoMetadata
的照片元数据对象 。Place
- 创建一个
FetchResolvedPhotoUriRequest
对象来发出请求,并传递照片元数据对象以及最大高度和/或最大宽度值。 - 使用
PlacesClient.fetchResolvedPhotoUri()
请求照片 URI。 - 添加
OnSuccessListener
并从FetchResolvedPhotoUriResponse
获取照片 URI 对象。
必需参数
使用
FetchResolvedPhotoUriRequest
分别是:
-
照片元数据
要返回的照片的元数据对象。
-
最大高度或最大宽度
指定要返回的图片的最大高度和宽度(以像素为单位)。如果图片小于指定的值,则返回原始图片。如果图片的任何一个尺寸大于该值,系统会将其缩小以匹配两个尺寸中的较小者,但会限制其原始宽高比。最大高度和最大宽度属性均接受 1 到 4800 之间的整数。必须指定最大高度和/或最大宽度。
- 若要设置最大高度参数,请在构建
FetchResolvedPhotoUriRequest
对象时调用setMaxHeight()
方法。 - 如需设置最大宽度参数,请在构建
FetchResolvedPhotoUriRequest
对象时调用setMaxWidth()
方法。
- 若要设置最大高度参数,请在构建
地点照片示例
以下示例演示了如何获取地点照片 URI。
// Define a Place ID. final String placeId = "INSERT_PLACE_ID_HERE"; // Specify fields. Requests for photos must always have the PHOTO_METADATAS field. final List<Place.Field> fields = Collections.singletonList(Place.Field.PHOTO_METADATAS); // Get a Place object (this example uses fetchPlace(), but you can also use findCurrentPlace()) final FetchPlaceRequest placeRequest = FetchPlaceRequest.newInstance(placeId, fields); placesClient.fetchPlace(placeRequest).addOnSuccessListener((response) -> { final Place place = response.getPlace(); // Get the photo metadata. final List<PhotoMetadata> metadata = place.getPhotoMetadatas(); if (metadata == null || metadata.isEmpty()) { Log.w(TAG, "No photo metadata."); return; } final PhotoMetadata photoMetadata = metadata.get(0); // Get the attribution text and author attributions. final String attributions = photoMetadata.getAttributions(); final AuthorAttributions authorAttributions = photoMetadata.getAuthorAttributions(); // Create a FetchResolvedPhotoUriRequest. final FetchResolvedPhotoUriRequest photoRequest = FetchResolvedPhotoUriRequest.builder(photoMetadata) .setMaxWidth(500) .setMaxHeight(300) .build(); // Request the photo URI placesClient.fetchResolvedPhotoUri(photoRequest).addOnSuccessListener((fetchResolvedPhotoUriResponse) -> { Uri uri = fetchResolvedPhotoUriResponse.getUri(); RequestOptions requestOptions = new RequestOptions().override(Target.SIZE_ORIGINAL); Glide.with(this).load(uri).apply(requestOptions).into(imageView); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { final ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + exception.getMessage()); final int statusCode = apiException.getStatusCode(); // TODO: Handle error with given status code. } }); });
归因
在大多数情况下,使用地点照片时可以不包含提供方说明,或
图片中包含的必需署名。然而,照片元数据对象类型为
PhotoMetadata
、
可以包含以下两种类型的附加提供方说明之一:
- Attributions:
PhotoMetadata.getAttributions()
。 - AuthorAttributions 和
AuthorAttributions
对象PhotoMetadata.getAuthorAttributions()
。
如果返回的 PhotoMetadata
对象包含任一类型的归因,您必须
在应用中显示图片的任何位置添加提供方说明。如需更多信息
请参阅显示提供方说明。