میتوانید از 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 میتواند حاوی عکسها و هر فیلد داده دیگری باشد که برای مکان میخواهید.
کد نمونه
روش مثال زیر یک شناسه مکان می گیرد و اولین عکس را در لیست برگشتی می گیرد. می توانید از این روش به عنوان الگوی روشی که در برنامه خود ایجاد می کنید استفاده کنید.
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: ") } ) }
هدف-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 } }]; }];
ذخیره سازی
عکسهای بارگیریشده با استفاده از [GMSPlacesClient loadPlacePhoto:callback:] یا [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] توسط سیستم بارگیری URL بنیاد در NSURLCache مشترک، هم روی دیسک و هم در حافظه پنهان میشوند.
برای پیکربندی رفتار حافظه پنهان، میتوانید حافظه پنهان URL مشترک را با استفاده از [NSURLCache setSharedURLCache:] در application:didFinishLaunchingWithOptions:
اگر نمیخواهید برنامه شما یک NSURLCache را با Places SDK برای iOS به اشتراک بگذارد، میتوانید یک NSURLCache جدید ایجاد کنید و از آن منحصراً در برنامه خود استفاده کنید بدون اینکه آن را به عنوان حافظه پنهان مشترک تنظیم کنید.
اسناد
در بیشتر موارد، عکسهای مکان را میتوان بدون ذکر منبع استفاده کرد، یا به عنوان بخشی از تصویر، اسناد مورد نیاز را درج میکند. با این حال، اگر نمونه GMSPlacePhotoMetadata برگردانده شده شامل هر گونه attributions یا authorAttribution باشد، باید هر جا که تصویر را نمایش میدهید، این اسناد را در برنامه خود قرار دهید. اسناد مربوط به اسناد را ببینید.