Ortsfotos (neu)

Plattform auswählen:Android iOS Webdienst

Mit der Funktion „Place Photo“ (Neu) können Sie Ihrer App 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 Bitmap-Bild zurück. Das Bitmapbild hat eine maximale Größe von 4.800 x 4.800 Pixeln.

Anfragen zu Ortsfotos

So rufen Sie ein Bild für einen Ort ab:

  1. Mit Place Details (New) können Sie ein Place-Objekt mit fetchPlace() abrufen. Achten Sie darauf, das Feld Place.Field PHOTO_METADATAS in die Liste der Felder aufzunehmen, die im Antwortobjekt Place enthalten sein sollen.
  2. Rufe in der OnSuccessListener für deine FetchPlaceResponse Place.getPhotoMetadas() auf, um das Fotometadatenobjekt vom Typ PhotoMetadata aus dem Antwortobjekt Place abzurufen.
  3. 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.
  4. Verwende PlacesClient.fetchResolvedPhotoUri(), um den Foto-URI anzufordern.
  5. Fügen Sie ein OnSuccessListener hinzu und rufen Sie den Foto-URI aus dem FetchResolvedPhotoUriResponse-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 Bilds 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 maximale Höhe als auch für die maximale Breite können Ganzzahlen zwischen 1 und 4.800 verwendet werden. Sie müssen entweder 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 die setMaxHeight()-Methode beim Erstellen des FetchResolvedPhotoUriRequest-Objekts auf.
    • Wenn Sie den Parameter „Maximale Breite“ festlegen möchten, rufen Sie die setMaxWidth()-Methode beim Erstellen des FetchResolvedPhotoUriRequest-Objekts auf.

Beispiele für Place Photos

Im folgenden Beispiel wird gezeigt, wie der URI eines Fotos für einen Ort 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 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:

Wenn das zurückgegebene PhotoMetadata-Objekt eine dieser 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 Attributionen anzeigen.