iOS के लिए Places SDK, आपके ऐप्लिकेशन को जगहों के बारे में ज़्यादा जानकारी देता है. इसमें जगह का नाम और पता, अक्षांश/देशांतर के निर्देशांक के तौर पर बताई गई भौगोलिक जगह, जगह का टाइप (जैसे, नाइट क्लब, पालतू जानवरों का स्टोर, संग्रहालय) वगैरह शामिल है. किसी खास जगह के लिए यह जानकारी ऐक्सेस करने के लिए, जगह का आईडी इस्तेमाल किया जा सकता है. यह एक ऐसा आइडेंटिफ़ायर होता है जो किसी जगह की खास पहचान करता है.
जगह की जानकारी
GMSPlace
क्लास, किसी खास जगह के बारे में जानकारी देती है. GMSPlace
ऑब्जेक्ट को इन तरीकों से ऐक्सेस किया जा सकता है:
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
पर कॉल करें. मौजूदा जगह की जानकारी पाने के लिए गाइड देखें.GMSPlaceField
, प्लेस आईडी, और कॉलबैक का तरीका पास करके,GMSPlacesClient fetchPlaceFromPlaceID:
को कॉल करें. जगह की जानकारी के अनुरोधों के लिए, अगर आपने अनुरोध में कम से कम एक फ़ील्ड नहीं दिया है या अनुरोध सेfields
पैरामीटर को हटा दिया है, तो सभी संभावित फ़ील्ड दिखाए जाएंगे और आपसे इसके हिसाब से शुल्क लिया जाएगा. आईडी से जगह की जानकारी पाने के लिए गाइड देखें.
किसी जगह का अनुरोध करते समय, आपको यह बताना होगा कि आपको जगह का किस तरह का डेटा चाहिए. ऐसा करने के लिए, 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 } }
आईडी के हिसाब से जगह की जानकारी पाना
प्लेस आईडी, टेक्स्ट वाला एक आइडेंटिफ़ायर होता है. इससे किसी जगह की खास पहचान की जाती है. iOS के लिए Places SDK में, किसी जगह का आईडी GMSPlace
ऑब्जेक्ट से पाया जा सकता है. प्लेस आईडी को सेव किया जा सकता है और इसका इस्तेमाल, बाद में GMSPlace
ऑब्जेक्ट को फिर से पाने के लिए किया जा सकता है.
आईडी के हिसाब से कोई जगह पाने के लिए, इन पैरामीटर को पास करके GMSPlacesClient
fetchPlaceFromPlaceID:
को कॉल करें:
- ऐसी स्ट्रिंग जिसमें प्लेस आईडी शामिल हो.
- एक या उससे ज़्यादा
GMSPlaceField
, जो दिखाते हैं कि किस तरह का डेटा दिखाना है. - अगर कॉल, अपने-आप पूरी होने वाली क्वेरी को पूरा करने के लिए किया जाता है, तो सेशन टोकन. अगर ऐसा नहीं है, तो nil पास करें.
- नतीजे को मैनेज करने के लिए
GMSPlaceResultCallback
.
एपीआई, तय किए गए कॉलबैक तरीके को कॉल करता है. इसके लिए, वह GMSPlace
ऑब्जेक्ट को पास करता है. अगर जगह नहीं मिलती है, तो जगह का ऑब्जेक्ट शून्य होता है.
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:
से मिली जानकारी दिखाता है, तो उसे एट्रिब्यूशन भी दिखाने होंगे.
एट्रिब्यूशन के बारे में दस्तावेज़ देखें.
प्लेस आईडी के बारे में ज़्यादा जानकारी
iOS के लिए Places SDK टूल में इस्तेमाल किया जाने वाला जगह का आईडी, वही आइडेंटिफ़ायर है जो Places API, Android के लिए Places SDK टूल, और Google के अन्य एपीआई में इस्तेमाल किया जाता है.
हर प्लेस आईडी, सिर्फ़ एक जगह के बारे में बता सकता है. हालांकि, किसी एक जगह के लिए एक से ज़्यादा प्लेस आईडी हो सकते हैं.
कुछ स्थितियों में, किसी जगह को नया प्लेस आईडी मिल सकता है. उदाहरण के लिए, ऐसा तब हो सकता है, जब कोई कारोबार किसी नई जगह पर शिफ़्ट हो जाए.
किसी जगह का आईडी डालकर अनुरोध करने पर, आपको भरोसा रहेगा कि आपको जवाब में हमेशा वही जगह दिखेगी (अगर वह जगह अब भी मौजूद है). हालांकि, ध्यान दें कि जवाब में ऐसा प्लेस आईडी हो सकता है जो आपके अनुरोध में दिए गए प्लेस आईडी से अलग हो.
ज़्यादा जानकारी के लिए, जगह के आईडी की खास जानकारी देखें.