Ortsfotos (neu)

Plattform auswählen: Android-Gerät iOS Webdienst

Mit Place Photo (Neu) können Sie Fotos und Videos in hoher Qualität . Mit Place Photos haben Sie Zugriff auf Millionen von Fotos, die in in der Places-Datenbank. „Place Photos“ gibt einen URI zu einem Bitmapbild zurück. Bitmap -Bild darf maximal 4800 mal 4800 Pixel groß sein.

„Place Photo“-Anfragen

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

  1. Verwenden Sie Place Details (New), um ein Place-Objekt mithilfe von fetchPlace() Achten Sie darauf, das Feld Place.Field PHOTO_METADATAS in die Liste der Felder aufzunehmen, im Place-Antwortobjekt enthalten sein.
  2. Im OnSuccessListener für dein FetchPlaceResponse, rufen Sie Place.getPhotoMetadas() auf, um das Fotometadatenobjekt vom Typ PhotoMetadata abzurufen. aus dem Antwortobjekt Place.
  3. 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.
  4. PlacesClient.fetchResolvedPhotoUri() verwenden um den Foto-URI anzufordern.
  5. Fügen Sie ein OnSuccessListener hinzu und rufen Sie den URI des Fotos aus FetchResolvedPhotoUriResponse ab. -Objekt enthält.

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 ist als die angegebenen Werte, 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 Methode setMaxHeight() auf.
    • Zum Festlegen des Parameters für die maximale Breite rufen Sie beim Erstellen des FetchResolvedPhotoUriRequest-Objekts die Methode setMaxWidth() auf.

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 Namensnennung verwendet werden die erforderliche Quellenangabe im Bild enthalten. Das Fotometadatenobjekt vom Typ PhotoMetadata, kann zwei Arten zusätzlicher Attributionen enthalten:

Wenn das zurückgegebene PhotoMetadata-Objekt eine der beiden Attributionstypen enthält, müssen Sie Fügen Sie die Quellenangabe in Ihre Anwendung ein, wo immer das Bild zu sehen ist. Weitere Informationen Siehe Quellenangaben anzeigen.