Mit dem Places SDK for Android können Sie in Ihrer Anwendung anzuzeigen. Vom Fotodienst zurückgegebene Fotos stammen aus einem aus verschiedenen Quellen, einschließlich Geschäftsinhabern und Fotos, die von Nutzern beigesteuert wurden.
Places SDK for Android gibt ein Bitmapbild mit einem maximalen Größe von 1600 x 1600 Pixel.
Abruf von Fotos
So rufen Sie ein Bild für einen Ort ab:
- Rufen Sie mithilfe von Place Details ein
Place
-Objekt ab (verwenden Sie entwederfetchPlace()
oderfindCurrentPlace()
. Achten Sie darauf, das FeldPlace.Field PHOTO_METADATAS
in die Liste der Felder aufzunehmen, imPlace
-Antwortobjekt enthalten. - Im
OnSuccessListener
für deinFetchPlaceResponse
oderFindCurrentPlaceResponse
, Verwenden SiePlace.getPhotoMetadas()
, um das Foto-Metadatenobjekt vom Typ abzurufen.PhotoMetadata
. aus dem AntwortobjektPlace
. - Erstellen Sie ein
FetchPhotoRequest
-Objekt. Sie können optional maximale Höhe und Breite (in Pixeln) angeben. Fotos können Die maximale Breite oder Höhe beträgt 1.600 Pixel. PlacesClient.fetchPhoto()
verwenden um die Bitmap des Fotos anzufordern.- Fügen Sie ein
OnSuccessListener
hinzu und holen Sie das Foto aus demFetchPhotoResponse
Foto aufnehmen
Das folgende Beispiel zeigt, wie ein Ortsfoto abgerufen wird:
Kotlin
// Define a Place ID. val placeId = "INSERT_PLACE_ID_HERE" // Specify fields. Requests for photos must always have the PHOTO_METADATAS field. val fields = listOf(Place.Field.PHOTO_METADATAS) // Get a Place object (this example uses fetchPlace(), but you can also use findCurrentPlace()) val placeRequest = FetchPlaceRequest.newInstance(placeId, fields) placesClient.fetchPlace(placeRequest) .addOnSuccessListener { response: FetchPlaceResponse -> val place = response.place // Get the photo metadata. val metada = place.photoMetadatas if (metada == null || metada.isEmpty()) { Log.w(TAG, "No photo metadata.") return@addOnSuccessListener } val photoMetadata = metada.first() // Get the attribution text. val attributions = photoMetadata?.attributions // Create a FetchPhotoRequest. val photoRequest = FetchPhotoRequest.builder(photoMetadata) .setMaxWidth(500) // Optional. .setMaxHeight(300) // Optional. .build() placesClient.fetchPhoto(photoRequest) .addOnSuccessListener { fetchPhotoResponse: FetchPhotoResponse -> val bitmap = fetchPhotoResponse.bitmap imageView.setImageBitmap(bitmap) }.addOnFailureListener { exception: Exception -> if (exception is ApiException) { Log.e(TAG, "Place not found: " + exception.message) val statusCode = exception.statusCode TODO("Handle error with given status code.") } } }
Java
// 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. final String attributions = photoMetadata.getAttributions(); // Create a FetchPhotoRequest. final FetchPhotoRequest photoRequest = FetchPhotoRequest.builder(photoMetadata) .setMaxWidth(500) // Optional. .setMaxHeight(300) // Optional. .build(); placesClient.fetchPhoto(photoRequest).addOnSuccessListener((fetchPhotoResponse) -> { Bitmap bitmap = fetchPhotoResponse.getBitmap(); imageView.setImageBitmap(bitmap); }).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:
- Attributions, ein Attributionsstring, auf den über
PhotoMetadata.getAttributions()
- AuthorAttributions, eine
AuthorAttributions
Objekt, auf das zugegriffen wird vonPhotoMetadata.getAuthorAttributions()
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.
Nutzung und Abrechnung
Die SKU Places Photo wird für Anrufe bei fetchPhoto()
berechnet.
Weitere Informationen finden Sie auf der Seite Nutzung und Abrechnung.