Place Photos (New) ti consente di aggiungere contenuti fotografici di alta qualità alla tua applicazione. Foto del luogo ti consente di accedere a milioni di foto archiviate nel database di Places. Place Photos restituisce un URI a un'immagine bitmap. L'immagine bitmap ha una dimensione massima di 4800 x 4800 pixel.
Richieste di foto del luogo
Per recuperare un'immagine di un luogo:
- Utilizza Dettagli luogo (nuovo) per recuperare un oggetto
Place
utilizzandofetchPlace()
. Assicurati di includere il campoPlace.Field PHOTO_METADATAS
nell'elenco dei campi da includere nell'oggettoPlace
della risposta. - Nel
OnSuccessListener
per il tuoFetchPlaceResponse
, chiamaPlace.getPhotoMetadas()
per ottenere l'oggetto dei metadati della foto di tipoPhotoMetadata
dall'oggettoPlace
della risposta. - Crea un oggetto
FetchResolvedPhotoUriRequest
per effettuare la richiesta e trasmettere l'oggetto metadati della foto, nonché i valori per l'altezza massima, la larghezza massima o entrambi. - Utilizza
PlacesClient.fetchResolvedPhotoUri()
per richiedere l'URI della foto. - Aggiungi un
OnSuccessListener
e ottieni l'URI della foto dall'oggettoFetchResolvedPhotoUriResponse
.
Parametri obbligatori
I parametri obbligatori per
FetchResolvedPhotoUriRequest
sono:
-
Metadati delle foto
L'oggetto dei metadati della foto da restituire.
-
Altezza massima o larghezza massima
Specifica l'altezza e la larghezza massime, in pixel, dell'immagine da restituire. Se l'immagine è più piccola dei valori specificati, verrà restituita l'immagine originale. Se l'immagine è più grande in una delle due dimensioni, verrà ridimensionata in modo che corrisponda alla più piccola delle due dimensioni, mantenendo le proporzioni originali. Entrambe le proprietà di altezza massima e larghezza massima accettano un numero intero compreso tra 1 e 4800. Devi specificare l'altezza massima, la larghezza massima o entrambe.
- Per impostare il parametro di altezza massima, chiama il metodo
setMaxHeight()
durante la creazione dell'oggettoFetchResolvedPhotoUriRequest
. - Per impostare il parametro di larghezza massima, chiama il metodo
setMaxWidth()
durante la creazione dell'oggettoFetchResolvedPhotoUriRequest
.
- Per impostare il parametro di altezza massima, chiama il metodo
Esempi di Place Photos
L'esempio seguente mostra come ottenere un URI di una foto di un luogo.
// 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. } }); });
Attribuzioni
Nella maggior parte dei casi, le foto dei luoghi possono essere utilizzate senza attribuzione o
con l'attribuzione richiesta inclusa nell'immagine. Tuttavia, l'oggetto metadati della foto, di tipo
PhotoMetadata
,
può contenere uno dei due tipi di attribuzioni aggiuntive:
- Attribuzioni, una stringa di attribuzione a cui si accede tramite
PhotoMetadata.getAttributions()
. - AuthorAttributions, un oggetto
AuthorAttributions
a cui si accede tramitePhotoMetadata.getAuthorAttributions()
.
Se l'oggetto PhotoMetadata
restituito include uno dei due tipi di attribuzione, devi
includerla nella tua applicazione ovunque visualizzi l'immagine. Per ulteriori informazioni,
vedi Visualizzazione delle attribuzioni.