میتوانید از Places SDK برای iOS (جدید) برای درخواست عکسهای مکان برای نمایش در برنامهتان استفاده کنید. عکسهای ارائهشده توسط سرویس عکسها از منابع مختلفی از جمله صاحبان مشاغل و عکسهای ارائهشده توسط کاربر میآیند.
عکس ها تصاویر بیت مپ هستند که توسط یک شی UIImage نشان داده می شوند. یک تصویر بیت مپ دارای حداکثر اندازه 4800 در 4800 پیکسل است.
درخواست تصویر
شما می توانید حداکثر 10 عکس برای یک مکان درخواست کنید:
با
[GMSPlacesClient lookUpPhotosForPlaceID]
تماس بگیرید، یک شناسه مکان و یکGMSPlacePhotoMetadataResultCallback
ارسال کنید. این درخواستGMSPlacePhotoMetadataResultCallback
را با یک شیGMSPlacePhotoMetadataList
فراخوانی می کند.از شی
GMSPlacePhotoMetadataList
در callback، ویژگی آرایهresults
حاوی عکسها است، که در آن هر عکس با یک شیGMSPlacePhotoMetadata
نمایش داده میشود.از شی
GMSPlacePhotoMetadata
برای ایجاد یکGMSFetchPhotoRequest
، از جمله حداکثر اندازه تصویر درخواستی استفاده کنید.برای هر شی
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 } }]; }];
مکانها Swift SDK برای iOS (پیشنمایش)
// 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
باشد، باید هر جا که تصویر را نمایش میدهید، این اسناد را در برنامه خود قرار دهید. اسناد مربوط به اسناد را ببینید.