आस-पास खोजने की सुविधा (नया) के अनुरोध में, खोज के लिए सर्कल के तौर पर तय किए गए इलाके को इनपुट के तौर पर लिया जाता है. सर्कल के केंद्र बिंदु के अक्षांश और देशांतर निर्देशांक और मीटर में त्रिज्या से सर्कल तय किया जाता है. अनुरोध करने पर, खोज के लिए तय किए गए इलाके में, खोज के हिसाब से मैच होने वाली जगहों की सूची दिखती है. हर जगह को GMSPlace
ऑब्जेक्ट से दिखाया जाता है.
डिफ़ॉल्ट रूप से, खोज के लिए तय किए गए इलाके में सभी तरह की जगहें शामिल होती हैं. आपके पास रिस्पॉन्स को फ़िल्टर करने का विकल्प होता है. इसके लिए, जगह के टाइप की सूची दी जा सकती है. इससे, रिस्पॉन्स में जगह के टाइप को शामिल या बाहर किया जा सकता है. उदाहरण के लिए, जवाब में सिर्फ़ "रेस्टोरेंट", "बेकरी", और "कैफ़े" जैसी जगहों को शामिल करने के लिए कहा जा सकता है. इसके अलावा, "स्कूल" जैसी सभी जगहों को बाहर रखा जा सकता है.
आस-पास की जगहों की जानकारी (नया) के अनुरोध
GMSPlacesClient searchNearbyWithRequest:
को कॉल करके, आस-पास के कारोबारों को खोजने की सुविधा का अनुरोध करें. इसके लिए, GMSPlaceSearchNearbyRequest
ऑब्जेक्ट को पास करें. यह ऑब्जेक्ट, अनुरोध के पैरामीटर और कॉलबैक के तरीके के बारे में बताता है. कॉलबैक का तरीका, GMSPlaceSearchNearbyResultCallback
टाइप का होना चाहिए.
GMSPlaceSearchNearbyRequest
ऑब्जेक्ट में, अनुरोध के लिए सभी ज़रूरी और ज़रूरी नहीं पैरामीटर की जानकारी होती है. ज़रूरी पैरामीटर में ये शामिल हैं:
GMSPlace
ऑब्जेक्ट में दिखाए जाने वाले फ़ील्ड की सूची. इसेGMSPlaceProperty
के मुताबिक, फ़ील्ड मास्क भी कहा जाता है. अगर आपने फ़ील्ड की सूची में कम से कम एक फ़ील्ड नहीं बताया है या फ़ील्ड की सूची को छोड़ दिया है, तो कॉल में गड़बड़ी का मैसेज दिखेगा.- जगह से जुड़ी पाबंदी, जिसका मतलब है कि खोज के लिए तय किया गया सर्कल.
आस-पास की जगहों के खोज के अनुरोध के इस उदाहरण में बताया गया है कि रिस्पॉन्स के GMSPlace
ऑब्जेक्ट में, खोज के नतीजों में मौजूद हर GMSPlace
ऑब्जेक्ट के लिए, जगह का नाम (GMSPlacePropertyName
) और जगह के निर्देशांक (GMSPlacePropertyCoordinate
) शामिल हैं. यह रिस्पॉन्स को फ़िल्टर भी करता है, ताकि सिर्फ़ "रेस्टोरेंट" और "कैफ़े" टाइप की जगहें दिखें.
// 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)
// 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; } } ];
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 }
आस-पास की जगहों की जानकारी
Nearby Search API, मैच होने वाली जगहों की जानकारी कोGMSPlace
ऑब्जेक्ट के तौर पर दिखाता है. इसमें हर मैच होने वाली जगह के लिए एक GMSPlace
ऑब्जेक्ट होता है.
खुले होने की स्थिति देखना
GMSPlacesClient
ऑब्जेक्ट में isOpenWithRequest
(Swift में isOpenRequest
और GooglePlacesSwift में isPlaceOpenRequest
) नाम का एक सदस्य फ़ंक्शन होता है. यह फ़ंक्शन, कॉल में बताए गए समय के आधार पर यह बताता है कि जगह फ़िलहाल खुली है या नहीं.
यह तरीका, GMSPlaceIsOpenWithRequest
टाइप का एक आर्ग्युमेंट लेता है, जिसमें ये शामिल होते हैं:
GMSPlace
ऑब्जेक्ट या जगह का आईडी बताने वाली स्ट्रिंग. ज़रूरी फ़ील्ड के साथ जगह का ऑब्जेक्ट बनाने के बारे में ज़्यादा जानने के लिए, जगह की जानकारी देखें.
- ज़रूरी नहीं,
NSDate
(Obj-C) याDate
(Swift) ऑब्जेक्ट, जिसमें वह समय बताया गया है जिसकी आपको जांच करनी है. अगर कोई समय तय नहीं किया गया है, तो डिफ़ॉल्ट रूप से 'अभी' सेट होता है. - जवाब को मैनेज करने का
GMSPlaceOpenStatusResponseCallback
तरीका. >
GMSPlaceIsOpenWithRequest
तरीके के लिए, GMSPlace
ऑब्जेक्ट में ये फ़ील्ड सेट करने होंगे:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
अगर Place ऑब्जेक्ट में ये फ़ील्ड नहीं दिए गए हैं या आपने कोई प्लेस आईडी पास किया है, तो उन्हें फ़ेच करने के लिए, यह तरीका GMSPlacesClient GMSFetchPlaceRequest:
का इस्तेमाल करता है.
isOpenWithRequest
response
isOpenWithRequest
, GMSPlaceIsOpenResponse
ऑब्जेक्ट दिखाता है. इसमें status
नाम की बूलियन वैल्यू होती है. इससे पता चलता है कि कारोबार खुला है, बंद है या उसका स्टेटस पता नहीं है.
भाषा | अगर खाता खुला है, तो वैल्यू | कारोबार बंद होने पर दिखने वाली वैल्यू | अगर स्थिति की जानकारी नहीं है, तो वैल्यू |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (झलक) | true |
false |
nil |
isOpenWithRequest
के लिए बिलिंग
GMSPlacePropertyUTCOffsetMinutes
औरGMSPlacePropertyBusinessStatus
फ़ील्ड के लिए, बुनियादी डेटा SKU के तहत शुल्क लिया जाता है. कारोबार के खुले होने के बाकी समय के लिए, जगह की जानकारी वाले एंटरप्राइज़ SKU के तहत शुल्क लिया जाता है.- अगर आपके
GMSPlace
ऑब्जेक्ट में, पिछले अनुरोध से ये फ़ील्ड पहले से मौजूद हैं, तो आपसे फिर से शुल्क नहीं लिया जाएगा.
उदाहरण: GMSPlaceIsOpenWithRequest
अनुरोध करना
नीचे दिए गए उदाहरण में, किसी मौजूदा GMSPlace
ऑब्जेक्ट में GMSPlaceIsOpenWithRequest
को शुरू करने का तरीका बताया गया है.
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 } }
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 } }];
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 }
ज़रूरी पैरामीटर
खोज के लिए ज़रूरी पैरामीटर तय करने के लिए, 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
ये फ़ील्ड, आस-पास की जगहों की जानकारी दिखाने वाले Enterprise Plus वर्शन के SKU को ट्रिगर करते हैं:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
इस उदाहरण में, दो फ़ील्ड वैल्यू की सूची दी गई है. इससे यह पता चलता है कि अनुरोध से मिले
GMSPlace
ऑब्जेक्ट मेंname
औरplaceID
फ़ील्ड शामिल हैं:// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
-
locationRestriction
GMSPlaceLocationRestriction
ऑब्जेक्ट, जो सर्कल के तौर पर तय किए गए इलाके को खोजने के लिए इस्तेमाल किया जाता है. इस इलाके को सेंटर पॉइंट और मीटर में त्रिज्या के हिसाब से तय किया जाता है. त्रिज्या 0.0 से 50, 000.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 कोड से मिलते-जुलते होते हैं. हालांकि, कुछ कोड अलग होते हैं. उदाहरण के लिए, यूनाइटेड किंगडम का सीसीटीएलडी "uk" (.co.uk) है, जबकि उसका आईएसओ 3166-1 कोड "gb" है. तकनीकी तौर पर, यह कोड "ग्रेट ब्रिटेन और उत्तरी आयरलैंड के यूनाइटेड किंगडम" की इकाई के लिए है. लागू कानून के आधार पर, इस पैरामीटर से नतीजों पर असर पड़ सकता है.
अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाना
जब आपका ऐप्लिकेशन, GMSPlacesClient
से मिली जानकारी दिखाता है, जैसे कि फ़ोटो और समीक्षाएं, तो ऐप्लिकेशन को ज़रूरी क्रेडिट भी दिखाना होगा.
उदाहरण के लिए, GMSPlacesClient
ऑब्जेक्ट की reviews
प्रॉपर्टी में, ज़्यादा से ज़्यादा पांच GMSPlaceReview
ऑब्जेक्ट का कलेक्शन होता है. हर GMSPlaceReview
ऑब्जेक्ट में एट्रिब्यूशन और लेखक के एट्रिब्यूशन शामिल हो सकते हैं.
अगर आपने अपने ऐप्लिकेशन में समीक्षा दिखाई है, तो आपको एट्रिब्यूशन या लेखक का एट्रिब्यूशन भी दिखाना होगा.
ज़्यादा जानकारी के लिए, क्रेडिट से जुड़ा दस्तावेज़ देखें.