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

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

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

عکس ها تصاویر بیت مپ هستند که توسط یک شی UIImage نشان داده می شوند. یک تصویر بیت مپ دارای حداکثر اندازه 4800 در 4800 پیکسل است.

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

شما می توانید حداکثر 10 عکس برای یک مکان درخواست کنید:

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

  2. از شی GMSPlacePhotoMetadataList در callback، ویژگی آرایه results حاوی عکس‌ها است، که در آن هر عکس با یک شی GMSPlacePhotoMetadata نمایش داده می‌شود.

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

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

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

کد نمونه

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

سریع

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

هدف-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 باشد، باید هر جا که تصویر را نمایش می‌دهید، این اسناد را در برنامه خود قرار دهید. اسناد مربوط به اسناد را ببینید.