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

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

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

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

בקשת תמונה

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

  1. שיחת טלפון [GMSPlacesClient lookUpPhotosForPlaceID], העברת מזהה מקום GMSPlacePhotoMetadataResultCallback קריאה חוזרת (callback). בקשה זו מפעילה את הקריאה החוזרת של GMSPlacePhotoMetadataResultCallback עם GMSPlacePhotoMetadataList לאובייקט.

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

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

  4. לכל אובייקט 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, חובה לכלול את הייחוסים האלה באפליקציה בכל מקום שבו תמונה. אפשר לעיין במסמכים בנושא שיוכים.