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_METADATAS
dans la liste des champs à inclure dans l'objet de réponsePlace
. - Dans
OnSuccessListener
pour 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
FetchResolvedPhotoUriRequest
pour 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
OnSuccessListener
et 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 la hauteur maximale, la 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 (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. } }); });
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
AuthorAttributions
auquel 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.