আপনার অ্যাপ্লিকেশনে প্রদর্শনের জন্য স্থানের ছবি অনুরোধ করতে আপনি iOS-এর জন্য Places SDK (নতুন) ব্যবহার করতে পারেন। ফটো পরিষেবা দ্বারা প্রাপ্ত ছবিগুলি বিভিন্ন উৎস থেকে আসে, যার মধ্যে ব্যবসার মালিক এবং ব্যবহারকারীদের দেওয়া ছবিও অন্তর্ভুক্ত।
ছবি হলো বিটম্যাপ ইমেজ যা একটি UIImage অবজেক্ট দ্বারা উপস্থাপিত হয়। একটি বিটম্যাপ ইমেজের সর্বোচ্চ আকার হলো ৪৮০০ বাই ৪৮০০ পিক্সেল।
একটি ছবির জন্য অনুরোধ করুন
একটি জায়গার জন্য আপনি সর্বোচ্চ ১০টি ছবির অনুরোধ করতে পারেন:
একটি প্লেস আইডি এবং একটি
GMSPlacePhotoMetadataResultCallbackকলব্যাক পাস করে[GMSPlacesClient lookUpPhotosForPlaceID]কল করুন। এই অনুরোধটি একটিGMSPlacePhotoMetadataListঅবজেক্ট সহGMSPlacePhotoMetadataResultCallbackকলব্যাকটিকে কল করে।কলব্যাকে থাকা
GMSPlacePhotoMetadataListঅবজেক্টেরresultsঅ্যারে প্রপার্টিতে ছবিগুলো থাকে, যেখানে প্রতিটি ছবি একটিGMSPlacePhotoMetadataঅবজেক্ট দ্বারা উপস্থাপিত হয়।অনুরোধকৃত ছবির সর্বোচ্চ আকার উল্লেখ করে একটি
GMSFetchPhotoRequestতৈরি করতেGMSPlacePhotoMetadataঅবজেক্টটি ব্যবহার করুন।অ্যারের প্রতিটি
GMSPlacePhotoMetadataঅবজেক্টের জন্য,GMSFetchPhotoRequestঅবজেক্টটি পাস করে[GMSPlacesClient fetchPhotoWithRequest:callback:]মেথডটি কল করুন। এই মেথডটি একটি ব্যবহারযোগ্য বিটম্যাপ ইমেজকে UIImage হিসেবে ব্যবহার করেGMSFetchPhotoResultCallbackকলব্যাক মেথডটিকে কল করে।
কোনো স্থানের জন্য ছবি অনুরোধ করার আরেকটি উপায় হলো একটি প্লেস ডিটেইলস (নিউ) অনুরোধ করা, যেখানে ফিল্ড লিস্টে GMSPlacePropertyPhotos অন্তর্ভুক্ত থাকবে। প্লেস ডিটেইলস কল করার সুবিধা হলো, এর রেসপন্স GMSPlace অবজেক্টটিতে ছবি এবং স্থানটির জন্য আপনার প্রয়োজনীয় অন্য যেকোনো ডেটা ফিল্ড থাকতে পারে।
নমুনা কোড
নিম্নলিখিত উদাহরণ পদ্ধতিটি একটি স্থানের আইডি গ্রহণ করে এবং ফেরত আসা তালিকা থেকে প্রথম ছবিটি নিয়ে আসে। আপনি আপনার নিজের অ্যাপে যে পদ্ধতিটি তৈরি করবেন, তার জন্য এই পদ্ধতিটিকে একটি টেমপ্লেট হিসেবে ব্যবহার করতে পারেন।
প্লেসেস সুইফট এসডিকে
// 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: ") } ) }
উদ্দেশ্য-সি
// 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:] ব্যবহার করে লোড করা ফটোগুলি ফাউন্ডেশন ইউআরএল লোডিং সিস্টেম দ্বারা শেয়ার্ড NSURLCache এ ডিস্ক এবং মেমোরি উভয় স্থানেই ক্যাশ করা হয়।
ক্যাশিং আচরণ কনফিগার করতে, আপনি আপনার অ্যাপ্লিকেশন ডেলিগেটের application:didFinishLaunchingWithOptions: মেথডে [NSURLCache setSharedURLCache:] ব্যবহার করে শেয়ার্ড ইউআরএল ক্যাশে পরিবর্তন করতে পারেন।
আপনি যদি না চান যে আপনার অ্যাপ্লিকেশনটি iOS-এর জন্য Places SDK-এর সাথে একটি NSURLCache শেয়ার করুক, তাহলে আপনি একটি নতুন NSURLCache তৈরি করতে পারেন এবং এটিকে শেয়ার্ড ক্যাশে হিসেবে সেট না করে শুধুমাত্র আপনার অ্যাপের মধ্যেই ব্যবহার করতে পারেন।
অ্যাট্রিবিউশন
বেশিরভাগ ক্ষেত্রে, স্থানের ছবি অ্যাট্রিবিউশন ছাড়াই ব্যবহার করা যায়, অথবা ছবির অংশ হিসেবে প্রয়োজনীয় অ্যাট্রিবিউশন অন্তর্ভুক্ত থাকে। তবে, যদি ফেরত আসা GMSPlacePhotoMetadata ইনস্ট্যান্সে কোনো attributions বা authorAttribution অন্তর্ভুক্ত থাকে, তাহলে আপনার অ্যাপ্লিকেশনে যেখানেই ছবিটি প্রদর্শন করবেন, আপনাকে অবশ্যই এই অ্যাট্রিবিউশনগুলো অন্তর্ভুক্ত করতে হবে। অ্যাট্রিবিউশন সম্পর্কিত ডকুমেন্টেশন দেখুন।