जगह की फ़ोटो (नई)

अपने ऐप्लिकेशन में स्थान फ़ोटो दिखाने का अनुरोध करने के लिए आप iOS के लिए Places SDK (नया) का उपयोग कर सकते हैं. फ़ोटो सेवा से वापस ली गई फ़ोटो कई तरह के स्रोतों से मिलती हैं. इनमें कारोबार के मालिक और उपयोगकर्ता के योगदान वाली फ़ोटो शामिल हैं.

फ़ोटो, बिट मैप इमेज होती हैं, जिन्हें UIImage ऑब्जेक्ट के ज़रिए दिखाया जाता है. बिट मैप इमेज का साइज़ ज़्यादा से ज़्यादा 4800 x 4800 पिक्सल का होता है.

इमेज का अनुरोध करें

किसी जगह के लिए, ज़्यादा से ज़्यादा 10 फ़ोटो का अनुरोध किया जा सकता है:

  1. जगह का आईडी और GMSPlacePhotoMetadataResultCallback कॉलबैक पास करते हुए, [GMSPlacesClient lookUpPhotosForPlaceID] पर कॉल करें. यह अनुरोध, GMSPlacePhotoMetadataResultCallback कॉलबैक को GMSPlacePhotoMetadataList ऑब्जेक्ट के साथ कॉल करता है.

  2. कॉलबैक में GMSPlacePhotoMetadataList ऑब्जेक्ट से, results कलेक्शन प्रॉपर्टी में वे फ़ोटो होती हैं जिनमें हर फ़ोटो को GMSPlacePhotoMetadata ऑब्जेक्ट के तौर पर दिखाया जाता है.

  3. कलेक्शन में मौजूद हर GMSPlacePhotoMetadata ऑब्जेक्ट के लिए, [GMSPlacesClient loadPlacePhoto:callback:] या [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] को कॉल करें. ये तरीके कॉलबैक को यूज़र इंटरफ़ेस (यूआई) इमेज के रूप में इस्तेमाल करने लायक बिट मैप इमेज के साथ कॉल करते हैं.

किसी जगह के लिए फ़ोटो का अनुरोध करने का एक और तरीका यह है कि आप जगह की जानकारी (नई) का अनुरोध करें. इसमें फ़ील्ड की सूची में 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 = photos.first else { return }

  // Request individual photos in the response list
  let fetchPhotoRequest = GMSFetchPhotoRequest(metadata: photoMetadata, maxSize: CGSizeMake(4800, 4800)
  placesClient.fetchPhoto(fetchPhotoRequest: fetchPhotoRequest, callback: {
    (photoURL: URL?, error: Error?) in
      guard let photoURL, error == nil else { return }
      print("Photo URL: \(photoURL)")
  })
};

Objective-C

// A hotel in Saigon with an attribution.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

[placesClient lookUpPhotosForPlaceID:placeID callback: (GMSPlacePhotoMetadataList *list, NSError *error) {
  GMSPlacePhotoMetadata *photoMetadata = [list firstObject];

  if (photoMetadata == nil) { return }

  // Request individual photos in the response list
  GMSFetchPhotoRequest *fetchPhotoRequest = [[GMSFetchPhotoRequest alloc] initWithPhotoMetadata:photoMetadata maxSize:CGSizeMake(4800, 4800)];
  [placesClient fetchPhoto:fetchPhotoRequest, callback: ^(NSURL *_Nullable photoURL, NSError *_Nullable error) {
    if (error == null) {
      NSLog(@"Photo URL: %@", photoURL)
    }
  }];
}];

GooglePlacesSwift

// 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 के लिए, 'जगहें' SDK टूल के साथ NSURLCache शेयर नहीं करना है, तो एक नया NSURLCache बनाएं. साथ ही, इसे खास तौर पर अपने ऐप्लिकेशन में इस्तेमाल करें. इसके लिए, इसे शेयर की गई कैश मेमोरी के तौर पर सेट करना ज़रूरी नहीं है.

एट्रिब्यूशन

ज़्यादातर मामलों में, स्थान फ़ोटो का इस्तेमाल एट्रिब्यूशन के बिना किया जा सकता है या इमेज के हिस्से के रूप में ज़रूरी एट्रिब्यूशन शामिल किया जाएगा. हालांकि, अगर दिखाए गए GMSPlacePhotoMetadata इंस्टेंस में कोई attributions या authorAttribution शामिल हो, तो आपको जहां भी इमेज दिखाई जाती है वहां आपको इन एट्रिब्यूशन को अपने ऐप्लिकेशन में शामिल करना होगा. एट्रिब्यूशन से जुड़ा दस्तावेज़ देखें.