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

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

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

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

इमेज के लिए अनुरोध करें

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

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

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

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

  4. कलेक्शन में मौजूद हर GMSPlacePhotoMetadata ऑब्जेक्ट के लिए, GMSFetchPhotoRequest ऑब्जेक्ट को पास करने के लिए, [GMSPlacesClient fetchPhotoWithRequest:callback:] को कॉल करें. इस तरीके से, 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
    }
  }];
}];

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 शामिल है, तो आपको जहां भी इमेज दिखाई जा रही हो वहां अपने ऐप्लिकेशन में इन एट्रिब्यूशन को शामिल करना होगा. एट्रिब्यूशन से जुड़े दस्तावेज़ देखें.