Place Photos (Nouveau) vous permet d'ajouter des photos de haute qualité à votre application. Place Photos vous donne accès aux millions de photos stockées dans la base de données Places. Place Photos renvoie un URI vers une image bitmap. Bitmap ne doit pas dépasser 4 800 x 4 800 pixels.
Requêtes Place Photos
Pour récupérer l'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 pour inclure dans l'objetPlace
de la réponse. - Dans
OnSuccessListener
pour votreFetchPlaceResponse
, appelezPlace.getPhotoMetadas()
pour obtenir l'objet de métadonnées de photo de typePhotoMetadata
à partir de l'objet de réponsePlace
. - Créez un objet
FetchResolvedPhotoUriRequest
pour envoyer la requête et transmettre l'objet de métadonnées photo, ainsi que les valeurs de hauteur maximale, de largeur maximale ou les deux. - Utiliser
PlacesClient.fetchResolvedPhotoUri()
pour demander l'URI de la photo. - Ajoutez un élément
OnSuccessListener
et récupérez l'URI de la photo à partir deFetchResolvedPhotoUriResponse
. .
Paramètres obligatoires
Les paramètres requis pour
FetchResolvedPhotoUriRequest
sont:
-
Métadonnées de la photo
Objet de métadonnées de la photo à renvoyer.
-
Hauteur maximale ou largeur maximale
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 des dimensions, elle est mise à l'échelle pour correspondre à la plus petite des deux dimensions, dans un format d'origine. Les propriétés de hauteur maximale et de largeur maximale acceptent un nombre entier compris entre 1 et 4 800. Vous devez spécifier une hauteur et/ou une largeur maximales.
- Pour définir le paramètre de hauteur maximale, appelez la méthode
setMaxHeight()
lorsque vous créez l'objetFetchResolvedPhotoUriRequest
. - Pour définir le paramètre de largeur maximale, appelez la méthode
setMaxWidth()
lorsque vous créez l'objetFetchResolvedPhotoUriRequest
.
- Pour définir le paramètre de hauteur maximale, appelez la méthode
Exemples Place Photo
L'exemple suivant montre comment obtenir un URI de 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
l'attribution obligatoire incluse dans l'image. Cependant, l'objet de métadonnées de photo, de type
PhotoMetadata
,
peut contenir l'un des deux types d'attributions supplémentaires suivants:
- Attributions, une chaîne d'attribution à laquelle les utilisateurs peuvent accéder
PhotoMetadata.getAttributions()
- AuthorAttributions, une
AuthorAttributions
objet auquel accèdePhotoMetadata.getAuthorAttributions()
.
Si l'objet PhotoMetadata
renvoyé inclut l'un ou l'autre des types d'attributions, vous devez
Incluez l'attribution dans votre application, partout où vous affichez l'image. Pour plus d'informations,
consultez la section Afficher les attributions.