Place Photo (Novità) ti consente di aggiungere contenuti fotografici di alta qualità al tuo un'applicazione. Place Photo ti dà accesso ai milioni di foto archiviate in il database di Places. Place Photo restituisce un URI a un'immagine bitmap. Bitmap l'immagine ha una dimensione massima di 4800 x 4800 pixel.
Richieste di Place Photo
Per recuperare un'immagine di un luogo:
- Utilizza Place Details (New) (Dettagli luogo) per recuperare un oggetto
Place
utilizzandofetchPlace()
. Assicurati di includere il campoPlace.Field PHOTO_METADATAS
nell'elenco dei campi da includi nell'oggettoPlace
della risposta. - Nella
OnSuccessListener
per il tuoFetchPlaceResponse
, chiamaPlace.getPhotoMetadas()
per ottenere l'oggetto metadati delle foto di tipoPhotoMetadata
dall'oggetto rispostaPlace
. - Crea un oggetto
FetchResolvedPhotoUriRequest
per effettuare la richiesta e passare l'oggetto metadati della foto, nonché i valori di altezza massima, larghezza massima o entrambi. - Utilizza
PlacesClient.fetchResolvedPhotoUri()
per richiedere l'URI della foto. - Aggiungi
OnSuccessListener
e recupera l'URI della foto daFetchResolvedPhotoUriResponse
.
Parametri obbligatori
I parametri richiesti per
FetchResolvedPhotoUriRequest
sono:
-
Metadati delle foto
L'oggetto 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 rispetto ai valori specificati, verrà restituita l'immagine originale. Se l'immagine è più grande in entrambe le dimensioni, verrà ridimensionata in modo da corrispondere alla più piccola delle due dimensioni, limitatamente alle 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 le opzioni.
- 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 Photo
L'esempio seguente mostra come ottenere l'URI di una foto del 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 avranno
l'attribuzione obbligatoria inclusa nell'immagine. Tuttavia, l'oggetto metadati della foto, di tipo
PhotoMetadata
,
può contenere uno dei due tipi di attribuzioni aggiuntive:
- Attribuzione, una stringa di attribuzione a cui si accede
PhotoMetadata.getAttributions()
- AuthorAttributions, un parametro
AuthorAttributions
a cui accede l'oggettoPhotoMetadata.getAuthorAttributions()
.
Se l'oggetto PhotoMetadata
restituito include uno dei due tipi di attribuzione, devi
includi l'attribuzione nell'applicazione ovunque mostri l'immagine. Per ulteriori informazioni,
consulta la sezione Visualizzazione delle attribuzioni.