Ortsfotos (neu)

Plattform auswählen: Android iOS Webdienst

Entwickler im Europäischen Wirtschaftsraum (EWR)

Mit „Place Photos (New)“ können Sie Ihrer Anwendung 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 Bitmap-Bild hat eine maximale Größe von 4800 × 4800 Pixel.

„Place Photos“-Anfragen

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

  1. Verwenden Sie Place Details (New), um mit fetchPlace() ein Place Objekt abzurufen. Fügen Sie das Place.Field PHOTO_METADATAS Feld der Liste der Felder hinzu, die im Place Objekt der Antwort enthalten sein sollen.
  2. Rufen Sie in der OnSuccessListener für Ihre FetchPlaceResponse die Methode Place.getPhotoMetadas() auf, um das Fotometadatenobjekt vom Typ PhotoMetadata aus dem Place Objekt der Antwort abzurufen.
  3. 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.
  4. Verwenden Sie 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 zurückzugebenden Fotos.

  • Maximale Höhe oder maximale Breite

    Gibt die maximale Höhe und Breite des zurückzugebenden Bildes in Pixel 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 setMaxHeight() Methode auf.
    • Wenn Sie den Parameter für die maximale Breite festlegen möchten, rufen Sie beim Erstellen des FetchResolvedPhotoUriRequest Objekts die setMaxWidth() Methode auf.

„Place Photos“-Beispiele

Im folgenden Beispiel wird gezeigt, wie Sie einen Foto-URI für einen Ort 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
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 Ortsfotos ohne Quellenangabe verwendet werden bzw. sind die erforderlichen Quellenangaben bereits im Bild eingebunden. Das Fotometadatenobjekt vom Typ PhotoMetadata, kann jedoch eine von zwei Arten zusätzlicher Quellenangaben enthalten:

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.