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

प्लैटफ़ॉर्म चुनें: Android iOS वेब सेवा

यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर

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

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

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

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

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

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

  3. GMSFetchPhotoRequest बनाने के लिए, GMSPlacePhotoMetadata ऑब्जेक्ट का इस्तेमाल करें. इसमें अनुरोध की गई इमेज का ज़्यादा से ज़्यादा साइज़ भी शामिल है.

  4. कैटगरी में मौजूद हर GMSPlacePhotoMetadata ऑब्जेक्ट के लिए, [GMSPlacesClient fetchPhotoWithRequest:callback:] को कॉल करें और GMSFetchPhotoRequest ऑब्जेक्ट पास करें. यह तरीका, GMSFetchPhotoResultCallback कॉलबैक को UIImage के तौर पर इस्तेमाल की जा सकने वाली बिटमैप इमेज के साथ कॉल करता है.

किसी जगह की फ़ोटो का अनुरोध करने का दूसरा तरीका यह है कि जगह की जानकारी (नई) का अनुरोध करें. इसके लिए, फ़ील्ड की सूची में GMSPlacePropertyPhotos को शामिल करें. जगह की जानकारी के लिए कॉल करने का फ़ायदा यह है कि रिस्पॉन्स GMSPlace ऑब्जेक्ट में, जगह की फ़ोटो और अन्य डेटा फ़ील्ड शामिल हो सकते हैं.

नमूना कोड

नीचे दिए गए उदाहरण में, जगह के आईडी का इस्तेमाल करके, जवाब के तौर पर मिली सूची में मौजूद पहली फ़ोटो को पाने का तरीका बताया गया है. इस तरीके का इस्तेमाल, अपने ऐप्लिकेशन में बनाए जाने वाले तरीके के लिए टेंप्लेट के तौर पर किया जा सकता है.

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
}

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
    }
  }];
}];

कैश मेमोरी में सेव करना

[GMSPlacesClient loadPlacePhoto:callback:] या [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] का इस्तेमाल करके लोड की गई फ़ोटो को, शेयर किए गए NSURLCache में Foundation यूआरएल लोडिंग सिस्टम, डिस्क और मेमोरी, दोनों में कैश मेमोरी में सेव करता है.

कैशिंग के तरीके को कॉन्फ़िगर करने के लिए, शेयर किए गए यूआरएल के कैश मेमोरी को बदला जा सकता है. इसके लिए, अपने ऐप्लिकेशन के डेलिगेट के application:didFinishLaunchingWithOptions: तरीके में [NSURLCache setSharedURLCache:] का इस्तेमाल करें.

अगर आपको अपने ऐप्लिकेशन को Places SDK for iOS के साथ NSURLCache शेयर नहीं करना है, तो नया NSURLCache बनाएं. इसके बाद, इसे सिर्फ़ अपने ऐप्लिकेशन में इस्तेमाल करें. इसे शेयर की गई कैश मेमोरी के तौर पर सेट न करें.

एट्रिब्यूशन

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