अपने ऐप्लिकेशन में जगह की फ़ोटो दिखाने का अनुरोध करने के लिए, Places SDK for iOS (नया) का इस्तेमाल किया जा सकता है. फ़ोटो की सेवा से मिली फ़ोटो, कई सोर्स से मिलती हैं. इनमें कारोबार के मालिक और उपयोगकर्ता की ओर से दी गई फ़ोटो भी शामिल हैं.
फ़ोटो, बिटमैप इमेज होती हैं. इन्हें UIImage ऑब्जेक्ट से दिखाया जाता है. बिटमैप इमेज का साइज़ ज़्यादा से ज़्यादा 4,800 x 4,800 पिक्सल हो सकता है.
इमेज का अनुरोध करना
किसी जगह के लिए, ज़्यादा से ज़्यादा 10 फ़ोटो का अनुरोध किया जा सकता है:
प्लेस आईडी और
GMSPlacePhotoMetadataResultCallback
कॉलबैक पास करके,[GMSPlacesClient lookUpPhotosForPlaceID]
को कॉल करें. यह अनुरोध,GMSPlacePhotoMetadataResultCallback
कॉलबैक कोGMSPlacePhotoMetadataList
ऑब्जेक्ट के साथ कॉल करता है.कॉलबैक में मौजूद
GMSPlacePhotoMetadataList
ऑब्जेक्ट कीresults
ऐरे प्रॉपर्टी में फ़ोटो होती हैं. यहां हर फ़ोटो को एकGMSPlacePhotoMetadata
ऑब्जेक्ट से दिखाया जाता है.GMSPlacePhotoMetadata
ऑब्जेक्ट का इस्तेमाल करके,GMSFetchPhotoRequest
बनाएं. इसमें, अनुरोध की गई इमेज का ज़्यादा से ज़्यादा साइज़ शामिल करें.ऐरे में मौजूद हर
GMSPlacePhotoMetadata
ऑब्जेक्ट के लिए,GMSFetchPhotoRequest
ऑब्जेक्ट को पास करके[GMSPlacesClient fetchPhotoWithRequest:callback:]
को कॉल करें. यह तरीका, UIImage के तौर पर इस्तेमाल की जा सकने वाली बिटमैप इमेज के साथGMSFetchPhotoResultCallback
कॉलबैक को कॉल करता है.
किसी जगह की फ़ोटो का अनुरोध करने का एक और तरीका है, जगह की जानकारी (नया) का अनुरोध करना. इसके लिए, फ़ील्ड की सूची में GMSPlacePropertyPhotos
को शामिल करें. जगह की जानकारी का अनुरोध करने का फ़ायदा यह है कि रिस्पॉन्स GMSPlace
ऑब्जेक्ट में, जगह के लिए फ़ोटो और अन्य डेटा फ़ील्ड शामिल किए जा सकते हैं.
नमूना कोड
यहां दिए गए उदाहरण में, जगह का आईडी डालने पर, रिटर्न की गई सूची में से पहली फ़ोटो मिलती है. इस तरीके को टेंप्लेट के तौर पर इस्तेमाल करके, अपने ऐप्लिकेशन में कोई दूसरा तरीका बनाया जा सकता है.
Swift
// 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: ") } ) }
Objective-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 } }]; }];
iOS के लिए Places 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 }
कैश मेमोरी में सेव करना
[GMSPlacesClient loadPlacePhoto:callback:]
या [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
का इस्तेमाल करके लोड की गई फ़ोटो, शेयर किए गए NSURLCache
में फ़ाउंडेशन यूआरएल लोड करने वाले सिस्टम की मदद से, डिस्क और मेमोरी, दोनों में कैश मेमोरी में सेव की जाती हैं.
कैश मेमोरी के इस्तेमाल के तरीके को कॉन्फ़िगर करने के लिए, अपने ऐप्लिकेशन डेलीगेट के application:didFinishLaunchingWithOptions:
तरीके में [NSURLCache setSharedURLCache:]
का इस्तेमाल करके, शेयर किए गए यूआरएल का कैश मेमोरी बदला जा सकता है.
अगर आपको अपने ऐप्लिकेशन को iOS के लिए Places SDK टूल के साथ कोई NSURLCache
शेयर नहीं करना है, तो एक नया NSURLCache
बनाएं और इसे शेयर किए गए कैश मेमोरी के तौर पर सेट किए बिना, अपने ऐप्लिकेशन में खास तौर पर इस्तेमाल करें.
एट्रिब्यूशन
ज़्यादातर मामलों में, जगह की फ़ोटो का इस्तेमाल एट्रिब्यूशन के बिना किया जा सकता है. इसके अलावा, इमेज में ज़रूरी एट्रिब्यूशन शामिल किया जा सकता है. हालांकि, अगर दिखाए गए GMSPlacePhotoMetadata
इंस्टेंस में कोई attributions
या authorAttribution
शामिल है, तो आपको अपने ऐप्लिकेशन में इमेज दिखाने के लिए, इन एट्रिब्यूशन को शामिल करना होगा. एट्रिब्यूशन के बारे में दस्तावेज़ देखें.