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

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

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

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 फ़ील्ड का अनुरोध करें. अगर अनुरोध नहीं किया जाता है, तो यह मान लिया जाता है कि कारोबार चालू है.

    जगह की जानकारी के साथ 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
    }
}

आईडी के हिसाब से जगह की जानकारी पाना

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

आईडी के हिसाब से जगह की जानकारी पाने के लिए, GMSPlacesClient fetchPlaceFromPlaceID: को कॉल करें. इसके लिए, इन पैरामीटर का इस्तेमाल करें:

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

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

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

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

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