जगहों के सुझाव ऑटोकंप्लीट करने की सुविधा
संग्रह की मदद से व्यवस्थित रहें
अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर
ध्यान दें: सर्वर-साइड
लाइब्रेरी
इस पेज पर, Maps JavaScript API के साथ उपलब्ध क्लाइंट-साइड लाइब्रेरी के बारे में बताया गया है. अगर आपको अपने सर्वर पर Places API वेब सेवा का इस्तेमाल करना है, तो Google Maps Services के लिए Node.js क्लाइंट देखें. उस लिंक पर मौजूद पेज में, Google Maps की सेवाओं के लिए Java Client, Python Client, और Go Client के बारे में भी बताया गया है.
परिचय
ऑटोकंप्लीट, Maps JavaScript API में मौजूद Places लाइब्रेरी की एक सुविधा है. ऑटोकंप्लीट का इस्तेमाल करके, अपने ऐप्लिकेशन को Google Maps के खोज फ़ील्ड की तरह टाइप-अहेड-सर्च की सुविधा दी जा सकती है. ऑटोकंप्लीट सेवा, पूरे शब्दों और सबस्ट्रिंग से मैच कर सकती है. इससे जगहों के नाम, पते, और प्लस कोड का पता लगाया जा सकता है. इसलिए, ऐप्लिकेशन उपयोगकर्ता के टाइप करते ही क्वेरी भेज सकते हैं, ताकि जगह के बारे में तुरंत अनुमान लगाया जा सके. Places API के मुताबिक, 'जगह' कोई कारोबार, भौगोलिक जगह या दिलचस्पी की कोई खास जगह हो सकती है.
शुरू करना
Maps JavaScript API में Places library का इस्तेमाल करने से पहले, यह पुष्टि करें कि Google Cloud Console में Places API चालू हो. साथ ही, यह भी पुष्टि करें कि यह उसी प्रोजेक्ट में चालू हो जिसे आपने Maps JavaScript API के लिए सेट अप किया था.
कोई प्रोजेक्ट चुनें बटन पर क्लिक करें. इसके बाद, वही प्रोजेक्ट चुनें जिसे आपने Maps JavaScript API के लिए सेट अप किया था. इसके बाद, खोलें पर क्लिक करें.
डैशबोर्ड पर मौजूद एपीआई की सूची में, Places API ढूंढें.
अगर आपको सूची में एपीआई दिखता है, तो इसका मतलब है कि आपने एपीआई को चालू कर लिया है. हालांकि, यह प्रोजेक्ट लेगसी स्टेटस में है.
लेगसी स्टेज और लेगसी से नई सेवाओं पर माइग्रेट करने के तरीके के बारे में ज़्यादा जानने के लिए, लेगसी प्रॉडक्ट और सुविधाएं देखें.
ऑटोकंप्लीट और SearchBox विजेट के लिए एक अपवाद उपलब्ध है. ये विजेट, Places API (नया) पर GA प्रॉडक्ट के तौर पर अब तक उपलब्ध नहीं हैं.
लाइब्रेरी लोड करना
जगहों की जानकारी देने वाली सेवा, एक अलग लाइब्रेरी है. यह Maps JavaScript API के मुख्य कोड से अलग होती है. इस लाइब्रेरी में मौजूद सुविधाओं का इस्तेमाल करने के लिए, आपको इसे सबसे पहले लोड करना होगा. इसके लिए, Maps API के बूटस्ट्रैप यूआरएल में libraries पैरामीटर का इस्तेमाल करें:
यह एपीआई, दो तरह के ऑटोकंप्लीट विजेट उपलब्ध कराता है. इन्हें Autocomplete और SearchBox क्लास का इस्तेमाल करके जोड़ा जा सकता है. इसके अलावा, AutocompleteService क्लास का इस्तेमाल करके, ऑटोकंप्लीट के नतीजों को प्रोग्राम के हिसाब से वापस पाया जा सकता है. इसके लिए, Maps JavaScript API का रेफ़रंस देखें: AutocompleteService क्लास.
यहां उपलब्ध क्लास की खास जानकारी दी गई है:
Autocomplete आपके वेब पेज में टेक्स्ट डालने के लिए एक इनपुट फ़ील्ड जोड़ता है.
साथ ही, इस फ़ील्ड में डाले गए वर्णों पर नज़र रखता है. जब उपयोगकर्ता टेक्स्ट डालता है, तब अपने-आप पूरी होने वाली सुविधा, जगह के अनुमानों को ड्रॉप-डाउन सूची के तौर पर दिखाती है. जब उपयोगकर्ता सूची से किसी जगह को चुनता है, तो उस जगह की जानकारी, अपने-आप पूरा होने वाले ऑब्जेक्ट को वापस भेज दी जाती है. इसे आपका ऐप्लिकेशन वापस पा सकता है. इस बारे में जानकारी यहां दी गई है.
पहली इमेज: टेक्स्ट फ़ील्ड और चुनने के लिए उपलब्ध विकल्पों की सूची को अपने-आप पूरा होने की सुविधादूसरी इमेज: पता डालने का पूरा फ़ॉर्म
SearchBox आपके वेब पेज में टेक्स्ट डालने के लिए एक इनपुट फ़ील्ड जोड़ता है. यह Autocomplete की तरह ही काम करता है. इनके बीच के अंतर यहां दिए गए हैं:
दोनों के बीच मुख्य अंतर, पिक लिस्ट में दिखने वाले नतीजों का होता है. SearchBox में अनुमानों की लंबी सूची दिखती है. इसमें जगहों (Places API के हिसाब से) के साथ-साथ खोज के लिए सुझाए गए शब्द भी शामिल हो सकते हैं. उदाहरण के लिए, अगर उपयोगकर्ता 'दिल्ली में पिज़्ज़ा' डालता है, तो पिक लिस्ट में 'दिल्ली में पिज़्ज़ा' के साथ-साथ अलग-अलग पिज़्ज़ा आउटलेट के नाम भी शामिल हो सकते हैं.
SearchBox में, खोज को सीमित करने के लिए Autocomplete की तुलना में कम विकल्प मिलते हैं. पहले वाले विकल्प में, किसी दिए गए LatLngBounds के हिसाब से खोज के नतीजों को प्राथमिकता दी जा सकती है. दूसरे तरीके में, खोज के दायरे को किसी देश और किसी खास तरह की जगह तक सीमित किया जा सकता है. साथ ही, खोज के दायरे की सीमाएं भी सेट की जा सकती हैं. ज़्यादा जानकारी के लिए, यहां देखें.
तीसरी इमेज: SearchBox में खोज के लिए इस्तेमाल हुए शब्द और जगह के अनुमान दिखाए गए हैं.
इस बारे में ज़्यादा जानकारी यहां दी गई है.
प्रोग्राम के हिसाब से अनुमानित नतीजे पाने के लिए, AutocompleteService ऑब्जेक्ट बनाया जा सकता है. मिलते-जुलते नतीजे पाने के लिए, getPlacePredictions() को कॉल करें. इसके अलावा, मिलते-जुलते नतीजे और खोज के लिए सुझाए गए शब्द पाने के लिए, getQueryPredictions() को कॉल करें. ध्यान दें: AutocompleteService से कोई यूज़र इंटरफ़ेस (यूआई) कंट्रोल नहीं जुड़ता है. इसके बजाय, ऊपर दिए गए तरीके, अनुमानित नतीजों के ऑब्जेक्ट का एक कलेक्शन दिखाते हैं. हर अनुमानित नतीजे के ऑब्जेक्ट में, अनुमानित नतीजे का टेक्स्ट होता है. साथ ही, इसमें रेफ़रंस की जानकारी और यह जानकारी होती है कि नतीजे, उपयोगकर्ता के इनपुट से कैसे मेल खाते हैं. यहां ज़्यादा जानकारी देखें.
ऑटोकंप्लीट विजेट जोड़ना
Autocomplete विजेट, आपके वेब पेज पर टेक्स्ट इनपुट फ़ील्ड बनाता है. साथ ही, यूज़र इंटरफ़ेस (यूआई) में मौजूद पिक लिस्ट में जगहों के बारे में अनुमानित जानकारी देता है. इसके अलावा, getPlace() अनुरोध के जवाब में जगह की जानकारी दिखाता है. पिक लिस्ट में मौजूद हर एंट्री, किसी एक जगह से जुड़ी होती है. यह जगह, Places API के हिसाब से तय की जाती है.
Autocomplete कंस्ट्रक्टर में दो आर्ग्युमेंट होते हैं:
text टाइप का एचटीएमएल input एलिमेंट. यह इनपुट फ़ील्ड है. इसमें अपने-आप पूरा होने वाली सेवा, निगरानी करेगी और इसके नतीजे अटैच करेगी.
वैकल्पिक AutocompleteOptions आर्ग्युमेंट. इसमें ये प्रॉपर्टी शामिल हो सकती हैं:
डेटा fields का एक कलेक्शन, जिसे उपयोगकर्ता के चुने गए PlaceResult के लिए Place Details रिस्पॉन्स में शामिल किया जाना है. अगर प्रॉपर्टी सेट नहीं की गई है या ['ALL'] पास किया गया है, तो उपलब्ध सभी फ़ील्ड दिखाए जाते हैं और बिल किया जाता है. प्रोडक्शन डिप्लॉयमेंट के लिए, इसका सुझाव नहीं दिया जाता. फ़ील्ड की सूची के लिए, PlaceResult देखें.
types की एक ऐसी सरणी जो इस्तेमाल किए जा सकने वाले टाइप में दिए गए किसी टाइप या टाइप कलेक्शन के बारे में बताती है. अगर कोई टाइप नहीं चुना जाता है, तो सभी टाइप दिखाए जाते हैं.
bounds एक google.maps.LatLngBounds ऑब्जेक्ट है. यह उस इलाके के बारे में बताता है जहां जगहों को खोजना है. नतीजे, इन सीमाओं के अंदर मौजूद जगहों के हिसाब से मिलते हैं. हालांकि, ऐसा ज़रूरी नहीं है कि नतीजे सिर्फ़ इन सीमाओं के अंदर मौजूद जगहों के हिसाब से ही मिलें.
strictBounds एक boolean है. इससे यह तय होता है कि एपीआई को सिर्फ़ उन जगहों की जानकारी देनी चाहिए जो दिए गए bounds के हिसाब से तय किए गए क्षेत्र में मौजूद हैं. एपीआई, इस इलाके से बाहर के नतीजे नहीं दिखाता. भले ही, वे उपयोगकर्ता के इनपुट से मेल खाते हों.
componentRestrictions का इस्तेमाल करके, नतीजों को कुछ खास ग्रुप तक सीमित किया जा सकता है. componentRestrictions का इस्तेमाल करके, ज़्यादा से ज़्यादा पांच देशों के हिसाब से फ़िल्टर किया जा सकता है. देशों के नाम, दो वर्णों वाले आईएसओ 3166-1 ऐल्फ़ा-2 के मुताबिक देश के कोड के तौर पर पास किए जाने चाहिए. एक से ज़्यादा देशों के नाम, देश के कोड की सूची के तौर पर पास किए जाने चाहिए.
ध्यान दें: अगर आपको देश के कोड से अनचाहे नतीजे मिलते हैं, तो पुष्टि करें कि आपने ऐसा कोड इस्तेमाल किया हो जिसमें वे देश, आश्रित क्षेत्र, और भौगोलिक रूप से खास इलाके शामिल हों जिन्हें आपको टारगेट करना है. कोड की जानकारी Wikipedia: List of ISO 3166 country codes या ISO Online Browsing Platform पर देखी जा सकती है.
placeIdOnly का इस्तेमाल, Autocomplete विजेट को सिर्फ़ जगह के आईडी वापस पाने के लिए निर्देश देने के लिए किया जा सकता है. Autocomplete ऑब्जेक्ट पर getPlace() को कॉल करने पर, उपलब्ध कराए गए PlaceResult में सिर्फ़ place id, types, और name प्रॉपर्टी सेट होंगी. जवाब में मिले जगह के आईडी का इस्तेमाल, Places, Geocoding, Directions या Distance Matrix सेवाओं के लिए किया जा सकता है.
ऑटोकंप्लीट के सुझावों को सीमित करना
डिफ़ॉल्ट रूप से, जगह के नाम अपने-आप भरने की सुविधा, सभी तरह की जगहों के नाम दिखाती है. हालांकि, यह सुविधा, उपयोगकर्ता की जगह के आस-पास की जगहों के नाम दिखाने पर ज़्यादा फ़ोकस करती है. साथ ही, उपयोगकर्ता की चुनी गई जगह के लिए, उपलब्ध सभी डेटा फ़ील्ड फ़ेच करती है. जगह के नाम अपने-आप भरने की सुविधा के विकल्प सेट करें, ताकि आपके इस्तेमाल के उदाहरण के आधार पर ज़्यादा काम के सुझाव दिखाए जा सकें.
कंस्ट्रक्शन के समय विकल्प सेट करना
Autocomplete कंस्ट्रक्टर, विजेट बनाते समय सीमाएं तय करने के लिए AutocompleteOptions
पैरामीटर स्वीकार करता है. यहां दिए गए उदाहरण में, bounds, componentRestrictions, और types विकल्पों को सेट किया गया है, ताकि establishment टाइप की जगहों के लिए अनुरोध किया जा सके. साथ ही, इसमें यह भी बताया गया है कि अनुरोध में, तय की गई भौगोलिक जगह के हिसाब से जगहों को प्राथमिकता दी जाए और अनुमान सिर्फ़ अमेरिका में मौजूद जगहों के लिए लगाए जाएं. fields विकल्प सेट करने से यह तय होता है कि उपयोगकर्ता की चुनी गई जगह के बारे में कौनसी जानकारी दिखाई जाए.
किसी मौजूदा विजेट के लिए, किसी विकल्प की वैल्यू बदलने के लिए setOptions() को कॉल करें.
TypeScript
constcenter={lat:50.064192,lng:-130.605469};// Create a bounding box with sides ~10km away from the center pointconstdefaultBounds={north:center.lat+0.1,south:center.lat-0.1,east:center.lng+0.1,west:center.lng-0.1,};constinput=document.getElementById("pac-input")asHTMLInputElement;constoptions={bounds:defaultBounds,componentRestrictions:{country:"us"},fields:["address_components","geometry","icon","name"],strictBounds:false,};constautocomplete=newgoogle.maps.places.Autocomplete(input,options);
constcenter={lat:50.064192,lng:-130.605469};// Create a bounding box with sides ~10km away from the center pointconstdefaultBounds={north:center.lat+0.1,south:center.lat-0.1,east:center.lng+0.1,west:center.lng-0.1,};constinput=document.getElementById("pac-input");constoptions={bounds:defaultBounds,componentRestrictions:{country:"us"},fields:["address_components","geometry","icon","name"],strictBounds:false,};constautocomplete=newgoogle.maps.places.Autocomplete(input,options);
उन डेटा फ़ील्ड के बारे में बताएं जिनके लिए आपको Places Data SKUs का बिल नहीं चाहिए. fields प्रॉपर्टी को उन AutocompleteOptions में शामिल करें जिन्हें विजेट कंस्ट्रक्टर को पास किया जाता है. जैसा कि पिछले उदाहरण में दिखाया गया है या किसी मौजूदा Autocomplete ऑब्जेक्ट पर setFields() को कॉल करें.
strictBounds विकल्प सेट करें, ताकि नतीजे सिर्फ़ मौजूदा सीमाओं के हिसाब से दिखें. ये सीमाएं, मैप के व्यूपोर्ट या आयताकार सीमाओं के हिसाब से तय की जाती हैं.
autocomplete.setOptions({strictBounds:true});
किसी देश के लिए सुझावों को सीमित करना
componentRestrictions विकल्प का इस्तेमाल करें या setComponentRestrictions() पर कॉल करके, अपने-आप खोज पूरी होने की सुविधा को ज़्यादा से ज़्यादा पांच देशों के लिए सीमित करें.
types विकल्प का इस्तेमाल करें या setTypes() को कॉल करके, अनुमानों को कुछ जगहों के टाइप तक सीमित करें. इस पाबंदी में, जगहों के टाइप में दिए गए टाइप या टाइप कलेक्शन के बारे में बताया जाता है. अगर कोई पाबंदी नहीं दी जाती है, तो सभी टाइप दिखाए जाते हैं.
types विकल्प की वैल्यू या setTypes() को पास की गई वैल्यू के लिए, इनमें से कोई एक वैल्यू तय की जा सकती है:
जब कोई उपयोगकर्ता, ऑटोकंप्लीट टेक्स्ट फ़ील्ड से जुड़े सुझावों में से किसी जगह को चुनता है, तो सेवा place_changed इवेंट ट्रिगर करती है. जगह की जानकारी पाने के लिए:
place_changed इवेंट के लिए एक इवेंट हैंडलर बनाएं. इसके बाद, हैंडलर जोड़ने के लिए Autocomplete ऑब्जेक्ट पर addListener() को कॉल करें.
चुनी गई जगह के बारे में ज़्यादा जानकारी पाने के लिए, Autocomplete ऑब्जेक्ट पर Autocomplete.getPlace() कॉल करें, ताकि PlaceResult ऑब्जेक्ट को वापस पाया जा सके.
डिफ़ॉल्ट रूप से, जब कोई उपयोगकर्ता किसी जगह को चुनता है, तो अपने-आप भरने की सुविधा, चुनी गई जगह के लिए उपलब्ध सभी डेटा फ़ील्ड दिखाती है. इसके लिए, आपको बिल भेजा जाएगा.
Autocomplete.setFields() का इस्तेमाल करके, यह तय करें कि जगह की जानकारी वाले किन डेटा फ़ील्ड को वापस भेजना है. PlaceResult ऑब्जेक्ट के बारे में ज़्यादा पढ़ें. इसमें जगह के डेटा फ़ील्ड की सूची भी शामिल है, जिनके लिए अनुरोध किया जा सकता है. जिस डेटा की आपको ज़रूरत नहीं है उसके लिए शुल्क चुकाने से बचने के लिए, Autocomplete.setFields() का इस्तेमाल करके सिर्फ़ उस जगह का डेटा चुनें जिसका आपको इस्तेमाल करना है.
name प्रॉपर्टी में, Places Autocomplete से मिले सुझावों का description होता है. description के बारे में ज़्यादा जानने के लिए, Places Autocomplete के दस्तावेज़ पढ़ें.
पते वाले फ़ॉर्म के लिए, स्ट्रक्चर्ड फ़ॉर्मैट में पता पाना फ़ायदेमंद होता है. चुनी गई जगह का पूरा पता पाने के लिए, Autocomplete.setFields() को कॉल करें और address_components फ़ील्ड के बारे में बताएं.
इस उदाहरण में, पते वाले फ़ॉर्म में फ़ील्ड भरने के लिए, अपने-आप पूरा होने की सुविधा का इस्तेमाल किया गया है.
TypeScript
functionfillInAddress(){// Get the place details from the autocomplete object.constplace=autocomplete.getPlace();letaddress1="";letpostcode="";// Get each component of the address from the place details,// and then fill-in the corresponding field on the form.// place.address_components are google.maps.GeocoderAddressComponent objects// which are documented at http://goo.gle/3l5i5Mrfor(constcomponentofplace.address_componentsasgoogle.maps.GeocoderAddressComponent[]){// @ts-ignore remove once typings fixedconstcomponentType=component.types[0];switch(componentType){case"street_number":{address1=`${component.long_name}${address1}`;break;}case"route":{address1+=component.short_name;break;}case"postal_code":{postcode=`${component.long_name}${postcode}`;break;}case"postal_code_suffix":{postcode=`${postcode}-${component.long_name}`;break;}case"locality":(document.querySelector("#locality")asHTMLInputElement).value=component.long_name;break;case"administrative_area_level_1":{(document.querySelector("#state")asHTMLInputElement).value=component.short_name;break;}case"country":(document.querySelector("#country")asHTMLInputElement).value=component.long_name;break;}}address1Field.value=address1;postalField.value=postcode;// After filling the form with address components from the Autocomplete// prediction, set cursor focus on the second address line to encourage// entry of subpremise information such as apartment, unit, or floor number.address2Field.focus();}
functionfillInAddress(){// Get the place details from the autocomplete object.constplace=autocomplete.getPlace();letaddress1="";letpostcode="";// Get each component of the address from the place details,// and then fill-in the corresponding field on the form.// place.address_components are google.maps.GeocoderAddressComponent objects// which are documented at http://goo.gle/3l5i5Mrfor(constcomponentofplace.address_components){// @ts-ignore remove once typings fixedconstcomponentType=component.types[0];switch(componentType){case"street_number":{address1=`${component.long_name}${address1}`;break;}case"route":{address1+=component.short_name;break;}case"postal_code":{postcode=`${component.long_name}${postcode}`;break;}case"postal_code_suffix":{postcode=`${postcode}-${component.long_name}`;break;}case"locality":document.querySelector("#locality").value=component.long_name;break;case"administrative_area_level_1":{document.querySelector("#state").value=component.short_name;break;}case"country":document.querySelector("#country").value=component.long_name;break;}}address1Field.value=address1;postalField.value=postcode;// After filling the form with address components from the Autocomplete// prediction, set cursor focus on the second address line to encourage// entry of subpremise information such as apartment, unit, or floor number.address2Field.focus();}window.initAutocomplete=initAutocomplete;
ऑटोकंप्लीट सेवा से बनाए गए टेक्स्ट फ़ील्ड में, डिफ़ॉल्ट रूप से स्टैंडर्ड प्लेसहोल्डर टेक्स्ट होता है. टेक्स्ट में बदलाव करने के लिए, input एलिमेंट पर placeholder एट्रिब्यूट सेट करें:
<input id="searchTextField" type="text" size="50" placeholder="Anything you want!">
ध्यान दें: डिफ़ॉल्ट प्लेसहोल्डर टेक्स्ट, अपने-आप स्थानीय भाषा में बदल जाता है. अगर आपने खुद की प्लेसहोल्डर वैल्यू तय की है, तो आपको अपने ऐप्लिकेशन में उस वैल्यू के स्थानीयकरण को मैनेज करना होगा. Google Maps JavaScript API, भाषा चुनने के लिए किस तरीके का इस्तेमाल करता है, इस बारे में जानने के लिए
स्थानीय भाषा में उपलब्ध कराने से जुड़ा दस्तावेज़ पढ़ें.
SearchBox की मदद से, लोग टेक्स्ट के आधार पर भौगोलिक
खोज कर सकते हैं. जैसे, 'न्यूयॉर्क में पिज़्ज़ा' या 'रॉब्सन स्ट्रीट के आस-पास जूते की दुकानें'.
SearchBox को टेक्स्ट फ़ील्ड में अटैच किया जा सकता है. इसके बाद, जैसे ही टेक्स्ट डाला जाता है, सेवा ड्रॉप-डाउन पिक लिस्ट के तौर पर अनुमानित नतीजे दिखाएगी.
SearchBox से, अनुमानों की एक लंबी सूची मिलती है. इसमें Places API के हिसाब से तय की गई जगहों के साथ-साथ, खोज के लिए सुझाए गए शब्द भी शामिल हो सकते हैं. उदाहरण के लिए, अगर उपयोगकर्ता 'new में पिज़्ज़ा' डालता है, तो पिक लिस्ट में 'न्यूयॉर्क, न्यूयॉर्क में पिज़्ज़ा' वाक्यांश के साथ-साथ, पिज़्ज़ा आउटलेट के नाम भी शामिल हो सकते हैं. जब कोई उपयोगकर्ता सूची से किसी जगह को चुनता है, तो उस जगह की जानकारी SearchBox ऑब्जेक्ट को वापस भेज दी जाती है. इसे आपका ऐप्लिकेशन वापस पा सकता है.
SearchBox कंस्ट्रक्टर दो आर्ग्युमेंट लेता है:
text टाइप का एचटीएमएल input एलिमेंट. यह वह इनपुट फ़ील्ड है जिसकी निगरानी SearchBox सेवा करेगी और इसके नतीजे अटैच करेगी.
options आर्ग्युमेंट, जिसमें bounds प्रॉपर्टी शामिल हो सकती है:
bounds एक google.maps.LatLngBounds ऑब्जेक्ट है. यह उस इलाके के बारे में बताता है जहां जगहों को खोजना है. नतीजे, इन सीमाओं के अंदर मौजूद जगहों के हिसाब से तय होते हैं. हालांकि, ये नतीजे सिर्फ़ इन जगहों तक सीमित नहीं होते.
नीचे दिए गए कोड में, नतीजों को किसी खास भौगोलिक इलाके में मौजूद जगहों के हिसाब से दिखाने के लिए, bounds पैरामीटर का इस्तेमाल किया गया है. इस इलाके की जानकारी, अक्षांश/देशांतर निर्देशांक का इस्तेमाल करके दी गई है.
जब उपयोगकर्ता, खोज बॉक्स से जुड़े सुझावों में से कोई आइटम चुनता है, तो सेवा places_changed इवेंट ट्रिगर करती है. SearchBox ऑब्जेक्ट पर getPlaces() को कॉल करके, कई अनुमानों वाला एक कलेक्शन वापस पाया जा सकता है. इनमें से हर अनुमान एक PlaceResult ऑब्जेक्ट होता है.
PlaceResult ऑब्जेक्ट के बारे में ज़्यादा जानने के लिए,
जगह की जानकारी वाले नतीजों के बारे में दस्तावेज़ देखें.
TypeScript
// Listen for the event fired when the user selects a prediction and retrieve// more details for that place.searchBox.addListener("places_changed",()=>{constplaces=searchBox.getPlaces();if(places.length==0){return;}// Clear out the old markers.markers.forEach((marker)=>{marker.setMap(null);});markers=[];// For each place, get the icon, name and location.constbounds=newgoogle.maps.LatLngBounds();places.forEach((place)=>{if(!place.geometry||!place.geometry.location){console.log("Returned place contains no geometry");return;}consticon={url:place.iconasstring,size:newgoogle.maps.Size(71,71),origin:newgoogle.maps.Point(0,0),anchor:newgoogle.maps.Point(17,34),scaledSize:newgoogle.maps.Size(25,25),};// Create a marker for each place.markers.push(newgoogle.maps.Marker({map,icon,title:place.name,position:place.geometry.location,}));if(place.geometry.viewport){// Only geocodes have viewport.bounds.union(place.geometry.viewport);}else{bounds.extend(place.geometry.location);}});map.fitBounds(bounds);});
// Listen for the event fired when the user selects a prediction and retrieve// more details for that place.searchBox.addListener("places_changed",()=>{constplaces=searchBox.getPlaces();if(places.length==0){return;}// Clear out the old markers.markers.forEach((marker)=>{marker.setMap(null);});markers=[];// For each place, get the icon, name and location.constbounds=newgoogle.maps.LatLngBounds();places.forEach((place)=>{if(!place.geometry||!place.geometry.location){console.log("Returned place contains no geometry");return;}consticon={url:place.icon,size:newgoogle.maps.Size(71,71),origin:newgoogle.maps.Point(0,0),anchor:newgoogle.maps.Point(17,34),scaledSize:newgoogle.maps.Size(25,25),};// Create a marker for each place.markers.push(newgoogle.maps.Marker({map,icon,title:place.name,position:place.geometry.location,}),);if(place.geometry.viewport){// Only geocodes have viewport.bounds.union(place.geometry.viewport);}else{bounds.extend(place.geometry.location);}});map.fitBounds(bounds);});
प्रोग्राम के हिसाब से, Place Autocomplete Service की मदद से मिलने वाले सुझावों को वापस पाना
प्रोग्राम के हिसाब से अनुमानों को वापस पाने के लिए, AutocompleteService क्लास का इस्तेमाल करें. AutocompleteService
कोई यूज़र इंटरफ़ेस (यूआई) कंट्रोल नहीं जोड़ता है. इसके बजाय, यह अनुमानित ऑब्जेक्ट का एक कलेक्शन दिखाता है. इसमें हर ऑब्जेक्ट में अनुमानित टेक्स्ट, रेफ़रंस की जानकारी, और यह जानकारी होती है कि नतीजा, उपयोगकर्ता के इनपुट से कैसे मेल खाता है.
यह तब काम आता है, जब आपको ऊपर बताए गए Autocomplete और SearchBox के मुकाबले, यूज़र इंटरफ़ेस पर ज़्यादा कंट्रोल चाहिए.
AutocompleteService इन तरीकों को दिखाता है:
getPlacePredictions() जगह के बारे में अनुमानित जानकारी दिखाता है.
ध्यान दें: Places API के मुताबिक, 'जगह' कोई प्रतिष्ठान, भौगोलिक जगह या लोकप्रिय जगह हो सकती है.
getQueryPredictions() से, अनुमानों की लंबी सूची मिलती है. इसमें जगहों के नाम (Places API के हिसाब से) और खोज के लिए सुझाए गए शब्द शामिल हो सकते हैं. उदाहरण के लिए, अगर उपयोगकर्ता 'new में पिज़्ज़ा' डालता है, तो पिक लिस्ट में 'न्यूयॉर्क, न्यूयॉर्क में पिज़्ज़ा' वाक्यांश के साथ-साथ, पिज़्ज़ा आउटलेट के नाम भी शामिल हो सकते हैं.
ऊपर दिए गए दोनों तरीके, इस तरह के prediction
objects का कलेक्शन दिखाते हैं:
description, मैच किया गया अनुमान है.
distance_meters, बताई गई AutocompletionRequest.origin से जगह की दूरी को मीटर में दिखाता है.
matched_substrings में जानकारी के तौर पर सबस्ट्रिंग का एक सेट होता है. यह सेट, उपयोगकर्ता के इनपुट में मौजूद एलिमेंट से मेल खाता है. यह आपके ऐप्लिकेशन में उन सबस्ट्रिंग को हाइलाइट करने के लिए काम आता है. कई मामलों में, क्वेरी, जानकारी वाले फ़ील्ड की सबस्ट्रिंग के तौर पर दिखेगी.
length सबस्ट्रिंग की लंबाई है.
offset वर्ण का ऑफ़सेट है. इसे जानकारी वाली स्ट्रिंग की शुरुआत से मापा जाता है. यह वह जगह होती है जहां मेल खाने वाली सबस्ट्रिंग दिखती है.
terms एक ऐसा कलेक्शन है जिसमें क्वेरी के एलिमेंट शामिल होते हैं. किसी जगह के लिए, हर एलिमेंट आम तौर पर पते का एक हिस्सा होता है.
offset वर्ण का ऑफ़सेट है. इसे जानकारी वाली स्ट्रिंग की शुरुआत से मापा जाता है. यह वह जगह होती है जहां मेल खाने वाली सबस्ट्रिंग दिखती है.
value, मैच करने वाला शब्द है.
यहां दिए गए उदाहरण में, 'मेरे आस-पास पिज़्ज़ा' वाक्यांश के लिए क्वेरी का अनुमान लगाने का अनुरोध किया गया है. साथ ही, नतीजे को सूची में दिखाया गया है.
TypeScript
// This example retrieves autocomplete predictions programmatically from the// autocomplete service, and displays them as an HTML list.// This example requires the Places library. Include the libraries=places// parameter when you first load the API. For example:// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">functioninitService():void{constdisplaySuggestions=function(predictions:google.maps.places.QueryAutocompletePrediction[]|null,status:google.maps.places.PlacesServiceStatus){if(status!=google.maps.places.PlacesServiceStatus.OK||!predictions){alert(status);return;}predictions.forEach((prediction)=>{constli=document.createElement("li");li.appendChild(document.createTextNode(prediction.description));(document.getElementById("results")asHTMLUListElement).appendChild(li);});};constservice=newgoogle.maps.places.AutocompleteService();service.getQueryPredictions({input:"pizza near Syd"},displaySuggestions);}declareglobal{interfaceWindow{initService:()=>void;}}window.initService=initService;
// This example retrieves autocomplete predictions programmatically from the// autocomplete service, and displays them as an HTML list.// This example requires the Places library. Include the libraries=places// parameter when you first load the API. For example:// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">functioninitService(){constdisplaySuggestions=function(predictions,status){if(status!=google.maps.places.PlacesServiceStatus.OK||!predictions){alert(status);return;}predictions.forEach((prediction)=>{constli=document.createElement("li");li.appendChild(document.createTextNode(prediction.description));document.getElementById("results").appendChild(li);});};constservice=newgoogle.maps.places.AutocompleteService();service.getQueryPredictions({input:"pizza near Syd"},displaySuggestions);}window.initService=initService;
<html>
<head>
<title>Retrieving Autocomplete Predictions</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
</head>
<body>
<p>Query suggestions for 'pizza near Syd':</p>
<ul id="results"></ul>
<!-- Replace Powered By Google image src with self hosted image. https://developers.google.com/maps/documentation/places/web-service/policies#other_attribution_requirements -->
<img
class="powered-by-google"
src="https://storage.googleapis.com/geo-devrel-public-buckets/powered_by_google_on_white.png"
alt="Powered by Google"
/>
<!--
The `defer` attribute causes the script to execute after the full HTML
document has been parsed. For non-blocking uses, avoiding race conditions,
and consistent behavior across browsers, consider loading using Promises. See
https://developers.google.com/maps/documentation/javascript/load-maps-js-api
for more information.
-->
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initService&libraries=places&v=weekly"
defer
></script>
</body>
</html>
AutocompleteService.getPlacePredictions(), बिलिंग के मकसद से अपने-आप पूरा होने वाले अनुरोधों को एक साथ ग्रुप करने के लिए, सेशन टोकन (अगर लागू किया गया है) का इस्तेमाल कर सकता है. सेशन टोकन, उपयोगकर्ता की अपने-आप पूरी होने वाली खोज की क्वेरी और चुनने के चरणों को बिलिंग के मकसद से अलग सेशन में ग्रुप करते हैं. सेशन तब शुरू होता है, जब उपयोगकर्ता कोई क्वेरी टाइप करना शुरू करता है. यह तब खत्म होता है, जब वह कोई जगह चुन लेता है. हर सेशन में कई क्वेरी हो सकती हैं. इसके बाद, एक जगह चुनी जाती है.
सेशन खत्म होने के बाद, टोकन मान्य नहीं रहता. आपके ऐप्लिकेशन को हर सेशन के लिए, नया टोकन जनरेट करना होगा. हमारा सुझाव है कि सभी ऑटोमैटिक भरने वाले सेशन के लिए, सेशन टोकन का इस्तेमाल करें. अगर sessionToken पैरामीटर को शामिल नहीं किया जाता है या सेशन टोकन का दोबारा इस्तेमाल किया जाता है, तो सेशन के लिए उसी तरह शुल्क लिया जाता है जैसे सेशन टोकन नहीं दिया गया हो. इसका मतलब है कि हर अनुरोध के लिए अलग से बिल भेजा जाता है.
AutocompleteService.getPlacePredictions() को कॉल करने पर मिले नतीजे में मौजूद जगह के लिए, एक जगह की जानकारी पाने का अनुरोध करने के लिए, एक ही सेशन टोकन का इस्तेमाल किया जा सकता है.
इस मामले में, अपने-आप पूरा होने वाले अनुरोध को जगह के बारे में ज़्यादा जानकारी वाले अनुरोध के साथ जोड़ दिया जाता है. साथ ही, कॉल के लिए जगह के बारे में ज़्यादा जानकारी वाले सामान्य अनुरोध के तौर पर शुल्क लिया जाता है. ऑटोकंप्लीट के अनुरोध के लिए कोई शुल्क नहीं लिया जाता.
हर नए सेशन के लिए, एक यूनीक सेशन टोकन पास करना न भूलें. एक से ज़्यादा ऑटोकंप्लीट सेशन के लिए एक ही टोकन का इस्तेमाल करने से, वे ऑटोकंप्लीट सेशन अमान्य हो जाएंगे. साथ ही, अमान्य सेशन में किए गए सभी ऑटोकंप्लीट अनुरोधों के लिए, हर अनुरोध के हिसाब से ऑटोकंप्लीट एसकेयू का इस्तेमाल करके अलग-अलग शुल्क लिया जाएगा. सेशन टोकन के बारे में ज़्यादा जानें.
यहां दिए गए उदाहरण में, सेशन टोकन बनाने और फिर उसे AutocompleteService में पास करने का तरीका दिखाया गया है. AutocompleteService फ़ंक्शन को छोटा रखने के लिए, इसे शामिल नहीं किया गया है:displaySuggestions()
// Create a new session token.varsessionToken=newgoogle.maps.places.AutocompleteSessionToken();// Pass the token to the autocomplete service.varautocompleteService=newgoogle.maps.places.AutocompleteService();autocompleteService.getPlacePredictions({input:'pizza near Syd',sessionToken:sessionToken},displaySuggestions);
हर नए सेशन के लिए, यूनीक सेशन टोकन पास करना न भूलें. एक से ज़्यादा सेशन के लिए एक ही टोकन का इस्तेमाल करने पर, हर अनुरोध के लिए अलग-अलग बिल भेजा जाएगा.
डिफ़ॉल्ट रूप से, Autocomplete और SearchBox से मिले यूज़र इंटरफ़ेस (यूआई) एलिमेंट को Google मैप में शामिल करने के लिए स्टाइल किया जाता है. आपको अपनी साइट के हिसाब से स्टाइल में बदलाव करना पड़ सकता है. ये सीएसएस क्लास उपलब्ध हैं. नीचे दी गई सभी क्लास, Autocomplete और SearchBox, दोनों विजेट पर लागू होती हैं.
Autocomplete और SearchBox विजेट के लिए सीएसएस क्लास
सीएसएस क्लास
ब्यौरा
pac-container
यह विज़ुअल एलिमेंट है. इसमें, Place Autocomplete सेवा से मिले अनुमानों की सूची होती है. यह सूची, Autocomplete या SearchBox विजेट के नीचे ड्रॉप-डाउन सूची के तौर पर दिखती है.
pac-icon
अनुमानों की सूची में मौजूद हर आइटम की बाईं ओर दिखने वाला आइकॉन.
pac-item
Autocomplete या SearchBox विजेट से मिली, अनुमानों की सूची में मौजूद कोई आइटम.
pac-item:hover
जब उपयोगकर्ता अपने माउस पॉइंटर को किसी आइटम पर घुमाता है, तब वह आइटम दिखता है.
pac-item-selected
जब उपयोगकर्ता कीबोर्ड का इस्तेमाल करके किसी आइटम को चुनता है. ध्यान दें: चुने गए आइटम, इस क्लास और pac-item क्लास के सदस्य होंगे.
pac-item-query
pac-item के अंदर मौजूद स्पैन, अनुमान का मुख्य हिस्सा होता है. भौगोलिक जगहों के लिए, इसमें किसी जगह का नाम होता है. जैसे, 'सिडनी' या सड़क का नाम और नंबर, जैसे कि '10 किंग स्ट्रीट'. 'न्यूयॉर्क में पिज़्ज़ा' जैसी टेक्स्ट पर आधारित खोजों के लिए, इसमें क्वेरी का पूरा टेक्स्ट होता है. डिफ़ॉल्ट रूप से, pac-item-query का रंग काला होता है. अगर pac-item में कोई अतिरिक्त टेक्स्ट है, तो वह pac-item-query के बाहर होता है और pac-item से स्टाइलिंग इनहेरिट करता है. डिफ़ॉल्ट रूप से, इसका रंग ग्रे होता है. अतिरिक्त टेक्स्ट आम तौर पर कोई पता होता है.
pac-matched
जवाब में मिली भविष्यवाणी का वह हिस्सा जो उपयोगकर्ता के इनपुट से मेल खाता है. डिफ़ॉल्ट रूप से, मेल खाने वाले इस टेक्स्ट को टेक्स्ट को बोल्ड करने की सुविधा से हाइलाइट किया जाता है. ध्यान दें कि मेल खाने वाला टेक्स्ट, pac-item में कहीं भी हो सकता है. यह ज़रूरी नहीं है कि यह pac-item-query का हिस्सा हो. यह pac-item-query में कुछ हद तक और pac-item में मौजूद बाकी टेक्स्ट में कुछ हद तक भी हो सकता है.
किसी जगह के शुरुआती अक्षर लिखने पर पूरा नाम सुझाने की सुविधा (लेगसी) को ऑप्टिमाइज़ करना
इस सेक्शन में, Place Autocomplete (लेगसी) सेवा का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, सबसे सही तरीकों के बारे में बताया गया है.
शुरू से ही, Place Autocomplete (लेगसी) के ज़रूरी डेटा फ़ील्ड के बारे में जानें.
जगह के हिसाब से खोज के नतीजों को बेहतर बनाने और जगह के हिसाब से पाबंदी लगाने वाले फ़ील्ड का इस्तेमाल करना ज़रूरी नहीं है. हालांकि, इससे अपने-आप भरने की सुविधा की परफ़ॉर्मेंस पर काफ़ी असर पड़ सकता है.
गड़बड़ी को मैनेज करने की सुविधा का इस्तेमाल करें, ताकि अगर एपीआई से कोई गड़बड़ी होती है, तो आपका ऐप्लिकेशन ठीक से काम करे.
पक्का करें कि जब कोई विकल्प न चुना गया हो, तब आपका ऐप्लिकेशन काम करे. साथ ही, उपयोगकर्ताओं को आगे बढ़ने का विकल्प दे.
लागत ऑप्टिमाइज़ करने के सबसे सही तरीके
लागत ऑप्टिमाइज़ेशन की बुनियादी सेटिंग
Place Autocomplete (लेगसी) सेवा का इस्तेमाल करने की लागत को ऑप्टिमाइज़ करने के लिए, Place Details (लेगसी) और Place Autocomplete (लेगसी) विजेट में फ़ील्ड मास्क का इस्तेमाल करें. इससे आपको सिर्फ़ वे Place Autocomplete (लेगसी) डेटा फ़ील्ड मिलेंगे जिनकी आपको ज़रूरत है.
लागत ऑप्टिमाइज़ेशन की बेहतर सेटिंग
किसी जगह के शुरुआती अक्षर लिखने पर पूरा नाम सुझाने की सुविधा (लेगसी) को प्रोग्राम के हिसाब से लागू करें, ताकि
एसकेयू: ऑटोकंप्लीट - हर अनुरोध के हिसाब से कीमत
को ऐक्सेस किया जा सके. साथ ही, किसी जगह के बारे में ज़्यादा जानकारी (लेगसी) के बजाय, चुनी गई जगह के बारे में Geocoding API के नतीजे का अनुरोध किया जा सके. अगर ये दोनों शर्तें पूरी होती हैं, तो हर अनुरोध के हिसाब से कीमत और Geocoding API का इस्तेमाल करना, हर सेशन (सेशन पर आधारित) के हिसाब से कीमत तय करने की तुलना में ज़्यादा किफ़ायती होता है:
अगर आपको सिर्फ़ उपयोगकर्ता की चुनी गई जगह का अक्षांश/देशांतर या पता चाहिए, तो Geocoding API, जगह के बारे में ज़्यादा जानकारी (लेगसी) एपीआई के कॉल की तुलना में कम समय में यह जानकारी उपलब्ध कराता है.
अगर उपयोगकर्ता, जगह के नाम अपने-आप पूरे होने की सुविधा (लेगसी) के लिए किए गए चार या इससे कम अनुरोधों में से किसी एक अनुरोध के लिए, ऑटोकंप्लीट का सुझाव चुनते हैं, तो अनुरोध के हिसाब से तय की गई कीमत, सेशन के हिसाब से तय की गई कीमत की तुलना में ज़्यादा किफ़ायती हो सकती है.
अपनी ज़रूरतों के हिसाब से, जगह की जानकारी अपने-आप भरने की सुविधा (लेगसी) लागू करने का तरीका चुनने के लिए, उस टैब को चुनें जो इस सवाल के आपके जवाब से मेल खाता हो.
क्या आपके ऐप्लिकेशन को चुनी गई जगह के पते और अक्षांश/देशांतर के अलावा किसी अन्य जानकारी की ज़रूरत है?
यहां दिए गए दिशा-निर्देशों में, जगह के नाम अपने-आप भरने की सुविधा (लेगसी) की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के तरीके बताए गए हैं:
जगह के नाम अपने-आप भरने की सुविधा (लेगसी) को लागू करते समय, इन सेटिंग को कॉन्फ़िगर करें: देश से जुड़ी पाबंदियां, जगह के हिसाब से नतीजे दिखाने की सुविधा, और (प्रोग्राम के हिसाब से लागू करने के लिए) भाषा से जुड़ी प्राथमिकता. विजेट के लिए भाषा से जुड़ी प्राथमिकता सेट करने की ज़रूरत नहीं होती, क्योंकि वे उपयोगकर्ता के ब्राउज़र या मोबाइल डिवाइस से भाषा से जुड़ी प्राथमिकताएं चुनते हैं.
अगर Place Autocomplete (लेगसी) के साथ मैप मौजूद है, तो मैप व्यूपोर्ट के हिसाब से जगह की जानकारी को प्राथमिकता दी जा सकती है.
जब कोई उपयोगकर्ता, किसी जगह के शुरुआती अक्षर लिखने पर पूरा नाम सुझाने की सुविधा (लेगसी) के सुझावों में से किसी एक को नहीं चुनता है, तो आम तौर पर ऐसा इसलिए होता है, क्योंकि इनमें से कोई भी सुझाव, खोजे गए पते से मेल नहीं खाता. ऐसे में, ज़्यादा काम के नतीजे पाने के लिए, उपयोगकर्ता के इनपुट का फिर से इस्तेमाल किया जा सकता है:
अगर आपको लगता है कि उपयोगकर्ता सिर्फ़ पते की जानकारी डालेगा, तो Geocoding API को कॉल करने के लिए, उपयोगकर्ता के इनपुट का फिर से इस्तेमाल करें.
अगर आपको लगता है कि उपयोगकर्ता किसी जगह का नाम या पता डालकर क्वेरी करेगा, तो जगह के बारे में ज़्यादा जानकारी (लेगसी) का अनुरोध करें. अगर आपको नतीजे सिर्फ़ किसी खास इलाके में चाहिए, तो जगह के हिसाब से नतीजों को प्राथमिकता देने की सुविधा का इस्तेमाल करें.
Geocoding API का इस्तेमाल करने के लिए, यहां कुछ और उदाहरण दिए गए हैं:
ऐसे उपयोगकर्ता जो सबप्रीमाइज़ के पते डालते हैं. जैसे, किसी बिल्डिंग में मौजूद खास यूनिट या अपार्टमेंट के पते. उदाहरण के लिए, चेक भाषा में दिए गए पते "Stroupežnického 3191/17, Praha" के लिए, Place Autocomplete (लेगसी) में आंशिक सुझाव मिलता है.
ऐसे उपयोगकर्ता जो न्यूयॉर्क शहर में "23-30 29th St, Queens" या हवाई के काउआई द्वीप पर "47-380 Kamehameha Hwy, Kaneohe" जैसे सड़क-सेगमेंट के प्रीफ़िक्स वाले पते डालते हैं.
जगह की जानकारी के हिसाब से नतीजे दिखाना
location पैरामीटर और radius पैरामीटर पास करके, नतीजों को किसी खास इलाके के हिसाब से दिखाएं. इससे Place Autocomplete (लेगसी) को यह निर्देश मिलता है कि वह तय की गई जगह के हिसाब से नतीजे दिखाने को प्राथमिकता दे. हालांकि, तय की गई जगह से बाहर के नतीजे भी दिख सकते हैं. includedRegionCodes पैरामीटर का इस्तेमाल करके, नतीजों को फ़िल्टर किया जा सकता है. इससे सिर्फ़ किसी देश में मौजूद जगहों के नतीजे दिखते हैं.
जगह की जानकारी को सीमित करना
locationRestriction पैरामीटर पास करके, नतीजों को किसी तय इलाके तक सीमित करें.
location और radius पैरामीटर से तय की गई जगह के हिसाब से भी नतीजे दिखाए जा सकते हैं. इसके लिए, strictbounds
पैरामीटर जोड़ें. इससे Place Autocomplete (लेगसी) को उस जगह के सिर्फ़ नतीजे दिखाने का निर्देश मिलता है.
[[["समझने में आसान है","easyToUnderstand","thumb-up"],["मेरी समस्या हल हो गई","solvedMyProblem","thumb-up"],["अन्य","otherUp","thumb-up"]],[["वह जानकारी मौजूद नहीं है जो मुझे चाहिए","missingTheInformationINeed","thumb-down"],["बहुत मुश्किल है / बहुत सारे चरण हैं","tooComplicatedTooManySteps","thumb-down"],["पुराना","outOfDate","thumb-down"],["अनुवाद से जुड़ी समस्या","translationIssue","thumb-down"],["सैंपल / कोड से जुड़ी समस्या","samplesCodeIssue","thumb-down"],["अन्य","otherDown","thumb-down"]],["आखिरी बार 2026-06-15 (UTC) को अपडेट किया गया."],[],[]]