תמונות של המקום

אתם יכולים להשתמש ב-Places SDK ל-iOS כדי לשלוח בקשות לתמונות של מקומות ולהציג אותן באפליקציה שלכם. התמונות שמוחזרות על ידי שירות התמונות מגיעות ממגוון מקורות, כולל תמונות שנוספו על ידי בעלי עסקים ותמונות שנוספו על ידי משתמשים. כדי לאחזר תמונות של מקום מסוים, צריך לבצע את השלבים הבאים:

  1. מתקשרים אל [GMSPlacesClient fetchPlaceFromPlaceId], מעבירים מחרוזת עם מזהה מקום וקריאה חוזרת. הפעולה הזו תפעיל את פונקציית הקריאה החוזרת עם אובייקט GMSPlacePhotoMetadataList.
  2. באובייקט GMSPlacePhotoMetadataList access the results property ובוחרים את התמונות לטעינה מהמערך.
  3. לכל GMSPlacePhotoMetadata שרוצים לטעון מהרשימה הזו, מתקשרים אל [GMSPlacesClient loadPlacePhoto:callback:] או אל [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. הפונקציות האלה יפעילו את הקריאה החוזרת עם UIImage שניתן לשימוש. הרוחב או הגובה המקסימליים של התמונות הם 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:] בשיטה application:didFinishLaunchingWithOptions: של נציג האפליקציה.

אם אתם לא רוצים שהאפליקציה שלכם תשתף NSURLCache עם Places SDK ל-iOS, אתם יכולים ליצור NSURLCache חדש ולהשתמש בו באופן בלעדי באפליקציה בלי להגדיר אותו כמטמון משותף.

שיוכים

ברוב המקרים, אפשר להשתמש בתמונות של מקומות בלי לתת קרדיט, או שהקרדיט הנדרש כלול בתמונה. עם זאת, אם המופע של GMSPlacePhotoMetadata שמוחזר כולל ייחוס, אתם צריכים לכלול את הייחוס הנוסף באפליקציה בכל מקום שבו התמונה מוצגת. חשוב לזכור שצריך להיות אפשר להקיש על הקישורים בשיוך. מידע נוסף זמין במאמר בנושא שיוך.

מגבלות שימוש

שליפת תמונה עולה יחידת מכסה אחת. אין מגבלות שימוש על שליפת מטא-נתונים של תמונות. מידע נוסף על שימוש וחיוב