אתם יכולים להשתמש ב-Places SDK ל-iOS כדי לבקש תמונות של מקומות להצגה באפליקציה שלכם. התמונות שמוחזרות על ידי שירות התמונות מגיעות ממגוון מקורות, כולל בעלי עסקים ותמונות שנוספו על ידי משתמשים. כדי לאחזר תמונות של מקום מסוים, צריך לבצע את השלבים הבאים:
- קוראים לפונקציה
[GMSPlacesClient fetchPlaceFromPlaceId]
, ומעבירים מחרוזת עם מזהה מקום וקריאה חוזרת. הפעולה הזו תפעיל את הפונקציה הלא סטטית עם אובייקטGMSPlacePhotoMetadataList
. - באובייקט
GMSPlacePhotoMetadataList
, ניגשים לנכסresults
ובוחרים את התמונות לטעינה מהמערך. - לכל
GMSPlacePhotoMetadata
שרוצים לטעון מהרשימה הזו, צריך לבצע קריאה ל-[GMSPlacesClient loadPlacePhoto:callback:]
או ל-[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
. הן יפעילו את הפונקציה הזו עם UIImage שאפשר להשתמש בו. רוחב התמונות יכול להגיע ל-1,600 פיקסלים לכל היותר, וגם הגובה שלהן יכול להגיע ל-1,600 פיקסלים לכל היותר.
קוד לדוגמה
בשיטה לדוגמה הבאה, מזינים מזהה מקום ומקבלים את התמונה הראשונה ברשימה שמוחזרת. אפשר להשתמש בשיטה הזו בתור תבנית לשיטה שתיצרו באפליקציה שלכם.
Swift
// Specify the place data types to return (in this case, just photos). let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.photos.rawValue))! placesClient?.fetchPlace(fromPlaceID: "INSERT_PLACE_ID_HERE", placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { // Get the metadata for the first photo in the place photo metadata list. let photoMetadata: GMSPlacePhotoMetadata = place.photos![0] // Call loadPlacePhoto to display the bitmap and attribution. self.placesClient?.loadPlacePhoto(photoMetadata, callback: { (photo, error) -> Void in if let error = error { // TODO: Handle the error. print("Error loading photo metadata: \(error.localizedDescription)") return } else { // Display the first image and its attributions. self.imageView?.image = photo; self.lblText?.attributedText = photoMetadata.attributions; } }) } })
Objective-C
// Specify the place data types to return (in this case, just photos). GMSPlaceField fields = (GMSPlaceFieldPhotos); NSString *placeId = @"INSERT_PLACE_ID_HERE"; [_placesClient fetchPlaceFromPlaceID:placeId placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { GMSPlacePhotoMetadata *photoMetadata = [place photos][0]; [self->_placesClient loadPlacePhoto:photoMetadata callback:^(UIImage * _Nullable photo, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error loading photo metadata: %@", [error localizedDescription]); return; } else { // Display the first image and its attributions. self->imageView.image = photo; self->lblText.attributedText = photoMetadata.attributions; } }]; } }];
שמירה במטמון
תמונות שנטענות באמצעות [GMSPlacesClient loadPlacePhoto:callback:]
או [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
נשמרות במטמון גם בדיסק וגם בזיכרון על ידי מערכת טעינת כתובות ה-URL של Foundation ב-NSURLCache
המשותף.
כדי להגדיר את התנהגות האחסון במטמון, אפשר לשנות את המטמון המשותף של כתובות ה-URL באמצעות [NSURLCache setSharedURLCache:]
ב-method application:didFinishLaunchingWithOptions:
של הנציג של האפליקציה.
אם אתם לא רוצים שהאפליקציה שלכם תשתף את NSURLCache
עם Places SDK ל-iOS, תוכלו ליצור NSURLCache
חדש ולהשתמש בו באופן בלעדי באפליקציה, בלי להגדיר אותו כמטמון המשותף.
שיוכים
ברוב המקרים, אפשר להשתמש בתמונות של מקומות ללא שיוך, או שהשיוך הנדרש ייכלל כחלק מהתמונה. עם זאת, אם המופע המוחזר של GMSPlacePhotoMetadata
כולל שיוך, עליכם לכלול את השיוך הנוסף באפליקציה בכל מקום שבו אתם מציגים את התמונה. חשוב לזכור שאפשר להקיש על הקישורים שמוצגים בזיהוי המקור. מידע נוסף זמין במאמר העזרה בנושא שיוך.
מגבלות שימוש
אחזור תמונה עולה יחידה אחת במכסה. אין מגבלות שימוש על אחזור מטא-נתונים של תמונות. מידע נוסף על שימוש בחיוב