आस-पास की खोज (नया) के अनुरोध में, इलाके को सर्कल के तौर पर खोजा जाता है. इसे सर्कल के केंद्र बिंदु के अक्षांश और देशांतर निर्देशांक और मीटर में दायरे से तय किया जाता है. अनुरोध, मिलती-जुलती जगहों की सूची दिखाता है. हर जगह को खोज के लिए तय की गई जगह में, GMSPlace
ऑब्जेक्ट से दिखाया जाता है.
डिफ़ॉल्ट रूप से, जवाब में खोज क्षेत्र में सभी तरह की जगहें शामिल होती हैं. जवाब को फ़िल्टर किया जा सकता है. ऐसा करने के लिए, जवाब में अलग-अलग तरह की जगहों की सूची शामिल करके, उसे साफ़ तौर पर शामिल किया जा सकता है या उससे बाहर रखा जा सकता है. उदाहरण के लिए, जवाब में सिर्फ़ उन जगहों को शामिल किया जा सकता है जो "रेस्टोरेंट", "बेकरी", और "कैफ़े" टाइप की हों या "स्कूल" टाइप की सभी जगहें शामिल न की जा सकती हैं.
Nearby Search (नए) के अनुरोध
रिस्पॉन्स को मैनेज करने के लिए,
GMSPlacesClient searchNearbyWithRequest:
को कॉल करके
GMSPlaceSearchNearbyRequest
ऑब्जेक्ट को पास करें.
यह अनुरोध के पैरामीटर और कॉलबैक का तरीका
GMSPlaceSearchNearbyResultCallback
को बताता है.
GMSPlaceSearchNearbyRequest
ऑब्जेक्ट, अनुरोध के लिए सभी ज़रूरी और ज़रूरी नहीं पैरामीटर की जानकारी देता है. ज़रूरी पैरामीटर में ये शामिल हैं:
GMSPlace
ऑब्जेक्ट में दिए जाने वाले फ़ील्ड की सूची, जिसे फ़ील्ड मास्क भी कहा जाता है. इसेGMSPlaceProperty
में बताया गया है. अगर आपने फ़ील्ड की सूची में कम से कम एक फ़ील्ड नहीं डाला है या फ़ील्ड की सूची को हटा दिया जाता है, तो कॉल दिखाने पर गड़बड़ी दिखती है.- जगह की जानकारी पर पाबंदी, यानी वह सर्कल जो खोज की जगह तय करता है.
आस-पास के खोज अनुरोध के इस उदाहरण से पता चलता है कि रिस्पॉन्स GMSPlace
ऑब्जेक्ट, खोज के नतीजों में हर GMSPlace
ऑब्जेक्ट के लिए जगह का नाम (GMSPlacePropertyName
) और जगह के निर्देशांक (GMSPlacePropertyCoordinate
) हैं. यह सिर्फ़ "रेस्टोरेंट" और "कैफ़े" टाइप की जगहों को लौटाने के लिए भी जवाब को फ़िल्टर करता है.
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; } } ];
GooglePlacesSwift
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
ऑब्जेक्ट होता है.
रिस्पॉन्स में मौजूद GMSPlace
ऑब्जेक्ट के साथ-साथ, डेटा फ़ील्ड में
ये सदस्य फ़ंक्शन भी शामिल होते हैं:
-
isOpen
यह हिसाब लगाता है कि कोई जगह, दिए गए समय पर खुली है या नहीं. isOpenAtDate
यह हिसाब लगाता है कि कोई जगह, दी गई तारीख को खुली या बंद हुई या नहीं.
ज़रूरी पैरामीटर
खोज के लिए ज़रूरी पैरामीटर तय करने के लिए, GMSPlaceSearchNearbyRequest
ऑब्जेक्ट का इस्तेमाल करें.
-
फ़ील्ड की सूची
जगह की जानकारी का अनुरोध करते समय, आपको उस जगह के लिए
GMSPlace
ऑब्जेक्ट में, फ़ील्ड मास्क के तौर पर डेटा दिखाना होगा. फ़ील्ड मास्क तय करने के लिए,GMSPlaceProperty
सेGMSPlaceSearchNearbyRequest
ऑब्जेक्ट में वैल्यू का कलेक्शन पास करें. फ़ील्ड को मास्क करना, डिज़ाइन करने का एक अच्छा तरीका है. इससे यह पक्का किया जाता है कि आपसे बेवजह डेटा न मांगा जाए. इससे प्रोसेसिंग में लगने वाले गैर-ज़रूरी समय और बिलिंग शुल्क से बचा जा सकता है.इनमें से एक या उससे ज़्यादा फ़ील्ड शामिल करें:
नीचे दिए गए फ़ील्ड, आस-पास खोज (बेसिक) की SKU को ट्रिगर करते हैं:
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyCoordinate
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyName
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlaceID
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
नीचे दिए गए फ़ील्ड, आस-पास खोज (बेहतर) SKU को ट्रिगर करते हैं:
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
नीचे दिए गए फ़ील्ड, आस-पास खोज (पसंदीदा) SKU को ट्रिगर करते हैं:
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
यह उदाहरण दो फ़ील्ड वैल्यू की सूची पास करता है. इससे यह पता चलता है कि अनुरोध से मिले
GMSPlace
ऑब्जेक्ट में,name
औरplaceID
फ़ील्ड शामिल हैं: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];
GooglePlacesSwift
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
-
locationRestriction
GMSPlaceLocationRestriction
ऑब्जेक्ट, जो खोज करने के लिए इलाके के बारे में बताता है. इसे सर्कल के तौर पर दिखाया जाता है. इसे सेंटर पॉइंट और मीटर में रेडियस से तय किया जाता है. दायरा 0.0 और 50000.0 सहित इनके बीच होना चाहिए. डिफ़ॉल्ट रेडियस 0.0 है. आपको अपने अनुरोध में इसकी वैल्यू 0.0 से ज़्यादा पर सेट करनी होगी.
ज़रूरी नहीं पैरामीटर
खोज के लिए वैकल्पिक पैरामीटर तय करने के लिए, GMSPlaceSearchNearbyRequest
ऑब्जेक्ट का इस्तेमाल करें.
-
शामिल किए गए प्रकार/शामिल नहीं किए गए प्रकार, शामिल प्राइमरी टाइप/शामिल नहीं किए गए प्राइमरीटाइप
इससे, खोज के नतीजों को फ़िल्टर करने के लिए इस्तेमाल किए जाने वाले टेबल A टाइप से, डेटा टाइप की सूची तय करने में मदद मिलती है. हर तरह की पाबंदी वाली कैटगरी में ज़्यादा से ज़्यादा 50 टाइप दिए जा सकते हैं.
किसी जगह के साथ जुड़े टेबल A टाइप में से, सिर्फ़ एक एक प्राइमरी टाइप हो सकता है. उदाहरण के लिए, मुख्य टाइप
"mexican_restaurant"
या"steak_house"
हो सकता है. जगह के मुख्य टाइप के हिसाब से नतीजों को फ़िल्टर करने के लिए,includedPrimaryTypes
औरexcludedPrimaryTypes
का इस्तेमाल करें.किसी जगह के साथ जुड़े टाइप टेबल A में से एक से ज़्यादा टाइप की वैल्यू भी हो सकती हैं. उदाहरण के लिए, किसी रेस्टोरेंट में इस तरह के ईमेल हो सकते हैं:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. किसी जगह से जुड़ी सूची के नतीजों को फ़िल्टर करने के लिए,includedTypes
औरexcludedTypes
का इस्तेमाल करें.अगर किसी खोज के लिए अलग-अलग तरह की पाबंदियां लगाई गई हैं, तो सिर्फ़ वही जगहें दिखाई जाती हैं जो सभी पाबंदियों का पालन करती हों. उदाहरण के लिए, अगर
{"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 से मुख्य जगहों के टाइप की सूची.
अगर एक ही तरह का प्राइमरी टाइप मौजूद होता है, तो
INVALID_ARGUMENT
गड़बड़ी दिखती है. जैसे, एक ही टाइप,includedPrimaryTypes
औरexcludedPrimaryTypes
, दोनों में दिख रहा हो. -
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
ऑब्जेक्ट में, एट्रिब्यूशन और लेखक के एट्रिब्यूशन शामिल हो सकते हैं.
अपने ऐप्लिकेशन में समीक्षा दिखाने पर, आपको कोई भी एट्रिब्यूशन या लेखक
एट्रिब्यूशन दिखाना होगा.
ज़्यादा जानकारी के लिए, एट्रिब्यूशन से जुड़ा दस्तावेज़ देखें.