عکس های مکان

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

  1. فراخوانی [GMSPlacesClient fetchPlaceFromPlaceId] ، ارسال یک رشته به همراه شناسه مکان و یک فراخوانی برگشتی. این فراخوانی برگشتی را با یک شیء GMSPlacePhotoMetadataList فراخوانی می‌کند.
  2. در شیء GMSPlacePhotoMetadataList به ویژگی results دسترسی پیدا کنید و عکس‌ها را برای بارگذاری از آرایه انتخاب کنید.
  3. برای بارگذاری هر GMSPlacePhotoMetadata از این لیست، [GMSPlacesClient loadPlacePhoto:callback:] یا [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] را فراخوانی کنید. این فراخوانی، فراخوانی را با یک UIImage قابل استفاده فراخوانی می‌کند. عکس‌ها می‌توانند حداکثر عرض یا ارتفاع ۱۶۰۰ پیکسل داشته باشند.

کد نمونه

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

سویفت

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

هدف-سی

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

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

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

انتساب‌ها

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

محدودیت‌های استفاده

بازیابی یک تصویر یک واحد سهمیه هزینه دارد؛ هیچ محدودیتی برای استفاده از فراداده‌های عکس وجود ندارد. درباره نحوه استفاده و صورتحساب بیشتر بخوانید.