אתם יכולים להשתמש ב-Places SDK ל-Android כדי לבקש תמונה של מקום להצגה באפליקציה. התמונות שמוחזרות על ידי שירות התמונות מגיעות ממגוון מקורות, כולל בעלי עסקים ותמונות שנוספו על ידי משתמשים.
Places SDK ל-Android מחזיר תמונה בפורמט bitmap בגודל מקסימלי של 1,600 על 1,600 פיקסלים.
תהליך אחזור התמונות
כדי לאחזר תמונה של מקום:
- משתמשים ב-Place Details כדי לאחזר אובייקט
Place
(משתמשים ב-fetchPlace()
או ב-findCurrentPlace()
). חשוב לכלול את השדהPlace.Field PHOTO_METADATAS
ברשימת השדות שרוצים לכלול באובייקט התגובהPlace
. - ב-
OnSuccessListener
שלFetchPlaceResponse
אוFindCurrentPlaceResponse
, משתמשים ב-Place.getPhotoMetadas()
כדי לקבל את האובייקט של המטא-נתונים של התמונה, מסוגPhotoMetadata
, מהאובייקטPlace
בתגובה. - יוצרים אובייקט
FetchPhotoRequest
, אפשר לציין גובה ורוחב מקסימליים (בפיקסלים). רוחב או גובה התמונות יכולים להיות 1,600 פיקסלים לכל היותר. - משתמשים ב-
PlacesClient.fetchPhoto()
כדי לבקש את הבייטמאפ של התמונה. - מוסיפים
OnSuccessListener
ומקבלים את התמונה מ-FetchPhotoResponse
.
אחזור תמונה
הדוגמה הבאה ממחישה איך מקבלים תמונה של מקום:
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. } }); });
שיוכים
ברוב המקרים, אפשר להשתמש בתמונות של מקומות ללא שיוך, או שהשיוך הנדרש ייכלל כחלק מהתמונה. עם זאת, אובייקט המטא-נתונים של התמונה, מסוג PhotoMetadata
, יכול להכיל אחד משני סוגי שיוך נוספים:
- Attributions, מחרוזת שיוך (Attribution) ש
PhotoMetadata.getAttributions()
ניגש אליה. - AuthorAttributions, אובייקט
AuthorAttributions
שPhotoMetadata.getAuthorAttributions()
ניגש אליו.
אם האובייקט PhotoMetadata
המוחזר כולל אחד מסוגי השיוך, עליכם לכלול את השיוך באפליקציה בכל מקום שבו אתם מציגים את התמונה. מידע נוסף זמין במאמר הצגת שיוך.
שימוש וחיוב
על שיחות אל fetchPhoto()
תחויבו במק"ט של Places Photo.
פרטים נוספים זמינים בדף שימוש וחיובים.