תמונות של המקום (חדש)

בחירת פלטפורמה: Android iOS שירות אינטרנט

מפתחים באזור הכלכלי האירופי (EEA)

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

תמונות הן תמונות מפת סיביות שמיוצגות על ידי אובייקט UIImage. הגודל המקסימלי של תמונת מפת סיביות הוא 4,800 על 4,800 פיקסלים.

בקשת תמונה

אפשר לבקש עד 10 תמונות של מקום:

  1. ‫Call [GMSPlacesClient lookUpPhotosForPlaceID], מעבירים מזהה מקום וקריאה חוזרת של GMSPlacePhotoMetadataResultCallback. הבקשה הזו קוראת לפונקציית הקריאה החוזרת GMSPlacePhotoMetadataResultCallback עם אובייקט GMSPlacePhotoMetadataList.

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

  3. משתמשים באובייקט GMSPlacePhotoMetadata כדי ליצור GMSFetchPhotoRequest, כולל הגודל המקסימלי של התמונה המבוקשת.

  4. לכל אובייקט GMSPlacePhotoMetadata במערך, קוראים ל-[GMSPlacesClient fetchPhotoWithRequest:callback:] ומעבירים את האובייקט GMSFetchPhotoRequest. השיטה הזו קוראת לקריאה החוזרת (callback) GMSFetchPhotoResultCallback עם תמונת bitmap שניתן להשתמש בה כ-UIImage.

דרך נוספת לבקש תמונות של מקום היא לשלוח בקשה של פרטי מקום (חדש), כולל GMSPlacePropertyPhotos ברשימת השדות. היתרון בביצוע קריאה של פרטי מקום הוא שאובייקט התגובה GMSPlace יכול להכיל את התמונות וכל שדה נתונים אחר שרוצים לגבי המקום.

קוד לדוגמה

בדוגמה הבאה, הפונקציה מקבלת מזהה מקום ומחזירה את התמונה הראשונה ברשימה. אתם יכולים להשתמש בשיטה הזו כתבנית לשיטה שתיצרו באפליקציה שלכם.

Places Swift SDK

// 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
}

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
    }
  }];
}];

שמירה במטמון

תמונות שנטענו באמצעות [GMSPlacesClient loadPlacePhoto:callback:] או [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] נשמרות במטמון בדיסק ובזיכרון על ידי מערכת טעינת כתובות URL של Foundation ב-NSURLCache המשותף.

כדי להגדיר את התנהגות הקאשינג, אפשר לשנות את מטמון כתובות ה-URL המשותף באמצעות [NSURLCache setSharedURLCache:] בשיטה application:didFinishLaunchingWithOptions: של נציג האפליקציה.

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

שיוכים

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