Place Photos (חדש) מאפשר להוסיף תוכן צילומי באיכות גבוהה לאפליקציה. התכונה 'תמונות של מקומות' מאפשרת לכם לגשת למיליוני תמונות שמאוחסנות במסד הנתונים של המקומות. 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. חובה לציין גובה מקסימלי, רוחב מקסימלי או את שניהם.
- כדי להגדיר את פרמטר הגובה המקסימלי, קוראים לשיטה
setMaxHeight()
כשיוצרים את האובייקטFetchResolvedPhotoUriRequest
. - כדי להגדיר את פרמטר הרוחב המקסימלי, קוראים לשיטה
setMaxWidth()
כשיוצרים את האובייקטFetchResolvedPhotoUriRequest
.
- כדי להגדיר את פרמטר הגובה המקסימלי, קוראים לשיטה
דוגמאות לתמונות של מקומות
בדוגמה הבאה מוסבר איך מקבלים 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
, יכול להכיל אחד משני סוגים של שיוכים נוספים:
- שיוכים, מחרוזת שיוך שאפשר לגשת אליה דרך
PhotoMetadata.getAttributions()
. - AuthorAttributions, אובייקט
AuthorAttributions
שאליו ניגשים באמצעותPhotoMetadata.getAuthorAttributions()
.
אם אובייקט PhotoMetadata
שמוחזר כולל ייחוס מכל סוג שהוא, אתם חייבים לכלול את הייחוס באפליקציה שלכם בכל מקום שבו התמונה מוצגת. מידע נוסף זמין במאמר בנושא הצגת שיוכים.