आस-पास की जगहों के लिए नई खोज की सुविधा का इस्तेमाल करने के लिए, खोजे जाने वाले इलाके की जानकारी इनपुट के तौर पर देनी होती है. यह जानकारी, सर्कल के तौर पर दी जाती है. इसके लिए, सर्कल के केंद्र बिंदु के अक्षांश और देशांतर निर्देशांकों के साथ-साथ, मीटर में रेडियस की जानकारी देनी होती है. इस अनुरोध के जवाब में, खोज के लिए तय किए गए इलाके में मौजूद मिलती-जुलती जगहों की सूची मिलती है. हर जगह को Place
ऑब्जेक्ट के तौर पर दिखाया जाता है.
डिफ़ॉल्ट रूप से, जवाब में खोज के दायरे में आने वाली सभी तरह की जगहों की जानकारी शामिल होती है. जवाब को फ़िल्टर करने के लिए, जगह के टाइप की सूची दी जा सकती है. इससे यह तय किया जा सकता है कि जवाब में कौनसे टाइप की जगहें शामिल की जाएं और कौनसी नहीं. हालांकि, ऐसा करना ज़रूरी नहीं है. उदाहरण के लिए, जवाब में सिर्फ़ "रेस्टोरेंट", "बेकरी", और "कैफ़े" टाइप की जगहों को शामिल करने के लिए कहा जा सकता है. इसके अलावा, "स्कूल" टाइप की सभी जगहों को शामिल न करने के लिए भी कहा जा सकता है.
आस-पास की जगहों की जानकारी (नई) के लिए अनुरोध
PlacesClient.searchNearby
को कॉल करके, आस-पास की जगहें खोजने (नया) का अनुरोध करें. इसके लिए, अनुरोध के पैरामीटर तय करने वाला SearchNearbyRequest
ऑब्जेक्ट पास करें.
SearchNearbyRequest
ऑब्जेक्ट, अनुरोध के लिए ज़रूरी और वैकल्पिक पैरामीटर के बारे में बताता है. इनमें ये ज़रूरी पैरामीटर शामिल हैं:
Place
ऑब्जेक्ट में दिखाए जाने वाले फ़ील्ड की सूची. इसे फ़ील्ड मास्क भी कहा जाता है. अगर फ़ील्ड की सूची में कम से कम एक फ़ील्ड नहीं दिया जाता है या फ़ील्ड की सूची को शामिल नहीं किया जाता है, तो कॉल से गड़बड़ी का मैसेज मिलता है.- खोज के दायरे के लिए जगह से जुड़ी पाबंदी. इसे अक्षांश/देशांतर के जोड़े और दायरे की वैल्यू के तौर पर मीटर में तय किया जाता है.
आस-पास की जगहों को खोजने के इस अनुरोध के उदाहरण में बताया गया है कि जवाब के Place
ऑब्जेक्ट में, खोज के नतीजों में मौजूद हर Place
ऑब्जेक्ट के लिए, जगह की जानकारी वाले Place.Field.ID
और Place.Field.DISPLAY_NAME
फ़ील्ड शामिल हैं. यह जवाब को फ़िल्टर करके, सिर्फ़ "रेस्टोरेंट" और "कैफ़े" टाइप की जगहों की जानकारी दिखाता है. हालांकि, इसमें "पिज़्ज़ा रेस्टोरेंट" और "अमेरिकन रेस्टोरेंट" टाइप की जगहों की जानकारी शामिल नहीं होती.
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Define the search area as a 1000 meter diameter circle in New York, NY. LatLng center = new LatLng(40.7580, -73.9855); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000); // Define a list of types to include. final List<String> includedTypes = Arrays.asList("restaurant", "cafe"); // Define a list of types to exclude. final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant"); // Use the builder to create a SearchNearbyRequest object. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setExcludedTypes(excludedTypes) .setMaxResultCount(10) .build()); // Call placesClient.searchNearby() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
आस-पास की जगहों की जानकारी (नई) के जवाब
SearchNearbyResponse
क्लास, खोज के अनुरोध से मिले जवाब को दिखाता है. SearchNearbyResponse
ऑब्जेक्ट में ये शामिल होते हैं:
Place
ऑब्जेक्ट की सूची. इसमें मैच करने वाली सभी जगहों की जानकारी होती है. हर मैचिंग जगह के लिए एकPlace
ऑब्जेक्ट होता है.- हर
Place
ऑब्जेक्ट में सिर्फ़ वे फ़ील्ड होते हैं जो अनुरोध में पास की गई फ़ील्ड की सूची में तय किए गए हैं.
उदाहरण के लिए, अनुरोध में फ़ील्ड की सूची को इस तरह से तय किया गया है:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
इस फ़ील्ड सूची का मतलब है कि जवाब में मौजूद हर Place
ऑब्जेक्ट में, मैच करने वाली हर जगह का सिर्फ़ प्लेस आईडी और नाम शामिल होता है. इसके बाद, हर Place
ऑब्जेक्ट में इन फ़ील्ड को ऐक्सेस करने के लिए, Place.getId()
और Place.getName()
तरीकों का इस्तेमाल किया जा सकता है.
Place
ऑब्जेक्ट में डेटा ऐक्सेस करने के ज़्यादा उदाहरण देखने के लिए, जगह की जानकारी वाले ऑब्जेक्ट के डेटा फ़ील्ड ऐक्सेस करना लेख पढ़ें.
ज़रूरी पैरामीटर
खोज के लिए ज़रूरी पैरामीटर तय करने के लिए, SearchNearbyRequest
ऑब्जेक्ट का इस्तेमाल करें.
फ़ील्ड की सूची
किसी जगह की जानकारी का अनुरोध करते समय, आपको फ़ील्ड मास्क के तौर पर, जगह के लिए
Place
ऑब्जेक्ट में दिखने वाला डेटा तय करना होगा. फ़ील्ड मास्क तय करने के लिए,SearchNearbyRequest
ऑब्जेक्ट मेंPlace.Field
से वैल्यू का एक कलेक्शन पास करें. फ़ील्ड मास्किंग, डिज़ाइन का एक अच्छा तरीका है. इससे यह पक्का किया जा सकता है कि आपने बिना ज़रूरत के डेटा का अनुरोध न किया हो. इससे, प्रोसेसिंग में लगने वाले समय और बिलिंग के शुल्कों को कम करने में मदद मिलती है.इनमें से एक या उससे ज़्यादा फ़ील्ड की जानकारी दें:
इन फ़ील्ड से Nearby Search Pro SKU ट्रिगर होता है:
Place.Field.ADDRESS_COMPONENTS
Place.Field.BUSINESS_STATUS
Place.Field.ADDRESS
Place.Field.DISPLAY_NAME
>*
*Place.Field.NAME
के बजाय इसका इस्तेमाल करें.Place.Field.NAME
का इस्तेमाल अब नहीं किया जा सकता.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL
*
* इसका इस्तेमालPlace.Field.ICON_URL
के बजाय करें, क्योंकि यह अब सेवा में नहीं है.
Place.Field.ID
Place.Field.LAT_LNG
Place.Field.PHOTO_METADATAS
Place.Field.PLUS_CODE
Place.Field.PRIMARY_TYPE
Place.Field.PRIMARY_TYPE_DISPLAY_NAME
Place.Field.RESOURCE_NAME
Place.Field.TYPES
Place.Field.UTC_OFFSET
Place.Field.VIEWPORT
Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
इन फ़ील्ड से Nearby Search Enterprise SKU ट्रिगर होता है:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER
*
* इसका इस्तेमालPlace.Field.PHONE_NUMBER
के बजाय करें.Place.Field.PHONE_NUMBER
अब काम नहीं करता.
Place.Field.NATIONAL_PHONE_NUMBER
Place.Field.OPENING_HOURS
Place.Field.PRICE_LEVEL
Place.Field.RATING
Place.Field.SECONDARY_OPENING_HOURS
Place.Field.USER_RATING_COUNT
*
* इसका इस्तेमालPlace.Field.USER_RATINGS_TOTAL
के बजाय करें. यह अब सेवा में नहीं है.
Place.Field.WEBSITE_URI
इन फ़ील्ड से, Nearby Search Enterprise Plus SKU ट्रिगर होता है:
Place.Field.ALLOWS_DOGS
Place.Field.CURBSIDE_PICKUP
Place.Field.DELIVERY
Place.Field.DINE_IN
Place.Field.EDITORIAL_SUMMARY
Place.Field.EV_CHARGE_OPTIONS
Place.Field.FUEL_OPTIONS
Place.Field.GOOD_FOR_CHILDREN
Place.Field.GOOD_FOR_GROUPS
Place.Field.GOOD_FOR_WATCHING_SPORTS
Place.Field.LIVE_MUSIC
Place.Field.MENU_FOR_CHILDREN
Place.Field.OUTDOOR_SEATING
Place.Field.PARKING_OPTIONS
Place.Field.PAYMENT_OPTIONS
Place.Field.RESERVABLE
Place.Field.RESTROOM
Place.Field.REVIEWS
Place.Field.SERVES_BEER
Place.Field.SERVES_BREAKFAST
Place.Field.SERVES_BRUNCH
Place.Field.SERVES_COCKTAILS
Place.Field.SERVES_COFFEE
Place.Field.SERVES_DESSERT
Place.Field.SERVES_DINNER
Place.Field.SERVES_LUNCH
Place.Field.SERVES_VEGETARIAN_FOOD
Place.Field.SERVES_WINE
Place.Field.TAKEOUT
फ़ील्ड सूची पैरामीटर सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetPlaceFields()
तरीके को कॉल करें.इस उदाहरण में, फ़ील्ड की दो वैल्यू की सूची दी गई है. इससे यह पता चलता है कि अनुरोध से मिले
Place
ऑब्जेक्ट मेंPlace.Field.ID
औरPlace.Field.DISPLAY_NAME
फ़ील्ड शामिल हैं:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
जगह की जानकारी से जुड़ी पाबंदी
A
LocationRestriction
ऑब्जेक्ट, जो खोज के लिए क्षेत्र तय करता है. इसे सर्कल के तौर पर तय किया जाता है. इसे केंद्र बिंदु और मीटर में रेडियस के हिसाब से तय किया जाता है. रेडियस 0.0 से ज़्यादा और 50,000.0 के बराबर या इससे कम होना चाहिए. ध्यान रखें कि बहुत छोटा रेडियस तय करने पर, जवाब के तौर परZERO_RESULTS
मिलेगा.जगह के हिसाब से पाबंदी लगाने वाला पैरामीटर सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetLocationRestriction()
तरीके को कॉल करें.
ज़रूरी नहीं पैरामीटर
खोज के लिए वैकल्पिक पैरामीटर तय करने के लिए, SearchNearbyRequest
ऑब्जेक्ट का इस्तेमाल करें.
-
टाइप और प्राइमरी टाइप
इस विकल्प की मदद से, टेबल 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 = Arrays.asList("restaurant")
औरexcludedPrimaryTypes = Arrays.asList("steak_house")
के बारे में बताया है, तो खोज के नतीजों में दिखाए गए कारोबार,"restaurant"
से जुड़ी सेवाएं देते हैं. हालांकि, वे मुख्य रूप से"steak_house"
के तौर पर काम नहीं करते.includedTypes
औरexcludedTypes
का इस्तेमाल करने का उदाहरण देखने के लिए, आस-पास की जगहें खोजने (नया) के अनुरोध देखें.शामिल किए गए टाइप
खोजने के लिए, टेबल A में मौजूद जगहों के टाइप की सूची. अगर इस पैरामीटर को शामिल नहीं किया जाता है, तो सभी तरह की जगहों की जानकारी मिलती है.
शामिल किए गए टाइप पैरामीटर को सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetIncludedTypes()
तरीके को कॉल करें.शामिल नहीं किए गए टाइप
टेबल A में मौजूद जगहों के टाइप की सूची, जिसे खोज के नतीजों में शामिल नहीं करना है.
अगर अनुरोध में
includedTypes
(जैसे कि"school"
) औरexcludedTypes
(जैसे कि"primary_school"
) दोनों को शामिल किया जाता है, तो जवाब में वे जगहें शामिल होती हैं जिन्हें"school"
के तौर पर कैटगरी में रखा गया है, लेकिन"primary_school"
के तौर पर नहीं. जवाब में ऐसी जगहें शामिल हैं जोincludedTypes
में से कम से कम एक से मैच करती हैं औरexcludedTypes
में से किसी से भी मैच नहीं करती हैं.अगर कोई टाइप दोनों में दिखता है, जैसे कि
includedTypes
औरexcludedTypes
, तोINVALID_REQUEST
गड़बड़ी दिखती है.बहिष्कृत टाइप पैरामीटर सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetExcludedTypes()
तरीके को कॉल करें.शामिल किए गए मुख्य टाइप
टेबल A में मौजूद मुख्य जगहों के टाइप की सूची, जिसे खोज में शामिल करना है.
शामिल किए गए मुख्य टाइप का पैरामीटर सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetIncludedPrimaryTypes()
तरीके को कॉल करें.शामिल नहीं किए गए प्राइमरी टाइप
टेबल A में मौजूद मुख्य जगहों के टाइप की सूची, जिसे खोज के नतीजों से बाहर रखना है.
अगर प्राइमरी टाइप में कोई टकराव होता है, जैसे कि कोई टाइप
includedPrimaryTypes
औरexcludedPrimaryTypes
, दोनों में दिखता है, तोINVALID_ARGUMENT
गड़बड़ी दिखती है.बहिष्कृत प्राइमरी टाइप पैरामीटर सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetExcludedPrimaryTypes()
तरीके को कॉल करें. -
नतीजों की ज़्यादा से ज़्यादा संख्या
जगह के ज़्यादा से ज़्यादा नतीजों की संख्या तय करता है. इसकी वैल्यू 1 और 20 (डिफ़ॉल्ट) के बीच होनी चाहिए.
नतीजों की ज़्यादा से ज़्यादा संख्या तय करने वाले पैरामीटर को सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetMaxResultCount()
तरीके को कॉल करें. -
रैंक करने की प्राथमिकता
रैंकिंग के लिए इस्तेमाल किया जाने वाला टाइप. अगर इस पैरामीटर को शामिल नहीं किया जाता है, तो नतीजों को लोकप्रियता के हिसाब से रैंक किया जाता है. यह इनमें से कोई एक हो सकता है:
POPULARITY
(डिफ़ॉल्ट) नतीजों को उनकी लोकप्रियता के आधार पर क्रम से लगाता है.DISTANCE
नतीजों को, तय की गई जगह से उनकी दूरी के हिसाब से बढ़ते क्रम में क्रमबद्ध करता है.
रैंक की प्राथमिकता का पैरामीटर सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetRankPreference()
तरीके को कॉल करें. -
क्षेत्र कोड
जवाब को फ़ॉर्मैट करने के लिए इस्तेमाल किया गया क्षेत्र कोड. इसे दो वर्णों वाले CLDR कोड की वैल्यू के तौर पर तय किया जाता है. कोई डिफ़ॉल्ट वैल्यू नहीं है.
अगर जवाब में मौजूद
FORMATTED_ADDRESS
फ़ील्ड में दिए गए देश का नाम,regionCode
में दिए गए देश के नाम से मेल खाता है, तोFORMATTED_ADDRESS
से देश का कोड हटा दिया जाता है.ज़्यादातर CLDR कोड, ISO 3166-1 कोड के जैसे ही होते हैं. हालांकि, कुछ मामलों में ये अलग होते हैं. उदाहरण के लिए, यूनाइटेड किंगडम का ccTLD "uk" (.co.uk) है, जबकि इसका ISO 3166-1 कोड "gb" है. तकनीकी तौर पर, यह "ग्रेट ब्रिटेन और उत्तरी आयरलैंड का यूनाइटेड किंगडम" के लिए है. लागू कानून के आधार पर, इस पैरामीटर से नतीजों पर असर पड़ सकता है.
रीजन कोड पैरामीटर सेट करने के लिए,
SearchNearbyRequest
ऑब्जेक्ट बनाते समयsetRegionCode()
तरीके को कॉल करें.
अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाना
अगर आपका ऐप्लिकेशन, PlacesClient
से मिली जानकारी दिखाता है, तो उसे ज़रूरी एट्रिब्यूशन भी दिखाने होंगे. जैसे, फ़ोटो और समीक्षाएं.
ज़्यादा जानकारी के लिए, Places SDK for Android की नीतियां देखें.