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
PlaceutilizzandofetchPlace(). Assicurati di includere il campoPlace.Field PHOTO_METADATASnell'elenco dei campi da includere nell'oggettoPlacedella risposta. - In
OnSuccessListenerper il tuoFetchPlaceResponse, chiamaPlace.getPhotoMetadas()per ottenere l'oggetto dei metadati della foto di tipoPhotoMetadatadall'oggettoPlacedella risposta. - Crea un oggetto
FetchResolvedPhotoUriRequestper effettuare la richiesta e trasmetti 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
OnSuccessListenere recupera 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 dell'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 dell'altezza massima, chiama il metodo
Esempi di foto del luogo
L'esempio seguente mostra come ottenere un URI di 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 ListP>lace.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. } }); });
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
AuthorAttributionsa 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.