Mit „Place Photos“ (Neu) können Sie Ihrer App hochwertige Fotos hinzufügen. Mit „Place Photos“ haben Sie Zugriff auf die Millionen von Fotos, die in der Places-Datenbank gespeichert sind. Place Photos gibt eine URI zu einem Bitmap-Bild zurück. Das Bitmapbild hat eine maximale Größe von 4.800 x 4.800 Pixeln.
Anfragen an Google Fotos stellen
So rufen Sie ein Bild für einen Ort ab:
- Verwenden Sie Ortsdetails (neu), um ein
Place
-Objekt mitfetchPlace()
abzurufen. Das FeldPlace.Field PHOTO_METADATAS
muss in der Liste der Felder enthalten sein, die in dasPlace
-Objekt der Antwort aufgenommen werden sollen. - Rufe im
OnSuccessListener
für deineFetchPlaceResponse
Place.getPhotoMetadas()
auf, um das Fotometadatenobjekt vom TypPhotoMetadata
aus dem AntwortobjektPlace
abzurufen. - Erstelle ein
FetchResolvedPhotoUriRequest
-Objekt, um die Anfrage zu stellen und das Fotometadatenobjekt sowie Werte für die maximale Höhe, die maximale Breite oder beides zu übergeben. - Verwende
PlacesClient.fetchResolvedPhotoUri()
, um den Foto-URI anzufordern. - Fügen Sie ein
OnSuccessListener
hinzu und rufen Sie die Foto-URI aus demFetchResolvedPhotoUriResponse
-Objekt ab.
Erforderliche Parameter
Die erforderlichen Parameter für FetchResolvedPhotoUriRequest
sind:
-
Fotometadaten
Das Metadatenobjekt des Fotos, das zurückgegeben werden soll.
-
Maximale Höhe oder maximale Breite
Gibt die maximale Höhe und Breite des zurückzugebenden Bildes in Pixeln an. Ist das Bild kleiner als die angegebenen Werte, wird das Originalbild zurückgegeben. Wenn das Bild in einer der beiden Dimensionen größer ist, wird es so skaliert, dass es der kleineren der beiden Dimensionen entspricht, wobei das ursprüngliche Seitenverhältnis beibehalten wird. Sowohl für die Eigenschaft „Maximale Höhe“ als auch für die Eigenschaft „Maximale Breite“ kann eine Ganzzahl zwischen 1 und 4.800 verwendet werden. Sie müssen eine maximale Höhe, eine maximale Breite oder beides angeben.
- Wenn Sie den Parameter „Maximale Höhe“ festlegen möchten, rufen Sie die Methode
setMaxHeight()
auf, wenn Sie dasFetchResolvedPhotoUriRequest
-Objekt erstellen. - Wenn Sie den Parameter „Maximale Breite“ festlegen möchten, rufen Sie die Methode
setMaxWidth()
auf, wenn Sie dasFetchResolvedPhotoUriRequest
-Objekt erstellen.
- Wenn Sie den Parameter „Maximale Höhe“ festlegen möchten, rufen Sie die Methode
Beispiele für Fotos von Orten
Im folgenden Beispiel wird der URI eines Fotos für einen Ort abgerufen.
// 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. } }); });
Attribution
In den meisten Fällen dürfen Fotos von Orten ohne Quellenangabe verwendet werden bzw. sind die erforderlichen Zuordnungen bereits im Bild eingebunden. Das Fotometadatenobjekt vom Typ PhotoMetadata
kann jedoch zwei Arten von zusätzlichen Zuschreibungen enthalten:
- Attributions: Ein Attributionsstring, auf den über
PhotoMetadata.getAttributions()
zugegriffen wird. - AuthorAttributions, ein
AuthorAttributions
-Objekt, auf das überPhotoMetadata.getAuthorAttributions()
zugegriffen wird.
Wenn das zurückgegebene PhotoMetadata
-Objekt eine dieser Attributionsarten enthält, müssen Sie die Attribution in Ihrer Anwendung überall dort einfügen, wo das Bild angezeigt wird. Weitere Informationen finden Sie unter Attributionen anzeigen.