ऑटोकंप्लीट (नया) की मदद से, किसी ऐसे अनुरोध के जवाब में सुझाव दिखाए जाते हैं जिसमें टेक्स्ट सर्च स्ट्रिंग और सर्च एरिया को कंट्रोल करने वाली भौगोलिक सीमाएं शामिल हों. ऑटोकंप्लीट की सुविधा, इनपुट के सभी शब्दों और सबस्ट्रिंग को मैच कर सकती है. साथ ही, जगहों के नाम, पते, और प्लस कोड को बंद कर सकती है. आपका ऐप्लिकेशन, उपयोगकर्ता के टाइप करने के साथ-साथ क्वेरी भेज सकता है, ताकि उन्हें तुरंत जगह और क्वेरी के सुझाव दिए जा सकें.
उदाहरण के लिए, आपने ऑटोकंप्लीट की सुविधा को इनपुट ए स्ट्रिंग के तौर पर इस्तेमाल किया है. इसमें उपयोगकर्ता का कुछ इनपुट, "Sicilian piz" है. साथ ही, खोज के लिए जगह सिर्फ़ सैन फ़्रांसिस्को, कैलिफ़ोर्निया तक है. इसके बाद, दिए गए जवाब में जगह के ऐसे सुझावों की सूची शामिल होती है जो खोज स्ट्रिंग और खोज के इलाके से मेल खाते हैं. जैसे, "Sicilian Pizza Kitchen" नाम वाला रेस्टोरेंट.
दिखाई गई जगहों के लिए सुझाव, उपयोगकर्ता को दिखाए जाने के हिसाब से बनाए जाते हैं. इससे उन्हें अपनी पसंद की जगह चुनने में मदद मिलती है. आप दिखाई गई किसी भी जगह की जानकारी के बारे में ज़्यादा जानकारी पाने के लिए, जगह की जानकारी (नया) का अनुरोध कर सकते हैं.
ऑटोकंप्लीट की सुविधा (नए) अनुरोध
आपका ऐप्लिकेशन, ऑटोकंप्लीट एपीआई की मदद से
PlacesClient.findAutocompletePredictions()
को कॉल करके और
FindAutocompletePredictionsRequest
ऑब्जेक्ट पास करके, अनुमानित जगहों के नामों और/या पतों की सूची पा सकता है. नीचे दिए गए उदाहरण में
PlacesClient.findAutocompletePredictions()
को किए गए सभी कॉल की जानकारी दी गई है.
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Sicilian piz") .setRegionCode("ES") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
ऑटोकंप्लीट की सुविधा (नए) जवाब
एपीआई, Task
में FindAutocompletePredictionsResponse
दिखाता है.
FindAutocompletePredictionsResponse
में ज़्यादा से ज़्यादा पांच AutocompletePrediction
ऑब्जेक्ट की एक सूची होती है. यह सूची, अनुमानित जगहों को दिखाती है. अगर क्वेरी और फ़िल्टर मानदंड के हिसाब से कोई जगह नहीं है, तो हो सकता है कि यह सूची खाली हो.
हर अनुमानित जगह की जानकारी पाने के लिए, इन तरीकों का इस्तेमाल किया जा सकता है:
getFullText(CharacterStyle)
किसी जगह की जानकारी का पूरा टेक्स्ट दिखाता है. यह प्राइमरी और सेकंडरी टेक्स्ट का कॉम्बिनेशन होता है. उदाहरण: "कुतुब मीनार, एवेन्यू ऐनाटोले फ़्रांस, पेरिस, फ़्रांस". इसके अलावा, इस तरीके की मदद से,CharacterStyle
का इस्तेमाल करके ब्यौरे के उन सेक्शन को हाइलाइट किया जा सकता है जो खोज से मैच करने वाली अपनी पसंदीदा स्टाइल से मेल खाते हैं.CharacterStyle
पैरामीटर ज़रूरी नहीं है. अगर आपको हाइलाइट करने की ज़रूरत नहीं है, तो इसे शून्य पर सेट करें.getPrimaryText(CharacterStyle)
किसी जगह के बारे में बताने वाला मुख्य टेक्स्ट दिखाता है. आम तौर पर, यह जगह का नाम होता है. उदाहरण: "कुतुब मीनार" और "123 Pitt Street".getSecondaryText(CharacterStyle)
यह, किसी जगह के ब्यौरे के मुख्य कारोबार के तहत आने वाली कंपनी का टेक्स्ट दिखाता है. उदाहरण के लिए, ऑटोकंप्लीट सुविधा के सुझावों को दिखाते समय, यह दूसरी लाइन के तौर पर काम का होता है. उदाहरण: "Avenue Anatole France, France, France" और "Sydney, New South Wales".getPlaceId()
अनुमानित जगह की जानकारी का आईडी दिखाता है. जगह का आईडी, टेक्स्ट वाला एक आइडेंटिफ़ायर होता है, जो किसी जगह की खास पहचान करता है. इसका इस्तेमाल करके, बाद मेंPlace
ऑब्जेक्ट को फिर से पाया जा सकता है. ऑटोकंप्लीट की सुविधा में जगह के आईडी के बारे में ज़्यादा जानकारी के लिए, जगह की जानकारी (नया) देखें. जगह के आईडी के बारे में सामान्य जानकारी के लिए, जगह के आईडी की खास जानकारी देखें.getTypes()
, इस जगह से जुड़ी अलग-अलग तरह की जगहों की सूची दिखाता है.getDistanceMeters()
, इस जगह और अनुरोध में बताई गई ऑरिजिन के बीच की सीधी लाइन की दूरी को मीटर में दिखाता है.
ज़रूरी पैरामीटर
-
क्वेरी
वह टेक्स्ट स्ट्रिंग जिस पर खोजना है. पूरे शब्द और सबस्ट्रिंग, जगहों के नाम, पते, और प्लस कोड तय करें. ऑटोकंप्लीट (नई) सेवा, इस स्ट्रिंग के आधार पर कैंडिडेट के नतीजे दिखाती है और इस आधार पर नतीजे दिखाती है कि वे उपयोगकर्ताओं के लिए कितने काम के हैं.
क्वेरी पैरामीटर सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetQuery()
तरीके को कॉल करें.
ज़रूरी नहीं पैरामीटर
-
मुख्य टाइप
जवाब में दिखाई गई जगहों को फ़िल्टर करने के लिए टेबल A या टेबल B टाइप की ज़्यादा से ज़्यादा पांच टाइप वैल्यू की सूची. जवाब में शामिल करने के लिए, जगह की जानकारी, बताए गए मुख्य टाइप की किसी एक वैल्यू से मेल खानी चाहिए.
किसी जगह से जुड़े टेबल A या टेबल B टाइप में से, सिर्फ़ एक ही तरह का प्राइमरी टाइप हो सकता है. उदाहरण के लिए, प्राइमरी टाइप
"mexican_restaurant"
या"steak_house"
हो सकता है.अनुरोध को
INVALID_REQUEST
गड़बड़ी के साथ अस्वीकार कर दिया जाता है, अगर:- पाँच से ज़्यादा प्रकार बताए गए हैं.
- कोई भी अज्ञात प्रकार दर्ज किया गया है.
मुख्य टाइप का पैरामीटर सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetTypesFilter()
तरीके को कॉल करें. -
देश
सिर्फ़ कुछ खास देशों की सूची के नतीजों को ही शामिल करें. इसमें ज़्यादा से ज़्यादा 15 ccTLD ("टॉप-लेवल डोमेन") दो वर्ण वाले मान की सूची के तौर पर जानकारी दी गई है. अगर यह जवाब नहीं दिया जाता है, तो जवाब पर कोई पाबंदी नहीं होगी. उदाहरण के लिए, सिर्फ़ जर्मनी और फ़्रांस के इलाके देखने के लिए:
अगर
locationRestriction
औरincludedRegionCodes
, दोनों की वैल्यू तय की जाती है, तो नतीजे इन दोनों सेटिंग के इंटरसेक्शन की जगह पर दिखेंगे.देशों का पैरामीटर सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetCountries()
तरीके को कॉल करें. -
इनपुट ऑफ़सेट
शून्य पर आधारित यूनिकोड वर्ण ऑफ़सेट, जो क्वेरी में कर्सर की जगह दिखाता है. कर्सर की जगह से यह तय होता है कि कौनसे सुझाव दिखाए जाएंगे. अगर इस फ़ील्ड में कोई वैल्यू नहीं चुनी जाती है, तो डिफ़ॉल्ट रूप से क्वेरी की लंबाई सेट होती है.
इनपुट ऑफ़सेट पैरामीटर सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetInputOffset()
तरीके को कॉल करें. जगह का पूर्वाग्रह या जगह की जानकारी से जुड़ी पाबंदी
खोज के लिए चुने गए इलाके को तय करने के लिए, पूर्वाग्रह या जगह की पाबंदी तय की जा सकती है, लेकिन दोनों नहीं. जगह की जानकारी से जुड़ी पाबंदी का मतलब उस जगह की जानकारी देना है जहां नतीजे दिखाने हैं. साथ ही, अलग-अलग जगहों की जानकारी देने के लिए, अलग-अलग जगहों की जानकारी दी जाती है. इसमें बताया जाता है कि नतीजे किस इलाके के होने चाहिए. मुख्य अंतर यह है कि जगह के आधार पर भेदभाव होने पर, तय किए गए क्षेत्र से बाहर के नतीजे अब भी दिखाए जा सकते हैं.
जगह का मापदंड
यह बताता है कि किसी इलाके को किस इलाके में खोजा जाना है. इस जगह की जानकारी पूर्वाग्रह के तौर पर दी गई है, न कि कोई पाबंदी. इसलिए, हो सकता है कि तय किए गए इलाके से बाहर के नतीजे अब भी दिखाए जाएं.
जगह के पूर्वाग्रह पैरामीटर को सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetLocationBias()
तरीके को कॉल करें.जगह की जानकारी से जुड़ी पाबंदी
यह बताता है कि किसी इलाके को किस इलाके में खोजा जाना है. चुने गए इलाके से बाहर के नतीजे नहीं दिखाए जाते.
जगह की जानकारी पर पाबंदी वाला पैरामीटर सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetLocationRestriction()
तरीके को कॉल करें.
जगह के पूर्वाग्रह या जगह की पाबंदी वाले क्षेत्र को आयताकार व्यूपोर्ट या सर्कल के तौर पर तय करें.
सर्कल को सेंटर पॉइंट और मीटर में रेडियस से तय किया जाता है. दायरा 0.0 से 50, 000.0 के बीच होना चाहिए. डिफ़ॉल्ट वैल्यू 0.0 है. जगह की पाबंदी के लिए, आपको दायरा 0.0 से ज़्यादा पर सेट करना होगा. ऐसा न करने पर, अनुरोध का कोई नतीजा नहीं मिलता.
रेक्टैंगल, अक्षांश-देशांतर का व्यूपोर्ट होता है. इसे
low
औरhigh
पॉइंट के सामने दो तिरछे तरीके से दिखाया जाता है. व्यूपोर्ट को क्लोज़्ड क्षेत्र माना जाता है. इसका मतलब है कि इसकी सीमा शामिल होती है. अक्षांश की सीमाएं -90 से 90 डिग्री के बीच होनी चाहिए, और देशांतर की सीमाएं -180 से 180 डिग्री के बीच होनी चाहिए, जिसमें ये भी शामिल हैं:- अगर
low
=high
है, तो व्यूपोर्ट में वह सिंगल पॉइंट होता है. - अगर
low.longitude
>high.longitude
है, तो देशांतर की रेंज उलटी हो जाती है (व्यूपोर्ट 180 डिग्री देशांतर लाइन को पार करता है). - अगर
low.longitude
= -180 डिग्री औरhigh.longitude
= 180 डिग्री है, तो व्यूपोर्ट में सभी देशांतर शामिल होते हैं. - अगर
low.longitude
= 180 डिग्री औरhigh.longitude
= -180 डिग्री है, तो देशांतर की रेंज खाली होगी.
low
औरhigh
, दोनों में जानकारी भरी जानी चाहिए. साथ ही, दिखाया गया बॉक्स खाली नहीं छोड़ा जा सकता. व्यूपोर्ट का खाली होने पर गड़बड़ी होती है.- अगर
-
शुरुआत की जगह
वह मूल बिंदु जहां से मंज़िल के लिए सीधी-लाइन की दूरी की गणना की जानी है (
getDistanceMeters()
का इस्तेमाल करके ऐक्सेस किया गया). अगर यह मान छोड़ा जाता है, तो सीधी रेखा की दूरी दिखाई नहीं जाएगी. अक्षांश और देशांतर निर्देशांक के हिसाब से होने चाहिए:ऑरिजिन पैरामीटर सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetOrigin()
तरीके को कॉल करें. -
क्षेत्र कोड
जवाब को फ़ॉर्मैट करने के लिए इस्तेमाल किया जाने वाला क्षेत्रीय कोड. इसमें पते का फ़ॉर्मैट भी शामिल है. इसे ccTLD ("टॉप लेवल डोमेन") के तौर पर दो वर्णों की वैल्यू के तौर पर बताया जाता है. ज़्यादातर ccTLD कोड, ISO 3166-1 कोड के जैसे होते हैं. हालांकि, इसमें कुछ खास अपवाद भी हैं. उदाहरण के लिए, यूनाइटेड किंगडम का ccTLD "uk" (.co.uk) है, जबकि ISO 3166-1 कोड "gb" है. तकनीकी तौर पर, यूनाइटेड किंगडम ऑफ़ ग्रेट ब्रिटेन और नॉर्दन आयरलैंड की इकाई के लिए इसका इस्तेमाल किया जा सकता है.
किसी जगह का अमान्य कोड डालने पर, एपीआई
INVALID_ARGUMENT
गड़बड़ी दिखाता है. पैरामीटर, लागू कानून के आधार पर नतीजों पर असर डाल सकता है.क्षेत्र का कोड पैरामीटर सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetRegionCode()
तरीके को कॉल करें. -
सेशन टोकन
सेशन टोकन, यूज़र जनरेटेड स्ट्रिंग होते हैं जो ऑटोकंप्लीट (नए) कॉल को "सेशन" के तौर पर ट्रैक करते हैं. ऑटोकंप्लीट की सुविधा, बिलिंग के मकसद से, उपयोगकर्ता के ऑटोकंप्लीट की सुविधा की खोज के अलग-अलग सेशन में क्वेरी और चुनने के चरणों का ग्रुप बनाने के लिए, सेशन टोकन का इस्तेमाल करती है. सेशन तब शुरू होता है, जब उपयोगकर्ता क्वेरी टाइप करना शुरू करता है और जगह चुनने के बाद खत्म होता है. हर सेशन में एक से ज़्यादा क्वेरी हो सकती हैं. इसके बाद, एक जगह को चुना जा सकता है. सेशन खत्म होने के बाद, टोकन मान्य नहीं रहता. आपके ऐप्लिकेशन को हर सेशन के लिए एक नया टोकन जनरेट करना होगा. हमारा सुझाव है कि प्रोग्राम के हिसाब से अपने-आप पूरे होने वाले सभी सेशन के लिए, सेशन टोकन इस्तेमाल करें. जब कोई फ़्रैगमेंट एम्बेड किया जाता है या किसी इंटेंट का इस्तेमाल करके ऑटोकंप्लीट की सुविधा लॉन्च की जाती है, तो एपीआई अपने-आप इसका ध्यान रखता है.
ऑटोकंप्लीट की सुविधा, हर सेशन की पहचान करने के लिए,
AutocompleteSessionToken
का इस्तेमाल करती है. आपके ऐप्लिकेशन को हर नया सेशन शुरू करते समय एक नया सेशन टोकन पास करना होगा. इसके बाद, उपयोगकर्ता की चुनी हुई जगह से जुड़ी जानकारी वापस पाने के लिए, अगली कॉलfetchPlace()
में प्लेस आईडी के साथ उसी टोकन को पास करना होगा.सेशन टोकन पैरामीटर सेट करने के लिए,
FindAutocompletePredictionsRequest
ऑब्जेक्ट बनाते समयsetSessionToken()
तरीके को कॉल करें.ज़्यादा जानकारी के लिए, सेशन टोकन देखें.
ऑटोकंप्लीट की सुविधा (नए) के उदाहरण
जगह की जानकारी पर पाबंदी और जगह के मापदंड का इस्तेमाल करें
ऑटोकंप्लीट (नया) सुविधा, खोज वाली जगह को कंट्रोल करने के लिए डिफ़ॉल्ट रूप से आईपी बायसिंग का इस्तेमाल करती है. आईपी बायसिंग के साथ, एपीआई नतीजों को तय करने के लिए डिवाइस के आईपी पते का इस्तेमाल करता है. आप चाहें, तो खोज करने के लिए कोई इलाका तय करने के लिए जगह की जानकारी के इस्तेमाल पर पाबंदी या जगह के हिसाब से अलग-अलग जगह का इस्तेमाल कर सकते हैं, लेकिन दोनों का नहीं.
जगह की जानकारी पर पाबंदी लगाने से पता चलता है कि किस इलाके को खोजा जाना है. चुने गए इलाके से बाहर के नतीजे नहीं दिखाए जाते. नीचे दिए गए उदाहरण में जगह की पाबंदी का इस्तेमाल किया गया है, ताकि अनुरोध को सैन फ़्रांसिस्को में 5,000 मीटर के दायरे में आने वाली गोलाकार जगह तक सीमित किया जा सके:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
जगह के हिसाब से पूर्वाग्रह होने पर, जगह की जानकारी को बायस की तरह दिखाया जाता है. इसका मतलब है कि बताई गई जगह के आस-पास के नतीजे दिखाए जा सकते हैं. इनमें, बताई गई जगह से बाहर के नतीजे भी शामिल हैं. अगले उदाहरण में, जगह की जानकारी के पूर्वाग्रह इस्तेमाल करने के पिछले अनुरोध को बदला गया है:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
प्राथमिक प्रकारों का उपयोग करें
प्राइमरी टाइप पैरामीटर का इस्तेमाल करके, किसी अनुरोध के नतीजों को किसी खास टाइप के होने पर पाबंदी लगाएं, जैसा कि टेबल A और टेबल B में बताया गया है. ज़्यादा से ज़्यादा पांच वैल्यू की एक कैटगरी तय की जा सकती है. अगर इसे छोड़ दिया जाता है, तो सभी तरह के नतीजे दिखते हैं.
इस उदाहरण में, "सॉकर" की क्वेरी स्ट्रिंग के बारे में बताया गया है. साथ ही, इसमें प्राइमरी टाइप के पैरामीटर का इस्तेमाल करके, "sporting_goods_store"
टाइप के संस्थानों के नतीजों पर पाबंदी लगाई गई है:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); final List<Place.Field> primaryTypes = Arrays.asList("sporting_goods_store"); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Soccer") .setIncludedPrimaryTypes(primaryTypes) .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
अगर प्राइमरी टाइप पैरामीटर को छोड़ दिया जाता है, तो नतीजों में ऐसे होटल शामिल हो सकते हैं जो आपको न चाहें. जैसे, "athletic_field"
.
ऑरिजिन का इस्तेमाल करें
जब अनुरोध में origin पैरामीटर को अक्षांश और देशांतर निर्देशांक के तौर पर शामिल किया जाता है, तो एपीआई रिस्पॉन्स में
मूल से मंज़िल तक की सीधी लाइन की दूरी शामिल करता है (getDistanceMeters()
का इस्तेमाल करके ऐक्सेस किया जाता है).
इस उदाहरण में ऑरिजिन को सैन फ़्रांसिस्को के केंद्र के तौर पर सेट किया गया है:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setOrigin(center) .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
एट्रिब्यूशन
मैप के बिना भी ऑटोकंप्लीट की सुविधा (नया) का इस्तेमाल किया जा सकता है. अगर मैप दिखाया जाता है, तो वह Google मैप होना चाहिए. जब ऑटोकंप्लीट (नई सुविधा) सेवा के लिए, मैप के बिना सुझाव दिखाए जाते हैं, तो आपको खोज फ़ील्ड/खोज के नतीजों के साथ Google का लोगो दिखाना होगा. ज़्यादा जानकारी के लिए, Google लोगो और एट्रिब्यूशन दिखाना लेख पढ़ें.