Mit Place Photos (New) können Sie Ihrer Anwendung qualitativ hochwertige Fotos hinzufügen. Mit „Place Photos“ haben Sie Zugriff auf Millionen von Fotos, die in der Places-Datenbank gespeichert sind. „Place Photos“ gibt einen URI zu einem Bitmapbild zurück. Das Bitmapbild hat eine maximale Größe von 4.800 x 4.800 Pixeln.
„Place Photo“-Anfragen
So rufen Sie ein Bild für einen Ort ab:
- Verwenden Sie Place Details (New), um ein
Place
-Objekt mithilfe vonfetchPlace()
abzurufen. Das FeldPlace.Field PHOTO_METADATAS
muss in die Liste der Felder aufgenommen werden, die in dasPlace
-Antwortobjekt aufgenommen werden sollen. - Rufe in der
OnSuccessListener
für deinFetchPlaceResponse
Place.getPhotoMetadas()
auf, um das Fotometadatenobjekt vom TypPhotoMetadata
aus dem AntwortobjektPlace
abzurufen. - Erstellen Sie ein
FetchResolvedPhotoUriRequest
-Objekt, um die Anfrage zu senden und das Fotometadatenobjekt sowie Werte für maximale Höhe, maximale Breite oder beides zu übergeben. - Verwenden Sie
PlacesClient.fetchResolvedPhotoUri()
, um den Foto-URI anzufordern. - Fügen Sie ein
OnSuccessListener
hinzu und rufen Sie den 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. Wenn das Bild kleiner als die angegebenen Werte ist, wird das Originalbild zurückgegeben. Ist das Bild in einer der beiden Abmessungen größer, wird es auf die kleinere der beiden Abmessungen skaliert, wobei das ursprüngliche Seitenverhältnis beibehalten wird. Sowohl für die maximale Höhe als auch für die maximale Breite ist eine Ganzzahl zwischen 1 und 4.800 zulässig. Sie müssen maximale Höhe, maximale Breite oder beides angeben.
- Zum Festlegen des Parameters für die maximale Höhe rufen Sie beim Erstellen des
FetchResolvedPhotoUriRequest
-Objekts die MethodesetMaxHeight()
auf. - Zum Festlegen des Parameters für die maximale Breite rufen Sie beim Erstellen des
FetchResolvedPhotoUriRequest
-Objekts die MethodesetMaxWidth()
auf.
- Zum Festlegen des Parameters für die maximale Höhe rufen Sie beim Erstellen des
Beispiele für Place Photo
Im folgenden Beispiel wird gezeigt, wie der URI für ein Ortsfoto abgerufen wird.
// 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 können Ortsfotos ohne Quellenangabe verwendet werden bzw. sind die erforderlichen Quellenangaben bereits im Bild enthalten. Das Fotometadatenobjekt vom Typ PhotoMetadata
kann jedoch zwei Arten zusätzlicher Attributionen enthalten:
- Attributions, ein Attributionsstring, auf den
PhotoMetadata.getAttributions()
zugreift. - AuthorAttributions, ein
AuthorAttributions
-Objekt, auf das überPhotoMetadata.getAuthorAttributions()
zugegriffen wird.
Wenn das zurückgegebene PhotoMetadata
-Objekt einen der beiden Attributionstypen enthält, muss die Attribution überall dort, wo das Bild zu sehen ist, in die Anwendung eingebunden werden. Weitere Informationen finden Sie unter Zuordnungen anzeigen.