Mit Place Photos (New) können Sie Ihrer Anwendung qualitativ hochwertige Fotos hinzufügen. Mit Place Photos können Sie auf Millionen von Fotos in der Places-Datenbank zugreifen. Place Photos gibt einen URI für ein Bitmap-Bild zurück. Das Bitmap-Bild hat eine maximale Größe von 4.800 × 4.800 Pixel.
„Place Photos“-Anfragen
So rufen Sie ein Bild für einen Ort ab:
- Mit Place Details (New) können Sie ein
Place
-Objekt mitfetchPlace()
abrufen. Achten Sie darauf, das FeldPlace.Field PHOTO_METADATAS
in die Liste der Felder aufzunehmen, die im AntwortobjektPlace
enthalten sein sollen. - Rufen Sie im
OnSuccessListener
für IhrFetchPlaceResponse
Place.getPhotoMetadas()
auf, um das Foto-Metadatenobjekt vom TypPhotoMetadata
aus dem AntwortobjektPlace
abzurufen. - Erstellen Sie ein
FetchResolvedPhotoUriRequest
-Objekt, um die Anfrage zu stellen, und übergeben Sie das Fotometadatenobjekt sowie Werte für die maximale Höhe, die maximale Breite oder beides. - Verwenden Sie
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 zurückzugebenden Fotos.
-
Maximale Höhe oder maximale Breite
Gibt die maximale Höhe und Breite des zurückzugebenden Bilds in Pixeln an. Wenn das Bild kleiner als die angegebenen Werte ist, 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. Für die Eigenschaften „Maximale Höhe“ und „Maximale Breite“ kann eine Ganzzahl zwischen 1 und 4800 angegeben werden. Sie müssen die maximale Höhe, die maximale Breite oder beides angeben.
- Wenn Sie den Parameter für die maximale Höhe festlegen möchten, rufen Sie beim Erstellen des
FetchResolvedPhotoUriRequest
-Objekts die MethodesetMaxHeight()
auf. - Rufen Sie zum Festlegen des Parameters für die maximale Breite die Methode
setMaxWidth()
beim Erstellen desFetchResolvedPhotoUriRequest
-Objekts auf.
- Wenn Sie den Parameter für die maximale Höhe festlegen möchten, rufen Sie beim Erstellen des
Beispiele für Place Photos
Im folgenden Beispiel wird gezeigt, wie Sie den URI eines Ortsfotos abrufen.
// 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 diese Fotos 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 Quellenangaben 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 der beiden Arten von Quellenangaben enthält, müssen Sie die Quellenangabe immer dann in Ihre Anwendung einbinden, wenn das Bild zu sehen ist. Weitere Informationen finden Sie unter Quellenangaben anzeigen.