'आस-पास खोजें (नया वर्शन)' सुविधा के लिए, खोजे जाने वाले इलाके की जानकारी इनपुट के तौर पर ली जाती है. यह जानकारी, सर्कल के तौर पर दी जाती है. सर्कल को अक्षांश और देशांतर के निर्देशांकों के हिसाब से तय किया जाता है. साथ ही, सर्कल के सेंटर पॉइंट और मीटर में रेडियस की जानकारी भी दी जाती है. अनुरोध के जवाब में, खोज के लिए तय की गई जगह में मौजूद मिलती-जुलती जगहों की सूची मिलती है. हर जगह को 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 ऑब्जेक्ट में इन फ़ील्ड को सेट करना ज़रूरी है:
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
अगर 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 ऑब्जेक्ट में एट्रिब्यूशन और लेखक के एट्रिब्यूशन शामिल हो सकते हैं.
अगर आपने अपने ऐप्लिकेशन में समीक्षा दिखाई है, तो आपको एट्रिब्यूशन या लेखक का एट्रिब्यूशन भी दिखाना होगा.
ज़्यादा जानकारी के लिए, एट्रिब्यूशन के बारे में दस्तावेज़ देखें.