जगह की जानकारी

iOS के लिए Places SDK, आपके ऐप्लिकेशन को जगहों के बारे में ज़्यादा जानकारी देता है. इसमें जगह का नाम और पता, अक्षांश/देशांतर निर्देशांक के तौर पर बताई गई भौगोलिक जगह, जगह का टाइप (जैसे, नाइट क्लब, पेट स्टोर, म्यूज़ियम) वगैरह शामिल है. किसी जगह की जानकारी ऐक्सेस करने के लिए, जगह के आईडी का इस्तेमाल किया जा सकता है. यह एक ऐसा आइडेंटिफ़ायर है जो किसी जगह की खास तौर पर पहचान करता है.

जगह की जानकारी

GMSPlace क्लास, किसी जगह की जानकारी देती है. GMSPlace ऑब्जेक्ट को इन तरीकों से ऐक्सेस किया जा सकता है:

किसी जगह की जानकारी का अनुरोध करते समय, आपको यह बताना होगा कि आपको किस तरह का डेटा चाहिए. इसके लिए, GMSPlaceField पास करें. इसमें, दिखाए जाने वाले डेटा टाइप की जानकारी दें. यह एक अहम बात है, क्योंकि इससे हर अनुरोध की लागत पर असर पड़ेगा.

जगह के डेटा के नतीजे खाली नहीं हो सकते. इसलिए, सिर्फ़ डेटा वाली जगहों के नतीजे दिखाए जाते हैं. उदाहरण के लिए, अगर अनुरोध की गई जगह की कोई फ़ोटो नहीं है, तो नतीजे में photos फ़ील्ड मौजूद नहीं होगा.

यहां दिए गए उदाहरण में, दो फ़ील्ड वैल्यू की सूची पास की गई है, ताकि अनुरोध से मिले डेटा की जानकारी दी जा सके:

Swift

      // A hotel in Saigon with an attribution.
      let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

      // Specify the place data types to return.
      let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
      UInt(GMSPlaceField.placeID.rawValue))
  

Objective-C

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

      // Specify the place data types to return.
      GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
  

जगह की जानकारी वाले फ़ील्ड के बारे में ज़्यादा जानें. जगह की जानकारी के डेटा के अनुरोधों के लिए बिलिंग कैसे की जाती है, इस बारे में ज़्यादा जानने के लिए, इस्तेमाल और बिलिंग देखें.

GMSPlace क्लास में, जगह की जानकारी से जुड़ा यह डेटा शामिल हो सकता है:

  • name – जगह का नाम.
  • editorialSummary – इससे किसी जगह की जानकारी मिलती है.
  • placeID – जगह के लिए टेक्स्ट आइडेंटिफ़ायर. इस पेज पर, जगह के आईडी के बारे में ज़्यादा जानें.
  • coordinate – जगह की भौगोलिक जानकारी, जिसे अक्षांश और देशांतर निर्देशांक के तौर पर बताया गया है.
  • phoneNumber – अंतरराष्ट्रीय फ़ॉर्मैट में जगह का फ़ोन नंबर.
  • formattedAddress – इस जगह का पता, जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है.

    अक्सर यह पता, डाक पते के बराबर होता है. ध्यान दें कि लाइसेंस से जुड़ी पाबंदियों की वजह से, यूनाइटेड किंगडम जैसे कुछ देशों में सही डाक पते शेयर करने की अनुमति नहीं है.

    फ़ॉर्मैट किया गया पता, लॉजिकल तौर पर एक या उससे ज़्यादा पते के कॉम्पोनेंट से बना होता है. उदाहरण के लिए, पते "111 8th Avenue, New York, NY" में ये कॉम्पोनेंट शामिल हैं: "111" (सड़क का नंबर), "8th Avenue" (रास्ता), "New York" (शहर), और "NY" (अमेरिका का राज्य).

    फ़ॉर्मैट किए गए पते को प्रोग्राम के हिसाब से पार्स न करें. इसके बजाय, आपको पते के अलग-अलग कॉम्पोनेंट का इस्तेमाल करना चाहिए. एपीआई से मिली जानकारी में, फ़ॉर्मैट किए गए पते के फ़ील्ड के साथ-साथ ये कॉम्पोनेंट भी शामिल होते हैं.

  • openingHours – जगह के कारोबार के खुले होने का समय (जैसा कि GMSOpeningHours से दिखाया गया है). हफ़्ते के हर दिन के लिए, कारोबार के खुले होने के समय की स्थानीय भाषा में स्ट्रिंग की सूची पाने के लिए, GMSOpeningHours.weekdayText को कॉल करें. GMSOpeningHours.Periods को कॉल करके, GMSPeriod की ऐसी सूची पाना जिसमें ज़्यादा जानकारी शामिल हो. यह जानकारी, weekdayText से मिले डेटा के बराबर होती है. ध्यान दें: अगर कोई जगह हमेशा खुली रहती है, तो समयावधि को रविवार की आधी रात के तौर पर दिखाया जाता है. साथ ही, closeEvent की वैल्यू शून्य होती है.
  • currentOpeningHours और secondaryOpeningHours – ये फ़ील्ड, किसी जगह के शेड्यूल में छुट्टी और कुछ समय के लिए किए गए बदलावों को दिखाते हैं.
  • addressComponents – GMSAddressComponent ऑब्जेक्ट का एक कलेक्शन, जो किसी जगह के पते के कॉम्पोनेंट दिखाता है. इन कॉम्पोनेंट का इस्तेमाल, किसी जगह के पते के बारे में स्ट्रक्चर्ड जानकारी निकालने के लिए किया जाता है. उदाहरण के लिए, यह पता लगाना कि कोई जगह किस शहर में है. पते को फ़ॉर्मैट करने के लिए, इन कॉम्पोनेंट का इस्तेमाल न करें. इसके बजाय, formattedAddress प्रॉपर्टी का इस्तेमाल करें. इससे स्थानीय भाषा में फ़ॉर्मैट किया गया पता मिलता है.

    addressComponents अरे के बारे में यहां दी गई बातों का ध्यान रखें:

    • पते के कॉम्पोनेंट के कलेक्शन में, formattedAddress से ज़्यादा कॉम्पोनेंट हो सकते हैं.
    • यह ज़रूरी नहीं है कि कलेक्शन में, पते वाली सभी राजनैतिक इकाइयां शामिल हों. इसमें formattedAddress में शामिल इकाइयों के अलावा, अन्य इकाइयां भी शामिल हो सकती हैं.
    • इस बात की कोई गारंटी नहीं है कि अनुरोधों के बीच जवाब का फ़ॉर्मैट एक जैसा रहेगा. खास तौर पर, addressComponents की संख्या, अनुरोध किए गए पते के हिसाब से अलग-अलग होती है. साथ ही, एक ही पते के लिए समय के साथ बदल सकती है. अरे में कॉम्पोनेंट की पोज़िशन बदली जा सकती है. कॉम्पोनेंट का टाइप बदल सकता है. ऐसा हो सकता है कि बाद में मिलने वाले जवाब में कोई कॉम्पोनेंट मौजूद न हो.
  • userRatingsTotal – इससे पता चलता है कि जगह की रेटिंग कितनी समीक्षाओं के आधार पर तय की गई है.

GMSPlace क्लास में ये मेंबर फ़ंक्शन शामिल होते हैं:

  • isOpen यह हिसाब लगाता है कि कोई जगह दिए गए समय पर खुली है या नहीं. यह openingHours, UTCOffsetMinutes, और मौजूदा तारीख और समय के आधार पर हिसाब लगाता है.
  • isOpenAtDate यह हिसाब लगाता है कि कोई जगह किसी तारीख को खुली है या नहीं. यह हिसाब, openingHours, UTCOffsetMinutes, और मौजूदा तारीख और समय के आधार पर लगाया जाता है.
  • खुलने के समय और/या तारीखों की जानकारी पाने के लिए इन फ़ंक्शन का इस्तेमाल करते समय, ओरिजनल fetchPlaceFromPlaceID: या findPlaceLikelihoodsFromUserLocationWithPlaceFields: अनुरोध में GMSPlaceFieldOpeningHours और GMSPlaceFieldUTCOffsetMinutes, दोनों फ़ील्ड की जानकारी देना ज़रूरी है. अगर इनमें से कोई भी फ़ील्ड मौजूद नहीं है, तो नतीजे के तौर पर मिलने वाले GMSPlace ऑब्जेक्ट में, कारोबार के खुलने का समय या तारीखें शामिल नहीं होंगी. साथ ही, कॉल GMSPlaceOpenStatusUnknown दिखाएगा. सटीक नतीजे पाने के लिए, जगह की जानकारी के अपने मूल अनुरोध में GMSPlaceFieldBusinessStatus और GMSPlaceFieldUTCOffsetMinutes फ़ील्ड का अनुरोध करें. अगर अनुरोध नहीं किया जाता है, तो यह माना जाता है कि कारोबार चालू है.

    Place Details के साथ isOpen का इस्तेमाल करने का तरीका जानने के लिए, कारोबार के खुले होने का समय जानने का तरीका बताने वाला वीडियो देखें.

कारोबार के खुले होने के खास घंटे सेट करना

कारोबार के खुले होने के सामान्य समय की जानकारी openingHours से मिलती है. वहीं, currentOpeningHours और secondaryOpeningHours से छुट्टी और कुछ समय के लिए शेड्यूल में किए गए बदलावों की जानकारी मिलती है. इन खास दिनों के लिए, कारोबार के खुले होने के समय को फ़िल्टर करके दिखाया जा सकता है. हालांकि, ऐसा तब ही किया जा सकता है, जब यह जानकारी उपलब्ध हो.

Swift

    func examineOpeningHours(place: GMSPlace) {

      // Check if the current opening hours contains a special day that has exceptional hours
      guard let currentOpeningHours = place.currentOpeningHours else { return }
      if let specialDays = currentOpeningHours.specialDays {
        guard !specialDays.isEmpty else { return }
        if let specialDay = specialDays.filter { $0.isExceptional }.first  {
          // Indicate exceptional hours
        }
      }

      // Check if current opening hours contains a truncated time period
      let periods = currentOpeningHours.periods

      if !periods.isEmpty {
        for period in periods {
          let open = period.open
          let close = period.close

          if let open = open {
            let date = open.date

            if open.isTruncated {
              // Indicate truncated time period
            }
          }
        }
      }

      // Check if the place's secondary opening hours indicate when delivery is available
      let secondaryOpeningHours = place.secondaryOpeningHours
      guard let hoursType = secondaryOpeningHours.first?.hoursType else {
      return
      }

      if (hoursType == GMSPlaceHoursTypeDelivery) {
        // Indicate hours where delivery is available
      }
  }

Objective-C

- (void)examineOpeningHours:(GMSPlace *) place {

    // Check if the current opening hours contains a special day that has exceptional hours
    GMSOpeningHours *currentOpeningHours = place.currentOpeningHours;
    if (currentOpeningHours != nil) {
      NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays;
      if ([specialDays count] != 0) {
        for (GMSPlaceSpecialDay *specialDay in specialDays) {
          NSDate *date = specialDay.date;
          if ([specialDay isExceptional]) {
            // Indicate exceptional hours
          }
        }
      }
    }

    // Check if current opening hours contains a truncated time period
    NSArray <GMSPeriod *> * periods = currentOpeningHours.periods;

    if ([periods count] != 0) {
      for (GMSPeriod * period in periods) {
        GMSTimeOfWeek *open = period.open;
        GMSTimeOfWeek *close = period.close;

        if (open) {
          if ([open isTruncated]) {
            // Indicate truncated time period
          }
        }
      }
    }

    // Check if the place's secondary opening hours indicate when delivery is available
    GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours;
    GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType;

    if (hoursType == GMSPlaceHoursTypeDelivery) {
      // Indicate hours where delivery is available
    }
}

आईडी के हिसाब से जगह की जानकारी फ़ेच करें

जगह का आईडी, टेक्स्ट के तौर पर मौजूद एक आइडेंटिफ़ायर होता है. इससे किसी जगह की खास तौर पर पहचान की जाती है. iOS के लिए Places SDK टूल में, GMSPlace ऑब्जेक्ट से किसी जगह का आईडी वापस पाया जा सकता है. जगह के आईडी को सेव किया जा सकता है. साथ ही, बाद में GMSPlace ऑब्जेक्ट को फिर से पाने के लिए, इसका इस्तेमाल किया जा सकता है.

आईडी से किसी जगह की जानकारी पाने के लिए, GMSPlacesClient fetchPlaceFromPlaceID: को कॉल करें और ये पैरामीटर पास करें:

  • इस स्ट्रिंग में जगह का आईडी होता है.
  • एक या उससे ज़्यादा GMSPlaceField, जो दिखाते हैं कि किस तरह का डेटा दिखाया जाना चाहिए.
  • अगर कॉल, ऑटोकंप्लीट क्वेरी को पूरा करने के लिए किया जाता है, तो सेशन टोकन. अगर ऐसा नहीं है, तो nil पास करें.
  • नतीजे को मैनेज करने के लिए GMSPlaceResultCallback.

एपीआई, तय किए गए कॉलबैक का तरीका शुरू करता है और GMSPlace ऑब्जेक्ट को पास करता है. अगर जगह नहीं मिलती है, तो जगह का ऑब्जेक्ट शून्य होता है.

iOS के लिए Places Swift SDK

// Initialize Places Swift Client.
let placesClient = PlacesClient.shared

// A hotel in Saigon with an attribution
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
    
// Fetch Place Request.
let fetchPlaceRequest = FetchPlaceRequest(
  placeID: placeID,
  placeProperties: [.displayName]
)
    
Task {
  switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
  case .success(let place):
    print("The selected place is: \(place.displayName): \(String(describing: place.description))")
  case .failure(let placesError):
    print("Place not found: \(placeID); \(placesError)")
  }
}

Swift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
  UInt(GMSPlaceField.placeID.rawValue))!

placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: {
  (place: GMSPlace?, error: Error?) in
  if let error = error {
    print("An error occurred: \(error.localizedDescription)")
    return
  }
  if let place = place {
    self.lblName?.text = place.name
    print("The selected place is: \(place.name)")
  }
})

Objective-C

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

// Specify the place data types to return.
GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);

[_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"An error occurred %@", [error localizedDescription]);
    return;
  }
  if (place != nil) {
    NSLog(@"The selected place is: %@", [place name]);
  }
}];

अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाना

जब आपका ऐप्लिकेशन GMSPlacesClient lookUpPlaceID:callback: से मिली जानकारी दिखाता है, तो उसे एट्रिब्यूशन भी दिखाने होंगे. एट्रिब्यूशन के बारे में दस्तावेज़ देखें.

जगह के आईडी के बारे में ज़्यादा जानकारी

Places SDK for iOS में इस्तेमाल किया जाने वाला जगह का आईडी, वही आइडेंटिफ़ायर है जिसका इस्तेमाल Places API, Places SDK for Android, और अन्य Google API में किया जाता है.

हर जगह का आईडी सिर्फ़ एक जगह के लिए हो सकता है. हालांकि, एक जगह के लिए एक से ज़्यादा आईडी हो सकते हैं.

कुछ परिस्थितियों में, किसी जगह को नया जगह का आईडी मिल सकता है. उदाहरण के लिए, ऐसा तब हो सकता है, जब कोई कारोबार किसी नई जगह पर शिफ़्ट हो जाए.

किसी जगह का आईडी डालकर, उस जगह की जानकारी का अनुरोध करने पर, आपको हमेशा जवाब में उसी जगह की जानकारी मिलेगी. हालांकि, ऐसा तब होगा, जब वह जगह अब भी मौजूद हो. हालांकि, ध्यान दें कि जवाब में ऐसा जगह का आईडी हो सकता है जो आपके अनुरोध में दिए गए जगह का आईडी से अलग हो.

ज़्यादा जानकारी के लिए, जगह के आईडी की खास जानकारी देखें.