'आस-पास खोजें (नया वर्शन)' सुविधा के लिए, खोजे जाने वाले इलाके की जानकारी इनपुट के तौर पर ली जाती है. यह जानकारी, सर्कल के तौर पर दी जाती है. सर्कल को अक्षांश और देशांतर के निर्देशांकों के हिसाब से तय किया जाता है. ये निर्देशांक, सर्कल के सेंटर पॉइंट के होते हैं. साथ ही, सर्कल की त्रिज्या मीटर में दी जाती है. इस अनुरोध के जवाब में, खोज के लिए तय की गई जगह में मौजूद मिलती-जुलती जगहों की सूची मिलती है. हर जगह को GMSPlace
ऑब्जेक्ट के तौर पर दिखाया जाता है.
डिफ़ॉल्ट रूप से, जवाब में खोज के दायरे में आने वाली सभी तरह की जगहें शामिल होती हैं. जवाब को फ़िल्टर करने के लिए, जगहों के टाइप की सूची दी जा सकती है. इससे यह तय किया जा सकता है कि जवाब में किन जगहों को शामिल करना है और किन जगहों को शामिल नहीं करना है. हालांकि, ऐसा करना ज़रूरी नहीं है. उदाहरण के लिए, जवाब में सिर्फ़ "रेस्तरां", "बेकरी", और "कैफ़े" टाइप की जगहों को शामिल करने के लिए कहा जा सकता है. इसके अलावा, "स्कूल" टाइप की सभी जगहों को बाहर रखने के लिए कहा जा सकता है.
आस-पास की जगहों की जानकारी (नई) के लिए अनुरोध
GMSPlacesClient searchNearbyWithRequest:
को कॉल करके, आस-पास की जगहों को खोजने का अनुरोध करें. इसके लिए, GMSPlaceSearchNearbyRequest
ऑब्जेक्ट पास करें. यह ऑब्जेक्ट, अनुरोध के पैरामीटर और कॉलबैक तरीके को तय करता है. साथ ही, GMSPlaceSearchNearbyResultCallback
टाइप का होता है, ताकि जवाब को मैनेज किया जा सके.
GMSPlaceSearchNearbyRequest
ऑब्जेक्ट, अनुरोध के लिए ज़रूरी और ज़रूरी नहीं वाले सभी पैरामीटर तय करता है. इनमें ये ज़रूरी पैरामीटर शामिल हैं:
GMSPlace
ऑब्जेक्ट में वापस लाए जाने वाले फ़ील्ड की सूची. इसे फ़ील्ड मास्क भी कहा जाता है. इसेGMSPlaceProperty
ने तय किया है. अगर फ़ील्ड की सूची में कम से कम एक फ़ील्ड नहीं दिया जाता है या फ़ील्ड की सूची को छोड़ दिया जाता है, तो कॉल में गड़बड़ी दिखती है.- जगह के हिसाब से पाबंदी, इसका मतलब है कि खोज की जगह को तय करने वाला सर्कल.
इस उदाहरण में, आस-पास की जगहों को खोजने के अनुरोध में यह बताया गया है कि जवाब के GMSPlace
ऑब्जेक्ट में, खोज के नतीजों में मौजूद हर GMSPlace
ऑब्जेक्ट के लिए, जगह का नाम (GMSPlacePropertyName
) और जगह के कोऑर्डिनेट (GMSPlacePropertyCoordinate
) शामिल हैं. यह जवाब को फ़िल्टर करके, सिर्फ़ "रेस्टोरेंट" और "कैफ़े" टाइप की जगहें दिखाता है.
Places Swift SDK
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Swift
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchNearby(with: request, callback: callback)
Objective-C
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
आस-पास की जगहों की जानकारी के लिए की गई खोज के जवाब
Nearby Search API, मैच करने वाली जगहों की जानकारी कोGMSPlace
ऑब्जेक्ट के तौर पर दिखाता है. इसमें मैच करने वाली हर जगह के लिए एक GMSPlace
ऑब्जेक्ट होता है.
खुले होने की स्थिति पाना
GMSPlacesClient
ऑब्जेक्ट में एक मेंबर फ़ंक्शन होता है, जिसे isOpenWithRequest
(Swift में isOpenRequest
और GooglePlacesSwift में isPlaceOpenRequest
) कहा जाता है. यह फ़ंक्शन एक ऐसा जवाब देता है जिससे पता चलता है कि कॉल में बताए गए समय के हिसाब से, जगह फ़िलहाल खुली है या नहीं.
यह तरीका, GMSPlaceIsOpenWithRequest
टाइप का एक आर्ग्युमेंट लेता है. इसमें यह जानकारी शामिल होती है:
GMSPlace
ऑब्जेक्ट या जगह का आईडी बताने वाली स्ट्रिंग. ज़रूरी फ़ील्ड के साथ Place ऑब्जेक्ट बनाने के बारे में ज़्यादा जानने के लिए, जगह की जानकारी देखें.
- यह एक वैकल्पिक
NSDate
(Obj-C) याDate
(Swift) ऑब्जेक्ट है. इससे यह तय किया जाता है कि आपको किस समय की जांच करनी है. अगर कोई समय नहीं दिया गया है, तो डिफ़ॉल्ट रूप से 'अभी' का समय सेट होता है. - जवाब को मैनेज करने का
GMSPlaceOpenStatusResponseCallback
तरीका. >
GMSPlaceIsOpenWithRequest
तरीके के लिए, GMSPlace
ऑब्जेक्ट में इन फ़ील्ड को सेट करना ज़रूरी है:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
अगर Place ऑब्जेक्ट में ये फ़ील्ड नहीं दिए गए हैं या आपने कोई जगह का आईडी पास किया है, तो यह तरीका उन्हें फ़ेच करने के लिए GMSPlacesClient GMSFetchPlaceRequest:
का इस्तेमाल करता है.
isOpenWithRequest
जवाब
isOpenWithRequest
एक GMSPlaceIsOpenResponse
ऑब्जेक्ट दिखाता है. इसमें status
नाम की एक बूलियन वैल्यू होती है. इससे पता चलता है कि कारोबार खुला है, बंद है या उसका स्टेटस पता नहीं है.
भाषा | अगर खुला है, तो वैल्यू | कारोबार बंद होने पर वैल्यू | स्थिति की जानकारी न होने पर वैल्यू |
---|---|---|---|
Places Swift | true |
false |
nil |
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
isOpenWithRequest
के लिए बिलिंग
GMSPlacePropertyUTCOffsetMinutes
औरGMSPlacePropertyBusinessStatus
फ़ील्ड के लिए, बुनियादी डेटा एसकेयू के तहत शुल्क लिया जाता है. खुलने के समय के बाकी अनुरोधों के लिए, जगह की जानकारी के लिए Enterprise SKU के हिसाब से शुल्क लिया जाता है.- अगर आपके
GMSPlace
ऑब्जेक्ट में, पिछले अनुरोध से ये फ़ील्ड पहले से मौजूद हैं, तो आपसे फिर से शुल्क नहीं लिया जाएगा.
उदाहरण: GMSPlaceIsOpenWithRequest
का अनुरोध करें
यहां दिए गए उदाहरण में, किसी मौजूदा GMSPlace
ऑब्जेक्ट में GMSPlaceIsOpenWithRequest
को शुरू करने का तरीका बताया गया है.
Places Swift SDK
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
ज़रूरी पैरामीटर
खोज के लिए ज़रूरी पैरामीटर तय करने के लिए, GMSPlaceSearchNearbyRequest
ऑब्जेक्ट का इस्तेमाल करें.
-
फ़ील्ड की सूची
जगह की जानकारी का अनुरोध करते समय, आपको फ़ील्ड मास्क के तौर पर
GMSPlace
ऑब्जेक्ट में, वापस भेजने के लिए डेटा तय करना होगा. फ़ील्ड मास्क तय करने के लिए,GMSPlaceProperty
से लेकरGMSPlaceSearchNearbyRequest
ऑब्जेक्ट तक वैल्यू का एक कलेक्शन पास करें. फ़ील्ड मास्किंग, डिज़ाइन करने का एक अच्छा तरीका है. इससे यह पक्का किया जा सकता है कि आपने बिना वजह डेटा का अनुरोध न किया हो. इससे, प्रोसेसिंग में लगने वाले समय और बिलिंग के शुल्कों को कम करने में मदद मिलती है.इनमें से एक या उससे ज़्यादा फ़ील्ड डालें:
इन फ़ील्ड से Nearby Search Pro SKU ट्रिगर होता है:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyName
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
GMSPlacePropertyPlaceID
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntrance
इन फ़ील्ड से Nearby Search Enterprise SKU ट्रिगर होता है:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
इन फ़ील्ड से Nearby Search Enterprise Plus SKU ट्रिगर होता है:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
इस उदाहरण में, दो फ़ील्ड वैल्यू की सूची पास की गई है. इससे यह पता चलता है कि अनुरोध से मिले
GMSPlace
ऑब्जेक्ट मेंname
औरplaceID
फ़ील्ड शामिल हैं:Places Swift SDK
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
-
locationRestriction
GMSPlaceLocationRestriction
ऑब्जेक्ट. यह ऑब्जेक्ट, खोज के लिए क्षेत्र तय करता है. इसे सर्कल के तौर पर दिखाया जाता है. इसे सेंटर पॉइंट और मीटर में रेडियस के हिसाब से तय किया जाता है. रेडियस, 0.0 और 50000.0 के बीच होना चाहिए. हालांकि, इन दोनों में से भी कोई संख्या हो सकती है. डिफ़ॉल्ट रेडियस 0.0 है. आपको अपने अनुरोध में इसे 0.0 से ज़्यादा पर सेट करना होगा.
ज़रूरी नहीं पैरामीटर
खोज के लिए, वैकल्पिक पैरामीटर तय करने के लिए GMSPlaceSearchNearbyRequest
ऑब्जेक्ट का इस्तेमाल करें.
-
includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes
इस विकल्प की मदद से, टेबल A में मौजूद टाइप की सूची तय की जा सकती है. इसका इस्तेमाल खोज के नतीजों को फ़िल्टर करने के लिए किया जाता है. पाबंदी के हर टाइप की कैटगरी में, ज़्यादा से ज़्यादा 50 टाइप दिए जा सकते हैं.
किसी जगह के लिए, टेबल A में दिए गए टाइप में से सिर्फ़ एक प्राइमरी टाइप चुना जा सकता है. उदाहरण के लिए, प्राइमरी टाइप
"mexican_restaurant"
या"steak_house"
हो सकता है. किसी जगह के मुख्य टाइप के हिसाब से नतीजों को फ़िल्टर करने के लिए,includedPrimaryTypes
औरexcludedPrimaryTypes
का इस्तेमाल करें.किसी जगह के लिए, टेबल A में दिए गए टाइप से एक से ज़्यादा टाइप वैल्यू भी हो सकती हैं. उदाहरण के लिए, किसी रेस्टोरेंट के ये टाइप हो सकते हैं:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. किसी जगह से जुड़े टाइप की सूची में मौजूद नतीजों को फ़िल्टर करने के लिए,includedTypes
औरexcludedTypes
का इस्तेमाल करें."restaurant"
या"hotel"
जैसे सामान्य प्राइमरी टाइप के बारे में बताने पर, जवाब में ऐसे स्थान शामिल हो सकते हैं जिनका प्राइमरी टाइप, बताए गए प्राइमरी टाइप से ज़्यादा सटीक हो. उदाहरण के लिए, आपने"restaurant"
को शामिल करने के लिए चुना है. इसके बाद, जवाब में ऐसी जगहें शामिल हो सकती हैं जिनका मुख्य टाइप"restaurant"
है. हालांकि, जवाब में ऐसी जगहें भी शामिल हो सकती हैं जिनका मुख्य टाइप ज़्यादा खास है. जैसे,"chinese_restaurant"
या"seafood_restaurant"
.अगर किसी खोज में कई तरह के प्रतिबंध लगाए गए हैं, तो सिर्फ़ वे जगहें दिखाई जाती हैं जो सभी प्रतिबंधों को पूरा करती हैं. उदाहरण के लिए, अगर आपने
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
को चुना है, तो खोज के नतीजों में दिखने वाली जगहों पर"restaurant"
से जुड़ी सेवाएं मिलती हैं. हालांकि, ये मुख्य रूप से"steak_house"
के तौर पर काम नहीं करती हैं.includedTypes
खोजने के लिए, टेबल A में मौजूद जगहों के टाइप की सूची. अगर इस पैरामीटर को शामिल नहीं किया जाता है, तो सभी तरह की जगहों की जानकारी मिलती है.
excludedTypes
टेबल A में मौजूद जगहों के टाइप की सूची, जिसे खोज के नतीजों से बाहर रखना है.
अगर अनुरोध में
includedTypes
(जैसे कि"school"
) औरexcludedTypes
(जैसे कि"primary_school"
) दोनों को शामिल किया जाता है, तो जवाब में वे जगहें शामिल होती हैं जिन्हें"school"
के तौर पर कैटगरी में रखा गया है, लेकिन"primary_school"
के तौर पर नहीं. जवाब में ऐसी जगहें शामिल हैं जोincludedTypes
में से कम से कम एक से मैच करती हैं औरexcludedTypes
में से किसी से भी मैच नहीं करती हैं.अगर कोई टाइप दोनों में मौजूद है, जैसे कि
includedTypes
औरexcludedTypes
, तोINVALID_REQUEST
गड़बड़ी दिखेगी.includedPrimaryTypes
टेबल A में मौजूद मुख्य जगहों के टाइप की सूची, जिसे खोज में शामिल करना है.
excludedPrimaryTypes
टेबल A में मौजूद मुख्य जगहों की सूची, जिन्हें खोज के नतीजों से बाहर रखना है.
अगर प्राइमरी टाइप में कोई टकराव होता है, जैसे कि कोई टाइप
includedPrimaryTypes
औरexcludedPrimaryTypes
, दोनों में दिखता है, तोINVALID_ARGUMENT
गड़बड़ी दिखती है. -
maxResultCount
इससे जगह के नतीजों की ज़्यादा से ज़्यादा संख्या तय की जाती है. इसकी वैल्यू 1 और 20 (डिफ़ॉल्ट) के बीच होनी चाहिए.
-
rankPreference
रैंकिंग के लिए इस्तेमाल किया जाने वाला टाइप. अगर इस पैरामीटर को शामिल नहीं किया जाता है, तो नतीजों को लोकप्रियता के हिसाब से रैंक किया जाता है. यह इनमें से कोई एक हो सकता है:
.popularity
(डिफ़ॉल्ट) नतीजों को उनकी लोकप्रियता के आधार पर क्रम से लगाता है..distance
नतीजों को, तय की गई जगह से उनकी दूरी के हिसाब से बढ़ते क्रम में क्रमबद्ध करता है.
-
regionCode
जवाब को फ़ॉर्मैट करने के लिए इस्तेमाल किया गया क्षेत्र कोड. इसे दो वर्णों वाले CLDR कोड वैल्यू के तौर पर तय किया जाता है. कोई डिफ़ॉल्ट वैल्यू नहीं है.
अगर जवाब में मौजूद
formattedAddress
फ़ील्ड में दिए गए देश का नाम,regionCode
से मेल खाता है, तोformattedAddress
से देश का कोड हटा दिया जाता है. इस पैरामीटर काadrFormatAddress
पर कोई असर नहीं पड़ता. इसमें हमेशा देश का नाम शामिल होता है. साथ ही, इसकाshortFormattedAddress
पर भी कोई असर नहीं पड़ता. इसमें देश का नाम कभी शामिल नहीं होता.ज़्यादातर CLDR कोड, ISO 3166-1 कोड के जैसे ही होते हैं. हालांकि, कुछ मामलों में ये अलग होते हैं. उदाहरण के लिए, यूनाइटेड किंगडम का ccTLD "uk" (.co.uk) है, जबकि इसका ISO 3166-1 कोड "gb" है. तकनीकी तौर पर, यह "ग्रेट ब्रिटेन और उत्तरी आयरलैंड का यूनाइटेड किंगडम" के लिए है. लागू कानून के आधार पर, इस पैरामीटर से नतीजों पर असर पड़ सकता है.
अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाना
अगर आपका ऐप्लिकेशन, GMSPlacesClient
से मिली जानकारी दिखाता है, तो उसे ज़रूरी एट्रिब्यूशन भी दिखाने होंगे. जैसे, फ़ोटो और समीक्षाएं.
उदाहरण के लिए, GMSPlacesClient
ऑब्जेक्ट की reviews
प्रॉपर्टी में ज़्यादा से ज़्यादा पांच GMSPlaceReview
ऑब्जेक्ट का कलेक्शन होता है. हर GMSPlaceReview
ऑब्जेक्ट में एट्रिब्यूशन और लेखक के एट्रिब्यूशन शामिल हो सकते हैं.
अगर आपने अपने ऐप्लिकेशन में समीक्षा दिखाई है, तो आपको एट्रिब्यूशन या लेखक का एट्रिब्यूशन भी दिखाना होगा.
ज़्यादा जानकारी के लिए, एट्रिब्यूशन के बारे में दस्तावेज़ देखें.