عکس‌های مکان (جدید)

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS، وب سرویس

توسعه‌دهندگان منطقه اقتصادی اروپا (EEA)

شما می‌توانید از Places SDK برای iOS (جدید) برای درخواست عکس‌های مکان جهت نمایش در برنامه خود استفاده کنید. عکس‌هایی که توسط سرویس عکس برگردانده می‌شوند از منابع مختلفی از جمله صاحبان مشاغل و عکس‌های ارائه شده توسط کاربران می‌آیند.

عکس‌ها تصاویر بیت‌مپ هستند که توسط یک شیء UIImage نمایش داده می‌شوند. یک تصویر بیت‌مپ حداکثر اندازه ۴۸۰۰ در ۴۸۰۰ پیکسل دارد.

درخواست تصویر

شما می‌توانید تا ۱۰ عکس برای یک مکان درخواست کنید:

  1. فراخوانی [GMSPlacesClient lookUpPhotosForPlaceID] ، ارسال یک شناسه مکان و یک فراخوانی GMSPlacePhotoMetadataResultCallback . این درخواست فراخوانی GMSPlacePhotoMetadataResultCallback را با یک شیء GMSPlacePhotoMetadataList فراخوانی می‌کند.

  2. از شیء GMSPlacePhotoMetadataList در تابع فراخوانی، ویژگی آرایه results شامل عکس‌ها است که در آن هر عکس توسط یک شیء GMSPlacePhotoMetadata نمایش داده می‌شود.

  3. از شیء GMSPlacePhotoMetadata برای ایجاد یک GMSFetchPhotoRequest استفاده کنید، که شامل حداکثر اندازه تصویر درخواستی نیز می‌شود.

  4. برای هر شیء GMSPlacePhotoMetadata در آرایه، تابع [GMSPlacesClient fetchPhotoWithRequest:callback:] را با ارسال شیء GMSFetchPhotoRequest فراخوانی کنید. این متد، تابع GMSFetchPhotoResultCallback را با یک تصویر بیت‌مپ قابل استفاده به عنوان یک تصویر رابط کاربری (UIImage) فراخوانی می‌کند.

راه دیگر برای درخواست عکس برای یک مکان، ایجاد یک درخواست Place Details (جدید) است که شامل GMSPlacePropertyPhotos در لیست فیلدها می‌شود. مزیت ایجاد فراخوانی Place Details این است که شیء GMSPlace پاسخ می‌تواند شامل عکس‌ها و هر فیلد داده دیگری باشد که برای مکان می‌خواهید.

کد نمونه

متد مثال زیر یک شناسه مکان را دریافت می‌کند و اولین عکس را در لیست برگردانده شده برمی‌گرداند. می‌توانید از این متد به عنوان الگو برای متدی که در برنامه خود ایجاد خواهید کرد، استفاده کنید.

مکان‌های 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
}

سویفت

// 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: ")
    }
  )
}

هدف-سی

// 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 بنیاد در NSURLCache مشترک، هم روی دیسک و هم در حافظه کش می‌شوند.

برای پیکربندی رفتار ذخیره‌سازی، می‌توانید حافظه پنهان URL مشترک را با استفاده از متد [NSURLCache setSharedURLCache:] در نماینده برنامه خود به application:didFinishLaunchingWithOptions: تغییر دهید.

اگر نمی‌خواهید برنامه شما NSURLCache با Places SDK برای iOS به اشتراک بگذارد، می‌توانید یک NSURLCache جدید ایجاد کنید و آن را منحصراً درون برنامه خود بدون تنظیم آن به عنوان حافظه پنهان مشترک استفاده کنید.

انتساب‌ها

در بیشتر موارد، عکس‌های مکان را می‌توان بدون ذکر منبع استفاده کرد، یا اینکه منبع مورد نیاز به عنوان بخشی از تصویر در آن گنجانده می‌شود. با این حال، اگر نمونه GMSPlacePhotoMetadata برگردانده شده شامل هرگونه attributions یا authorAttribution باشد، باید این منابع را در برنامه خود، هر کجا که تصویر را نمایش می‌دهید، وارد کنید. به مستندات مربوط به منابع مراجعه کنید.