Place Photos (nouveau) vous permet d'ajouter du contenu photographique de haute qualité à votre application. Place Photos vous donne accès à des millions de photos stockées dans la base de données Places. Place Photos renvoie un URI vers une image bitmap. La taille maximale de l'image bitmap est de 4 800 x 4 800 pixels.
Requêtes Place Photos
Pour récupérer une image d'un lieu :
- Utilisez Place Details (New) pour récupérer un objet
Placeà l'aide defetchPlace(). Veillez à inclure le champPlace.Field PHOTO_METADATASdans la liste des champs à inclure dans l'objet de réponsePlace. - Dans
OnSuccessListenerpour votreFetchPlaceResponse, appelezPlace.getPhotoMetadas()pour obtenir l'objet de métadonnées photo de typePhotoMetadataà partir de l'objet de réponsePlace. - Créez un objet
FetchResolvedPhotoUriRequestpour effectuer la requête et transmettez l'objet de métadonnées de la photo, ainsi que les valeurs de hauteur maximale, de largeur maximale ou les deux. - Utilisez
PlacesClient.fetchResolvedPhotoUri()pour demander l'URI de la photo. - Ajoutez un
OnSuccessListeneret obtenez l'URI de la photo à partir de l'objetFetchResolvedPhotoUriResponse.
Paramètres obligatoires
Les paramètres requis pour FetchResolvedPhotoUriRequest sont les suivants :
-
Métadonnées de photos
Objet de métadonnées de la photo à renvoyer.
-
Hauteur ou largeur maximales
Spécifie la hauteur et la largeur maximales, en pixels, de l'image à renvoyer. Si l'image est plus petite que les valeurs spécifiées, l'image d'origine est renvoyée. Si l'image est plus grande dans l'une ou l'autre dimension, elle sera mise à l'échelle pour correspondre à la plus petite des deux dimensions, tout en conservant son format d'origine. Les propriétés de hauteur et de largeur maximales acceptent un entier compris entre 1 et 4 800. Vous devez spécifier une hauteur maximale, une largeur maximale ou les deux.
- Pour définir le paramètre de hauteur maximale, appelez la méthode
setMaxHeight()lors de la création de l'objetFetchResolvedPhotoUriRequest. - Pour définir le paramètre de largeur maximale, appelez la méthode
setMaxWidth()lors de la création de l'objetFetchResolvedPhotoUriRequest.
- Pour définir le paramètre de hauteur maximale, appelez la méthode
Exemples de photos de lieux
L'exemple suivant montre comment obtenir l'URI d'une photo de lieu.
// 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 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. } }); });
Attributions
Dans la plupart des cas, les photos de lieu peuvent être utilisées sans attribution, ou contiendront déjà l'attribution. Toutefois, l'objet de métadonnées de photo, de type PhotoMetadata, peut contenir l'un des deux types d'attributions supplémentaires suivants :
- Attributions : chaîne d'attribution accessible par
PhotoMetadata.getAttributions(). - AuthorAttributions, un objet
AuthorAttributionsauquel on accède parPhotoMetadata.getAuthorAttributions().
Si l'objet PhotoMetadata renvoyé inclut l'un ou l'autre de ces types d'attribution, vous devez l'inclure dans votre application partout où vous affichez l'image. Pour en savoir plus, consultez Afficher les attributions.