میتوانید از Places SDK برای iOS برای درخواست عکسهای مکان برای نمایش در برنامهتان استفاده کنید. عکسهای ارائهشده توسط سرویس عکسها از منابع مختلفی از جمله صاحبان مشاغل و عکسهای ارائهشده توسط کاربر میآیند. برای بازیابی عکس برای یک مکان، باید مراحل زیر را انجام دهید:
- با
[GMSPlacesClient fetchPlaceFromPlaceId]
تماس بگیرید، رشته ای را با شناسه مکان و پاسخ تماس ارسال کنید. با این کار تماس با یک شیGMSPlacePhotoMetadataList
فراخوانی می شود. - در شی
GMSPlacePhotoMetadataList
به ویژگیresults
دسترسی پیدا کنید و عکسها را برای بارگیری از آرایه انتخاب کنید. - برای بارگیری هر
GMSPlacePhotoMetadata
از این لیست، با[GMSPlacesClient loadPlacePhoto:callback:]
یا[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
تماس بگیرید. اینها با یک UIImage قابل استفاده تماس برگشتی را فراخوانی می کنند. عکس ها می توانند حداکثر عرض یا ارتفاع 1600 پیکسل داشته باشند.
کد نمونه
روش مثال زیر یک شناسه مکان می گیرد و اولین عکس را در لیست برگشتی می گیرد. می توانید از این روش به عنوان الگوی روشی که در برنامه خود ایجاد می کنید استفاده کنید.
سویفت
// 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; } }) } })
هدف-C
// 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
برگشتی شامل یک انتساب باشد، باید هرجا که تصویر را نمایش میدهید، انتساب اضافی را در برنامه خود قرار دهید. توجه داشته باشید که پیوندهای موجود در منبع باید قابل لمس باشند. اسناد مربوط به اسناد را ببینید.
محدودیت های استفاده
بازیابی یک تصویر یک واحد سهمیه هزینه دارد. هیچ محدودیتی برای بازیابی متادیتای عکس وجود ندارد. درباره استفاده و صورتحساب بیشتر بخوانید.