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