התכונה 'תמונות מ-Places' (חדשה) מאפשרת לכם להוסיף לאפליקציה תוכן צילום באיכות גבוהה. התכונה 'תמונות של מקומות' מעניקה לכם גישה למיליוני התמונות שמאוחסנות במסד הנתונים של 'מקומות'. Place Photos מחזיר URI לתמונה בפורמט בייטמאפ. הגודל המקסימלי של קובץ ה-bitmap הוא 4,800 על 4,800 פיקסלים.
בקשות להוספת תמונות של מקום
כדי לאחזר תמונה של מקום:
- משתמשים ב-Place Details (New) כדי לאחזר אובייקט
Place
באמצעותfetchPlace()
. חשוב לכלול את השדהPlace.Field PHOTO_METADATAS
ברשימת השדות שרוצים לכלול באובייקט התגובהPlace
. - ב-
OnSuccessListener
שלFetchPlaceResponse
, קוראים ל-Place.getPhotoMetadas()
כדי לקבל את אובייקט המטא-נתונים של התמונה מסוגPhotoMetadata
מאובייקט התגובהPlace
. - יוצרים אובייקט
FetchResolvedPhotoUriRequest
כדי לשלוח את הבקשה ולהעביר את אובייקט המטא-נתונים של התמונה, וגם ערכים לגובה המקסימלי, לרוחב המקסימלי או לשניהם. - משתמשים ב-
PlacesClient.fetchResolvedPhotoUri()
כדי לבקש את ה-URI של התמונה. - מוסיפים
OnSuccessListener
ומקבלים את ה-URI של התמונה מהאובייקטFetchResolvedPhotoUriResponse
.
פרמטרים נדרשים
הפרמטרים הנדרשים ל-FetchResolvedPhotoUriRequest
הם:
-
מטא-נתונים של תמונות
אובייקט המטא-נתונים של התמונה שרוצים להחזיר.
-
גובה מקסימלי או רוחב מקסימלי
קובע את הגובה והרוחב המקסימליים, בפיקסלים, של התמונה שתוחזר. אם התמונה קטנה מהערכים שצוינו, התמונה המקורית תוחזר. אם התמונה גדולה יותר באחת מהמידות, היא תתאים לגודל של המידה הקטנה מבין שתיהן, תוך שמירה על יחס הגובה-רוחב המקורי שלה. אפשר להזין במאפייני הגובה המקסימלי והרוחב המקסימלי מספר שלם בין 1 ל-4,800. צריך לציין גובה מקסימלי, רוחב מקסימלי או את שניהם.
- כדי להגדיר את הפרמטר של הגובה המקסימלי, צריך לקרוא ל-method
setMaxHeight()
בזמן היצירה של האובייקטFetchResolvedPhotoUriRequest
. - כדי להגדיר את הפרמטר של רוחב מקסימלי, צריך לקרוא ל-method
setMaxWidth()
בזמן היצירה של האובייקטFetchResolvedPhotoUriRequest
.
- כדי להגדיר את הפרמטר של הגובה המקסימלי, צריך לקרוא ל-method
דוגמאות לתמונות של מקום
הדוגמה הבאה ממחישה איך מקבלים URI של תמונה של מקום.
// 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. } }); });
שיוכים
ברוב המקרים, אפשר להשתמש בתמונות של מקומות ללא שיוך, או שהשיוך הנדרש ייכלל כחלק מהתמונה. עם זאת, אובייקט המטא-נתונים של התמונה, מסוג PhotoMetadata
, יכול להכיל אחד משני סוגי שיוך נוספים:
- Attributions, מחרוזת שיוך (Attribution) ש
PhotoMetadata.getAttributions()
ניגש אליה. - AuthorAttributions, אובייקט
AuthorAttributions
שPhotoMetadata.getAuthorAttributions()
ניגש אליו.
אם האובייקט PhotoMetadata
המוחזר כולל אחד מסוגי השיוך, עליכם לכלול את השיוך באפליקציה בכל מקום שבו אתם מציגים את התמונה. מידע נוסף זמין במאמר הצגת שיוך.