תוכלו להשתמש ב- Places SDK ל-iOS (חדש) כדי לבקש תמונות של מקומות מוצג באפליקציה. התמונות שהוחזרו על ידי שירות התמונות מגיעות מ מקורות שונים, כולל בעלי עסקים ותמונות שהוסיפו משתמשים.
תמונות הן תמונות מפת סיביות (bitmap) המיוצגות על ידי אובייקט UIImage. הגודל המקסימלי של תמונה במפת סיביות הוא 4,800 על 4,800 פיקסלים.
בקשת תמונה
אפשר לבקש עד 10 תמונות של מקום מסוים:
שיחת טלפון
[GMSPlacesClient lookUpPhotosForPlaceID]
העברת מזהה מקוםGMSPlacePhotoMetadataResultCallback
קריאה חוזרת (callback). הבקשה הזו מפעילה את הקריאה החוזרת שלGMSPlacePhotoMetadataResultCallback
עםGMSPlacePhotoMetadataList
לאובייקט.מהאובייקט
GMSPlacePhotoMetadataList
בקריאה החוזרת (callback), הפונקציהresults
מערך של תמונות מכיל את התמונות, שבהן כל תמונה מיוצגת על ידיGMSPlacePhotoMetadata
לאובייקט.משתמשים באובייקט
GMSPlacePhotoMetadata
כדי ליצורGMSFetchPhotoRequest
, כולל הגודל המקסימלי של התמונה המבוקשת.לכל אובייקט
GMSPlacePhotoMetadata
במערך, קוראים[GMSPlacesClient fetchPhotoWithRequest:callback:]
העברת האובייקטGMSFetchPhotoRequest
. באמצעות ה-method הזה,GMSFetchPhotoResultCallback
קריאה חוזרת (callback) עם תמונה של מפת סיביות (bitmap) שאפשר להשתמש בה בתור UIImage.
דרך נוספת לבקש תמונות של מקום היא ליצור
בקשת פרטי מקום (חדש),
כולל GMSPlacePropertyPhotos
ברשימת השדות. היתרון של יצירת
השיחה 'פרטי מקום' היא שהתשובה
GMSPlace
השדה הזה יכול להכיל את התמונות וכל שדה נתונים אחר שרוצים לראות.
את המקום.
קוד לדוגמה
השיטה לדוגמה הבאה מקבלת מזהה מקום ומקבלת את התמונה הראשונה שהוחזרו. אפשר להשתמש בשיטה הזו כתבנית לשיטה שמשתמשים בה ליצור באפליקציה שלכם.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Request list of photos for a place placesClient.lookUpPhotos(forPlaceID: placeID) { (photos, error) in guard let photoMetadata: GMSPlacePhotoMetadata = photos?.results[0] else { return } // Request individual photos in the response list let fetchPhotoRequest = GMSFetchPhotoRequest(photoMetadata: photoMetadata, maxSize: CGSizeMake(4800, 4800)) self.client.fetchPhoto(with: fetchPhotoRequest, callback: { (photoImage: UIImage?, error: Error?) in guard let photoImage, error == nil else { print("Handle photo error: ") return } print("Display photo Image: ") } ) }
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; [placesClient lookUpPhotosForPlaceID:placeID callback: ^(GMSPlacePhotoMetadataList *list, NSError *error) { GMSPlacePhotoMetadata *photoMetadata = [list results][0]; // Request individual photos in the response list GMSFetchPhotoRequest *fetchPhotoRequest = [[GMSFetchPhotoRequest alloc] initWithPhotoMetadata:photoMetadata maxSize:CGSizeMake(4800, 4800)]; [placesClient fetchPhotoWithRequest:fetchPhotoRequest callback: ^(UIImage *_Nullable photoImage, NSError *_Nullable error) { if (error == nil) { // Display photo } }]; }];
GooglePlacesSwift
// First fetch place details // A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [ . name, .website ] ) var fetchedPlace: Place switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): fetchedPlace = place case .failure(let placesError): // Handle error } // Use the place details to fetch a photo's image. guard let photo = fetchedPlace.photos?.first else { // Handle place without photos. } let fetchPhotoRequest = FetchPhotoRequest(photo: photo, maxSize: CGSizeMake(4800, 4800)) switch await placesClient.fetchPhoto(with: fetchPhotoRequest) { case .success(let uiImage): // Handle image. case .failure(let placesError): // Handle error }
שמירה במטמון
התמונות נטענו באמצעות [GMSPlacesClient loadPlacePhoto:callback:]
או [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
נשמרים במטמון גם בדיסק וגם בזיכרון על ידי מערכת הטעינה של כתובות URL בסיסיות
בקובץ NSURLCache
המשותף.
כדי להגדיר את התנהגות השמירה במטמון אפשר לשנות את המטמון של כתובות ה-URL המשותפות באמצעות
[NSURLCache setSharedURLCache:]
ב-application:didFinishLaunchingWithOptions:
של בעל הגישה לאפליקציה
.
אם אינך רוצה שהאפליקציה שלך תשתף NSURLCache
עם
Places SDK ל-iOS ניתן ליצור NSURLCache
חדש ולהשתמש בו
אך ורק בתוך האפליקציה שלך, מבלי להגדיר אותה כמטמון המשותף.
שיוכים
ברוב המקרים, ניתן להשתמש בתמונות של מקומות ללא ייחוס, או לכלול בהן את
הייחוס הנדרש כחלק מהתמונה. אבל אם הערך שהוחזר
GMSPlacePhotoMetadata
כולל כל מופע
attributions
או
authorAttribution
,
חובה לכלול את הייחוסים האלה באפליקציה בכל מקום שבו
תמונה. אפשר לעיין במסמכים בנושא
שיוכים.