Android के लिए Places SDK टूल में मौजूद ऑटोकंप्लीट सेवा की मदद से दिखाया गया उपयोगकर्ता की खोज क्वेरी के जवाब में दिए जाने वाले सुझाव. जैसे-जैसे उपयोगकर्ता टाइप करता है, अपने-आप पूरा होने वाली सेवा, कारोबार, जैसे कि कारोबार, पते, प्लस कोड, और लोकप्रिय जगहें.
अपने ऐप्लिकेशन में ऑटोमैटिक भरने की सुविधा को इन तरीकों से जोड़ा जा सकता है:
- ऑटोकंप्लीट विजेट जोड़ें, ताकि डेवलपमेंट में लगने वाला समय कम हो और उपयोगकर्ताओं को एक जैसा अनुभव मिल सके.
- उपयोगकर्ताओं को पसंद के मुताबिक अनुभव देने के लिए, जगह के सुझाव प्रोग्राम के हिसाब से पाएं.
ऑटोकंप्लीट विजेट जोड़ना
ऑटोकंप्लीट विजेट, एक खोज डायलॉग बॉक्स है. इसमें ऑटोकंप्लीट की सुविधा पहले से मौजूद होती है. जैसे ही कोई उपयोगकर्ता खोज शब्द दर्ज करता है, विजेट
में से अपनी पसंद की जगहें चुनने की सुविधा मिलती है. जब उपयोगकर्ता कोई विकल्प चुनता है, तो
Place
इंस्टेंस दिखाया जाता है, जिसका इस्तेमाल करके आपका ऐप्लिकेशन
चयनित स्थान.
अपने ऐप्लिकेशन में अपने-आप पूरा होने वाला टेक्स्ट वाला विजेट जोड़ने के दो विकल्प हैं:
- पहला विकल्प:
AutocompleteSupportFragment
को एम्बेड करना. - दूसरा विकल्प: ऑटोकंप्लीट की गतिविधि को लॉन्च करने के लिए, किसी इंटेंट का इस्तेमाल करें.
पहला विकल्प: AutocompleteSupportFragment को एम्बेड करना
अपने ऐप्लिकेशन में AutocompleteSupportFragment
जोड़ने के लिए, यह तरीका अपनाएं:
- अपनी ऐक्टिविटी के एक्सएमएल लेआउट में कोई फ़्रैगमेंट जोड़ें.
- अपनी गतिविधि या फ़्रैगमेंट में लिसनर जोड़ें.
किसी गतिविधि में AutocompleteSupportFragment जोड़ना
किसी गतिविधि में AutocompleteSupportFragment
जोड़ने के लिए, किसी गतिविधि में एक नया फ़्रैगमेंट जोड़ें
एक्सएमएल लेआउट. उदाहरण के लिए:
<fragment android:id="@+id/autocomplete_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment"
/>
- डिफ़ॉल्ट रूप से, फ़्रैगमेंट में कोई बॉर्डर या बैकग्राउंड नहीं होता. एक जैसा विज़ुअल दिखाने के लिए, फ़्रैगमेंट को किसी दूसरे लेआउट एलिमेंट में नेस्ट करें. जैसे, CardView.
- अगर ऑटोकंप्लीट फ़्रैगमेंट का इस्तेमाल किया जा रहा है और आपको
onActivityResult
को बदलना है, तो आपकोsuper.onActivityResult
को कॉल करना होगा. ऐसा न करने पर, फ़्रैगमेंट ठीक से काम नहीं करेगा.
किसी गतिविधि में PlaceSelectionListener जोड़ना
PlaceSelectionListener
, उपयोगकर्ता की चुनी गई जगह को दिखाने की सुविधा को मैनेज करता है. नीचे दिया गया कोड, फ़्रैगमेंट का रेफ़रंस बनाने और अपने AutocompleteSupportFragment
में एक लिसनर जोड़ने का तरीका दिखाता है:
Kotlin
// Initialize the AutocompleteSupportFragment. val autocompleteFragment = supportFragmentManager.findFragmentById(R.id.autocomplete_fragment) as AutocompleteSupportFragment // Specify the types of place data to return. autocompleteFragment.setPlaceFields(listOf(Place.Field.ID, Place.Field.NAME)) // Set up a PlaceSelectionListener to handle the response. autocompleteFragment.setOnPlaceSelectedListener(object : PlaceSelectionListener { override fun onPlaceSelected(place: Place) { // TODO: Get info about the selected place. Log.i(TAG, "Place: ${place.name}, ${place.id}") } override fun onError(status: Status) { // TODO: Handle the error. Log.i(TAG, "An error occurred: $status") } })
Java
// Initialize the AutocompleteSupportFragment. AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment) getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment); // Specify the types of place data to return. autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME)); // Set up a PlaceSelectionListener to handle the response. autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { @Override public void onPlaceSelected(@NonNull Place place) { // TODO: Get info about the selected place. Log.i(TAG, "Place: " + place.getName() + ", " + place.getId()); } @Override public void onError(@NonNull Status status) { // TODO: Handle the error. Log.i(TAG, "An error occurred: " + status); } });
दूसरा विकल्प: अपने-आप पूरा होने वाली गतिविधि को लॉन्च करने के लिए, इंटेंट का इस्तेमाल करना
अगर आपको अपने ऐप्लिकेशन में किसी दूसरे नेविगेशनल फ़्लो का इस्तेमाल करना है, जैसे कि अपने-आप पूरा होने वाले अनुभव को खोज फ़ील्ड के बजाय किसी आइकॉन से ट्रिगर करें), किसी इंटेंट का इस्तेमाल करके, अपने ऐप्लिकेशन को ऑटोकंप्लीट करने की सुविधा लॉन्च की जा सकती है.
इंटेंट का इस्तेमाल करके, अपने-आप पूरा होने वाला टेक्स्ट वाला विजेट लॉन्च करने के लिए, यह तरीका अपनाएं:
- अपनी पसंद का
Autocomplete
मोड डालकर, इंटेंट बनाने के लिएAutocomplete.IntentBuilder
का इस्तेमाल करें. - गतिविधि के नतीजे दिखाने वाला लॉन्चर तय करें
registerForActivityResult
जिसका इस्तेमाल इंटेंट लॉन्च करने और उपयोगकर्ता की चुनी गई जगह को हैंडल करने के लिए किया जा सके इस्तेमाल करते हैं.
अपने-आप पूरा होने वाला इंटेंट बनाएं
नीचे दिए गए उदाहरण में,
Autocomplete.IntentBuilder
इंटेंट के तौर पर ऑटोकंप्लीट विजेट को लॉन्च करने का इंटेंट बनाने के लिए:
Kotlin
// Set the fields to specify which types of place data to // return after the user has made a selection. val fields = listOf(Place.Field.ID, Place.Field.NAME) // Start the autocomplete intent. val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .build(this) startAutocomplete.launch(intent)
Java
// Set the fields to specify which types of place data to // return after the user has made a selection. List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Start the autocomplete intent. Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .build(this); startAutocomplete.launch(intent);
ऑटोकंप्लीट विजेट को लॉन्च करने के लिए, किसी इंटेंट का इस्तेमाल करते समय ओवरले या फ़ुल-स्क्रीन डिसप्ले मोड का इस्तेमाल किया जा सकता है. इन स्क्रीनशॉट में, डिसप्ले मोड की जानकारी भी दी गई है:
इंटेंट के नतीजे के लिए कॉलबैक रजिस्टर करें
जब उपयोगकर्ता कोई जगह चुनता है, तब सूचना पाने के लिए, registerForActivityResult()
लॉन्चर तय करें. यह लॉन्चर, ऐक्टिविटी को लॉन्च करता है और नतीजे को मैनेज भी करता है. इसकी जानकारी, नीचे दिए गए उदाहरण में दी गई है. अगर उपयोगकर्ता ने किसी सुझाव को चुना है, तो
नतीजे ऑब्जेक्ट में मौजूद इंटेंट में डिलीवर किया जाएगा. इंटेंट को Autocomplete.IntentBuilder
ने बनाया है, इसलिए Autocomplete.getPlaceFromIntent()
वाला तरीका उससे जगह की जानकारी वाला ऑब्जेक्ट निकाल सकता है.
Kotlin
private val startAutocomplete = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> if (result.resultCode == Activity.RESULT_OK) { val intent = result.data if (intent != null) { val place = Autocomplete.getPlaceFromIntent(intent) Log.i( TAG, "Place: ${place.name}, ${place.id}" ) } } else if (result.resultCode == Activity.RESULT_CANCELED) { // The user canceled the operation. Log.i(TAG, "User canceled autocomplete") } }
Java
private final ActivityResultLauncher<Intent> startAutocomplete = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == Activity.RESULT_OK) { Intent intent = result.getData(); if (intent != null) { Place place = Autocomplete.getPlaceFromIntent(intent); Log.i(TAG, "Place: ${place.getName()}, ${place.getId()}"); } } else if (result.getResultCode() == Activity.RESULT_CANCELED) { // The user canceled the operation. Log.i(TAG, "User canceled autocomplete"); } });
प्रोग्राम के हिसाब से, जगह के अनुमान पाना
आप चाहें, तो पसंद के मुताबिक खोज वाला यूज़र इंटरफ़ेस (यूआई) बनाएं. इसे
ऑटोकंप्लीट विजेट. ऐसा करने के लिए, आपके ऐप्लिकेशन को जगह की जानकारी का अनुमान लगाना होगा
प्रोग्रामेटिक रूप से. आपके ऐप्लिकेशन को जगहों के अनुमानित नामों की सूची मिल सकती है और/या
कॉल करके ऑटोकंप्लीट एपीआई से ईमेल पते खोजें
PlacesClient.findAutocompletePredictions()
,
पास
FindAutocompletePredictionsRequest
ऑब्जेक्ट:
- ज़रूरी है:
query
स्ट्रिंग, जिसमें उपयोगकर्ता ने जो टेक्स्ट टाइप किया है वह शामिल हो. - सुझाया गया:
AutocompleteSessionToken
, जो बिलिंग के मकसद से, उपयोगकर्ता की खोज के क्वेरी और चुनने के चरणों को अलग-अलग सेशन में ग्रुप करता है. सेशन तब शुरू होता है, जब उपयोगकर्ता कोई क्वेरी टाइप करना शुरू करता है और तब खत्म होता है, जब वह कोई जगह चुनता है. - सुझाया गया: एक
RectangularBounds
ऑब्जेक्ट, जो अक्षांश और देशांतर की सीमा तय करता है इसका नतीजा तय करें. - ज़रूरी नहीं: दो अक्षर वाले एक या एक से ज़्यादा देश कोड (ISO 3166-1 ऐल्फ़ा-2), जिनसे पता चलता है कि खोज के नतीजों को किन देशों में दिखाना है.
ज़रूरी नहीं:
TypeFilter
, इसका इस्तेमाल करके नतीजों को किसी खास जगह के टाइप तक सीमित किया जा सकता है. कॉन्टेंट बनाने निम्न स्थान प्रकार समर्थित हैं:TypeFilter.GEOCODE
– के बजाय, सिर्फ़ जियोकोडिंग नतीजे दिखाता है कारोबार. इस अनुरोध का इस्तेमाल करके उन नतीजों को अलग करें जहां बताया गया है स्थान अनिश्चित हो सकता है.TypeFilter.ADDRESS
– सिर्फ़ सटीक पते के साथ, ऑटोकंप्लीट की सुविधा से मिलने वाले नतीजे दिखाता है. जब आपको पता हो कि उपयोगकर्ता किसी पूरी तरह से तय किए गए पते को खोज रहा है, तब इस टाइप का इस्तेमाल करें.TypeFilter.ESTABLISHMENT
– सिर्फ़ वही जगहें दिखाता है जो कारोबार.TypeFilter.REGIONS
– सिर्फ़ ऐसी जगहें दिखाता है जो इनमें से किसी एक टाइप से मेल खाती हैं:LOCALITY
SUBLOCALITY
POSTAL_CODE
COUNTRY
ADMINISTRATIVE_AREA_LEVEL_1
ADMINISTRATIVE_AREA_LEVEL_2
TypeFilter.CITIES
– सिर्फ़LOCALITY
याADMINISTRATIVE_AREA_LEVEL_3
से मैच होने वाले नतीजे दिखाता है.
ज़रूरी नहीं: एक
LatLng
, जो अनुरोध के लिए मूल जगह के बारे में बताता है. आपके कॉल करने परsetOrigin()
, सेवा बताई गई से मीटर (distanceMeters
) में दूरी दिखाती है ऑरिजिन, जवाब में हर ऑटोकंप्लीट की सुविधा के लिए सुझाया गया है.
स्थान के प्रकार के बारे में जानकारी के लिए जगह के बारे में बताने वाली गाइड देखें टाइप.
नीचे दिए गए उदाहरण में बताया गया है कि
PlacesClient.findAutocompletePredictions()
.
Kotlin
// Create a new token for the autocomplete session. Pass this to FindAutocompletePredictionsRequest, // and once again when the user makes a selection (for example when calling fetchPlace()). val token = AutocompleteSessionToken.newInstance() // Create a RectangularBounds object. val bounds = RectangularBounds.newInstance( LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596) ) // Use the builder to create a FindAutocompletePredictionsRequest. val request = FindAutocompletePredictionsRequest.builder() // Call either setLocationBias() OR setLocationRestriction(). .setLocationBias(bounds) //.setLocationRestriction(bounds) .setOrigin(LatLng(-33.8749937, 151.2041382)) .setCountries("AU", "NZ") .setTypesFilter(listOf(PlaceTypes.ADDRESS)) .setSessionToken(token) .setQuery(query) .build() placesClient.findAutocompletePredictions(request) .addOnSuccessListener { response: FindAutocompletePredictionsResponse -> for (prediction in response.autocompletePredictions) { Log.i(TAG, prediction.placeId) Log.i(TAG, prediction.getPrimaryText(null).toString()) } }.addOnFailureListener { exception: Exception? -> if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.statusCode}") } }
Java
// Create a new token for the autocomplete session. Pass this to FindAutocompletePredictionsRequest, // and once again when the user makes a selection (for example when calling fetchPlace()). AutocompleteSessionToken token = AutocompleteSessionToken.newInstance(); // Create a RectangularBounds object. RectangularBounds bounds = RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596)); // Use the builder to create a FindAutocompletePredictionsRequest. FindAutocompletePredictionsRequest request = FindAutocompletePredictionsRequest.builder() // Call either setLocationBias() OR setLocationRestriction(). .setLocationBias(bounds) //.setLocationRestriction(bounds) .setOrigin(new LatLng(-33.8749937, 151.2041382)) .setCountries("AU", "NZ") .setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS)) .setSessionToken(token) .setQuery(query) .build(); placesClient.findAutocompletePredictions(request).addOnSuccessListener((response) -> { for (AutocompletePrediction prediction : response.getAutocompletePredictions()) { Log.i(TAG, prediction.getPlaceId()); Log.i(TAG, prediction.getPrimaryText(null).toString()); } }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } });
एपीआई,
Task
में FindAutocompletePredictionsResponse
दिखाता है. FindAutocompletePredictionsResponse
में, अनुमानित जगहों को दिखाने वाले AutocompletePrediction
ऑब्जेक्ट की सूची होती है. अगर क्वेरी और फ़िल्टर की शर्तों से मेल खाने वाली कोई जगह नहीं है, तो हो सकता है कि सूची खाली हो.
अनुमानित जगह की जानकारी पाने के लिए, इन तरीकों का इस्तेमाल किया जा सकता है:
getFullText(CharacterStyle)
किसी जगह की जानकारी का पूरा टेक्स्ट दिखाता है. यह कई तरीकों से मुख्य और दूसरा टेक्स्ट. उदाहरण: "कुतुब मीनार, एवेन्यू एनेटोले फ़्रांस, पेरिस, फ़्रांस". इसके अलावा, इस तरीके की मदद से, आपको ऐसा ब्यौरा डालें जो खोज के नतीजों में आपकी पसंद की स्टाइल से मेल खाता हो.CharacterStyle
.CharacterStyle
पैरामीटर का इस्तेमाल करना ज़रूरी नहीं है. अगर आपको किसी भी तरह की हाइलाइटिंग की ज़रूरत नहीं है, तो इसे शून्य पर सेट करें.getPrimaryText(CharacterStyle)
किसी जगह के बारे में बताने वाला मुख्य टेक्स्ट दिखाता है. आम तौर पर, यह जगह का नाम होता है. उदाहरण: "आइफ़िल टावर" और "123 पिट स्ट्रीट".getSecondaryText(CharacterStyle)
यह फ़ंक्शन किसी जगह के ब्यौरे का मुख्य टेक्स्ट दिखाता है. यह इन लोगों के लिए काम का है उदाहरण के लिए, ऑटोकंप्लीट सुविधा की मदद से मिलने वाले सुझावों को दूसरी लाइन में दिखाने के लिए. उदाहरणः "एवेन्यू अनातोले फ़्रांस, पेरिस, फ़्रांस" और "सिडनी, न्यू साउथ वेल्स".getPlaceId()
यह अनुमानित जगह का जगह का आईडी दिखाता है. जगह का आईडी एक टेक्स्ट होता है ऐसा आइडेंटिफ़ायर जो किसी जगह की खास पहचान करता है. इसका इस्तेमाल करके, जानकारी पाई जा सकती है यहPlace
फिर से ऑब्जेक्ट सबमिट करें. Places SDK for Android में जगह के आईडी के बारे में ज़्यादा जानने के लिए, जगह की जानकारी देखें. जगह के आईडी के बारे में सामान्य जानकारी पाने के लिए, जगह के आईडी की खास जानकारी देखें.getPlaceTypes()
इससे, इस जगह से जुड़ी जगह के टाइप की सूची मिलती है.getDistanceMeters()
इस जगह और अनुरोध में ऑरिजिन के बारे में बताया गया है.
सेशन टोकन
सेशन टोकन, उपयोगकर्ता की ऑटोमैटिक तरीके से पूरी होने वाली खोज की क्वेरी और चुनने के चरणों को बिलिंग के मकसद से अलग सेशन में ग्रुप करते हैं. सेशन तब शुरू होता है, जब उपयोगकर्ता क्वेरी टाइप करना शुरू करता है और कोई जगह चुनने पर क्वेरी को खत्म करता है. हर सेशन में कई क्वेरी हो सकती हैं. इसके बाद, एक जगह चुनी जा सकती है. सेशन खत्म होने के बाद, टोकन अमान्य हो जाता है. इसलिए, आपके ऐप्लिकेशन को हर सेशन के लिए नया टोकन जनरेट करना होगा. हमारा सुझाव है कि सभी प्रोग्राम के हिसाब से, अपने-आप होने वाली प्रोसेस के लिए सेशन टोकन का इस्तेमाल करें अपने आप पूर्ण सत्र (जब आप कोई खंड एम्बेड करते हैं या इंटेंट नहीं है, तो एपीआई अपने-आप इसका ध्यान रखता है).
Android के लिए Places SDK टूल,
AutocompleteSessionToken
का इस्तेमाल करें. आपके ऐप्लिकेशन को नया सेशन टोकन पास करना चाहिए
फिर हर नया सेशन शुरू करें. इसके बाद, उसी टोकन को एक प्लेस आईडी के साथ पास करें
इसके बाद की कॉल
fetchPlace()
उपयोगकर्ता द्वारा चुने गए स्थान के लिए स्थान विवरण पुनर्प्राप्त करने के लिए.
सेशन टोकन के बारे में ज़्यादा जानें.
अपने आप पूर्ण परिणामों को सीमित करें
अपने-आप पूरी होने वाले सुझावों के नतीजों को किसी खास इलाके तक सीमित किया जा सकता है. इसके अलावा, नतीजों को एक या उससे ज़्यादा जगहों के हिसाब से या ज़्यादा से ज़्यादा पांच देशों के हिसाब से फ़िल्टर किया जा सकता है. इन पाबंदियों को ऑटोकंप्लीट गतिविधि, AutocompleteSupportFragment
, और प्रोग्राम के हिसाब से ऑटोकंप्लीट करने वाले एपीआई पर लागू किया जा सकता है.
नतीजों को सीमित करने के लिए, ये करें:
- तय किए गए इलाके में, नतीजों को प्राथमिकता देने के लिए,
setLocationBias()
पर कॉल करें (तय किए गए इलाके से बाहर के कुछ नतीजे अब भी दिखाए जा सकते हैं). - तय किए गए इलाके में सिर्फ़ नतीजे दिखाने के लिए,
setLocationRestriction()
को कॉल करें. ऐसा करने पर, सिर्फ़ तय किए गए इलाके के नतीजे दिखाए जाएंगे. - सिर्फ़ किसी खास जगह के हिसाब से नतीजे दिखाने के लिए,
setTypesFilter()
को कॉल करें. उदाहरण के लिए,TypeFilter.ADDRESS
का इस्तेमाल करने पर, सिर्फ़ सटीक पते वाले नतीजे दिखाए जाएंगे. - ज़्यादा से ज़्यादा पांच देशों के अंदर नतीजे देने के लिए, कॉल करें
setCountries()
. देशों के नाम, दो वर्णों वाले ISO 3166-1 ऐल्फ़ा-2 के मुताबिक देश का कोड के तौर पर डाले जाने चाहिए.
किसी खास इलाके के हिसाब से नतीजे दिखाना
किसी विशेष भौगोलिक क्षेत्र के लिए अपने आप पूर्ण परिणामों को पूर्वाग्रह में डालने के लिए,
setLocationBias()
की ओर से
RectangularBounds
.
नीचे दिया गया कोड का उदाहरण, किसी फ़्रैगमेंट पर setLocationBias()
को कॉल करने का तरीका दिखाता है
का इस्तेमाल अपने-आप पूरे होने वाले सुझावों के लिए किया जाता है.
Kotlin
autocompleteFragment.setLocationBias( RectangularBounds.newInstance( LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596) ) )
Java
autocompleteFragment.setLocationBias(RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596)));
नतीजों को किसी खास इलाके तक सीमित करना
किसी विशिष्ट भौगोलिक क्षेत्र के लिए अपने आप पूर्ण परिणामों को प्रतिबंधित करने के लिए,
setLocationRestriction()
की ओर से
RectangularBounds
.
उदाहरण के तौर पर दिया गया यह कोड, setLocationRestriction()
को कॉल करने के लिए दिखाता है
फ़्रैगमेंट इंस्टेंस, अपने-आप पूरे होने वाले सुझावों को, सिडनी के इलाके के लिए इस्तेमाल करता है.
ऑस्ट्रेलिया.
Kotlin
autocompleteFragment.setLocationRestriction( RectangularBounds.newInstance( LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596) ) )
Java
autocompleteFragment.setLocationRestriction(RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596)));
ध्यान दें: यह पाबंदी, एआई से जनरेट हुए नतीजों पर सिर्फ़ पूरे रूट पर लागू होती है आयताकार सीमाओं के बाहर स्थित ऐसे रूट के आधार पर लौटाया जा सकता है जो जगह की पाबंदी के साथ ओवरलैप करता है.
जगह के टाइप या जगह के हिसाब से नतीजे फ़िल्टर करें
आप किसी ऑटोकंप्लीट अनुरोध से नतीजों को प्रतिबंधित कर सकते हैं, ताकि वे सिर्फ़ किसी खास तरह की जगह के लिए. जगह के टाइप या टाइप कलेक्शन का इस्तेमाल करके, कोई फ़िल्टर तय करें जगहों के टाइप वाली टेबल 1, 2, और 3 में दी गई सूची. अगर कोई वैल्यू नहीं दी जाती है, तो सभी टाइप के आइटम दिखाए जाते हैं.
अपने आप पूर्ण परिणामों को फ़िल्टर करने के लिए, कॉल करें
setTypesFilter()
फ़िल्टर सेट करें.
कलेक्शन फ़िल्टर का टाइप या टाइप तय करने के लिए:
setTypesFilter()
को कॉल करें और तालिका 1 से ज़्यादा से ज़्यादा पांच type मान दर्ज करें और टेबल 2 को जगह के टाइप पर दिखाया गया है. टाइप की वैल्यू, PlaceTypes में मौजूद कॉन्स्टेंट से तय होती हैं.setTypesFilter()
को कॉल करें और तीसरी टेबल से दिखाया गया टाइप कलेक्शन तय करें जगह के टाइप पर क्लिक करें. कलेक्शन की वैल्यू, PlaceTypes में मौजूद स्थिर वैल्यू से तय होती हैं.अनुरोध में, टेबल 3 में दिए गए सिर्फ़ एक टाइप की अनुमति है. अगर आप टेबल 3 के मान के हिसाब से, टेबल 1 या टेबल 2 से कोई वैल्यू तय नहीं की जा सकती. ऐसा करने पर, गड़बड़ी का मैसेज दिखता है.
उदाहरण के तौर पर दिया गया यह कोड, setTypesFilter()
को
AutocompleteSupportFragment
और कई तरह के मान तय करता है.
Kotlin
autocompleteFragment.setTypesFilter(listOf("landmark", "restaurant", "store"))
Java
autocompleteFragment.setTypesFilter(Arrays.asList("landmark", "restaurant", "store"));
नीचे दिए गए कोड के उदाहरण में, AutocompleteSupportFragment
पर setTypesFilter()
को कॉल करके, एक फ़िल्टर सेट करने का तरीका बताया गया है. यह फ़िल्टर, टाइप कलेक्शन की जानकारी देकर, सिर्फ़ सटीक पते वाले नतीजे दिखाता है.
Kotlin
autocompleteFragment.setTypesFilter(listOf(PlaceTypes.ADDRESS))
Java
autocompleteFragment.setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS, PlaceTypes.ESTABLISHMENT));
उदाहरण के तौर पर दिया गया यह कोड, setTypesFilter()
को कॉल करने के लिए दिखाता है
सिर्फ़ सटीक पते वाले नतीजे दिखाने वाला फ़िल्टर सेट करने के लिए IntentBuilder
टाइप कलेक्शन तय करते हुए.
Kotlin
val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(listOf(PlaceTypes.ADDRESS)) .build(this)
Java
Intent intent = new Autocomplete.IntentBuilder( AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS)) .build(this);
देश के हिसाब से नतीजे फ़िल्टर करना
अपने आप पूर्ण परिणामों को अधिकतम पांच देशों के लिए फ़िल्टर करने के लिए, कॉल करें
setCountries()
देश कोड सेट करने के लिए.
इसके बाद, फ़िल्टर को किसी फ़्रैगमेंट या इंटेंट में पास करें. देशों को
दो वर्ण वाला, ISO 3166-1 Alpha-2 वर्शन वाला देश
कोड.
उदाहरण के तौर पर दिया गया यह कोड, setCountries()
को कॉल करने के लिए दिखाता है
AutocompleteSupportFragment
का इस्तेमाल करके, फ़िल्टर को सेट करने के लिए
कुछ देशों में ही दिखाए जा सकते हैं.
Kotlin
autocompleteFragment.setCountries("AU", "NZ")
Java
autocompleteFragment.setCountries("AU", "NZ");
इस्तेमाल करने की सीमा
Android के लिए Places SDK टूल के साथ-साथ, Places API के इस्तेमाल का मतलब है यह अब हर दिन ज़्यादा से ज़्यादा अनुरोधों (क्यूपीडी) तक सीमित नहीं होगा. हालांकि, इस्तेमाल करने की ये सीमाएं अब भी लागू होंगी:
- रेट लिमिट 6,000 क्यूपीएम (हर मिनट में अनुरोध) है. हां इसकी गणना क्लाइंट-साइड और सर्वर-साइड अनुरोधों के योग के रूप में की जाती है, का उपयोग कर रहे हैं.
अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाएं
- अगर आपका ऐप्लिकेशन, ऑटोकंप्लीट की सुविधा को प्रोग्राम के हिसाब से इस्तेमाल करता है, तो आपके यूज़र इंटरफ़ेस (यूआई) में 'Google की मदद से' एट्रिब्यूशन दिखना चाहिए या वह Google के ब्रैंड वाले मैप में दिखना चाहिए.
- अगर आपके ऐप्लिकेशन में ऑटोकंप्लीट सुविधा का विजेट इस्तेमाल किया जाता है, तो आपको कुछ और करने की ज़रूरत नहीं है (ज़रूरी एट्रिब्यूशन, डिफ़ॉल्ट रूप से दिखता है).
- अगर आईडी से जगह की जानकारी पाने के बाद, जगह की ज़्यादा जानकारी हासिल की जाती है और उसे दिखाया जाता है, तो आपको तीसरे पक्ष के एट्रिब्यूशन भी दिखाने होंगे.
ज़्यादा जानकारी के लिए, एट्रिब्यूशन के बारे में दस्तावेज़ देखें.
जगह के लिए ऑटोकंप्लीट की सुविधा चालू करें
इस सेक्शन में, जगह की जानकारी अपने-आप पूरी होने की सुविधा का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, सबसे सही तरीकों के बारे में बताया गया है.
यहां कुछ सामान्य दिशा-निर्देश दिए गए हैं:
- काम करने वाला यूज़र इंटरफ़ेस बनाने का सबसे तेज़ तरीका यह है कि आप Maps JavaScript API के ऑटोकंप्लीट विजेट, Android के लिए Places SDK टूल के ऑटोकंप्लीट विजेट या iOS के लिए Places SDK टूल के ऑटोकंप्लीट यूज़र इंटरफ़ेस कंट्रोल का इस्तेमाल करें
- जगह की जानकारी अपने-आप भरने की सुविधा के लिए ज़रूरी डेटा फ़ील्ड के बारे में शुरुआत से ही जानकारी रखें.
- जगह के हिसाब से सुझाव और जगह की पाबंदी वाले फ़ील्ड का इस्तेमाल करना ज़रूरी नहीं है. हालांकि, इनका इस्तेमाल करने से ऑटोमैटिक भरने की सुविधा की परफ़ॉर्मेंस पर काफ़ी असर पड़ सकता है.
- गड़बड़ी को मैनेज करने की सुविधा का इस्तेमाल करके, पक्का करें कि एपीआई से गड़बड़ी का मैसेज मिलने पर, आपका ऐप्लिकेशन सही तरीके से काम करना बंद कर दे.
- पक्का करें कि आपका ऐप्लिकेशन तब मैनेज किया जाए, जब कोई विकल्प न चुना गया हो. साथ ही, लोगों को जारी रखने के लिए.
लागत ऑप्टिमाइज़ेशन के सबसे सही तरीके
बुनियादी लागत ऑप्टिमाइज़ेशन
जगह की जानकारी अपने-आप भरने की सुविधा का इस्तेमाल करने की लागत को ऑप्टिमाइज़ करने के लिए, जगह की जानकारी और जगह की जानकारी अपने-आप भरने की सुविधा वाले विजेट में फ़ील्ड मास्क का इस्तेमाल करें. इससे, आपको सिर्फ़ वही जगह का डेटा फ़ील्ड दिखेगा जिसकी ज़रूरत है.
लागत का बेहतर ऑप्टिमाइज़ेशन
हर अनुरोध के हिसाब से कीमत को ऐक्सेस करने के लिए, जगह की जानकारी अपने-आप पूरी होने की सुविधा को प्रोग्राम के तौर पर लागू करें. साथ ही, जगह की जानकारी के बजाय, चुनी गई जगह के बारे में Geocoding API के नतीजों का अनुरोध करें. Geocoding API के साथ हर अनुरोध के लिए तय की गई कीमत, हर सेशन (सेशन के आधार पर) की तुलना में ज़्यादा किफ़ायती है. ऐसा तब होगा, जब ये दोनों शर्तें पूरी हों:
- अगर आपको केवल उपयोगकर्ता के चयनित स्थान के अक्षांश/देशांतर या पते की आवश्यकता है, तो Geocoding API स्थान विवरण कॉल के कम समय में यह जानकारी डिलीवर करता है.
- अगर उपयोगकर्ता, ऑटोकंप्लीट के अनुमान के चार या उससे कम अनुरोधों में से कोई सुझाव चुनते हैं, तो हर अनुरोध के हिसाब से कीमत, हर सेशन के हिसाब से कीमत से ज़्यादा किफ़ायती हो सकती है.
क्या आपके ऐप्लिकेशन को चुने गए पूर्वानुमान के पते और अक्षांश/देशांतर के अलावा किसी और जानकारी की ज़रूरत है?
हां, ज़्यादा जानकारी चाहिए
जगह की जानकारी के साथ, सेशन के हिसाब से जगह की जानकारी अपने-आप पूरी होने की सुविधा का इस्तेमाल करें.
आपके ऐप्लिकेशन को जगह की जानकारी की ज़रूरत होती है, जैसे कि जगह का नाम, कारोबार की स्थिति या खुले होने का समय. इसलिए, जगह की जानकारी अपने-आप भरने की सुविधा को लागू करने के लिए, सेशन टोकन का इस्तेमाल किया जाना चाहिए. यह प्रोग्राम के हिसाब से या JavaScript, Android या iOS विजेट में पहले से मौजूद होता है. इसके लिए, हर सेशन के लिए 0.017 डॉलर और Places Data के SKU की लागत चुकाई जाती है. यह लागत, जगह की जानकारी के उन फ़ील्ड पर निर्भर करती है जिनका अनुरोध किया जाता है.1
विजेट लागू करना
सेशन मैनेजमेंट की सुविधा, JavaScript, Android या iOS विजेट में अपने-आप मौजूद होती है. इसमें चुने गए सुझाव पर स्थान के अपने आप पूरे होने वाले अनुरोध और स्थान की जानकारी का अनुरोध, दोनों शामिल हैं. fields
पैरामीटर बताना न भूलें, ताकि यह पक्का किया जा सके कि आप सिर्फ़
अपनी ज़रूरत के हिसाब से डेटा फ़ील्ड डालें.
प्रोग्रामैटिक तरीके से लागू करना
जगह की जानकारी अपने-आप भरने के अनुरोधों के साथ सेशन टोकन का इस्तेमाल करें. चुने गए सुझाव के बारे में जगह की जानकारी का अनुरोध करते समय, ये पैरामीटर शामिल करें:
- जगह के नाम के शुरुआती अक्षर लिखने पर पूरा नाम सुझाने की सुविधा के रिस्पॉन्स में मौजूद लोकेशन आईडी
- ऑटोकंप्लीट की सुविधा के अनुरोध में इस्तेमाल किया गया सेशन टोकन
fields
पैरामीटर, जो अपनी ज़रूरत के हिसाब से डेटा फ़ील्ड डालें
नहीं, सिर्फ़ पते और जगह की जानकारी की ज़रूरत है
आपके स्थान के अपने आप पूर्ण उपयोग के प्रदर्शन के आधार पर, आपके ऐप्लिकेशन के लिए स्थान विवरण की तुलना में Geocoding API ज़्यादा किफ़ायती विकल्प हो सकता है. हर ऐप्लिकेशन में ऑटोमैटिक भरने की सुविधा की परफ़ॉर्मेंस अलग-अलग होती है. यह इस बात पर निर्भर करता है कि उपयोगकर्ता क्या डाल रहे हैं, ऐप्लिकेशन का इस्तेमाल कहां किया जा रहा है, और परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के सबसे सही तरीके लागू किए गए हैं या नहीं.
नीचे दिए गए सवाल का जवाब देने के लिए, यह विश्लेषण करें कि आपके ऐप्लिकेशन में जगह के अपने-आप पूरे होने वाले सुझाव चुनने से पहले, उपयोगकर्ता औसतन कितने वर्ण टाइप करता है.
क्या आपके उपयोगकर्ता औसतन चार या उससे कम अनुरोधों में, किसी जगह के लिए ऑटोकंप्लीट की सुविधा का अनुमान लगाते हैं?
हां
सेशन टोकन के बिना, प्रोग्राम के हिसाब से जगह की जानकारी के लिए ऑटोकंप्लीट की सुविधा लागू करें. साथ ही, चुनी गई जगह के सुझाव पर जियोकोडिंग एपीआई को कॉल करें.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
Geocoding API के ज़रिए हर अनुरोध के लिए, 0.005 डॉलर के हिसाब से पते और अक्षांश/देशांतर निर्देशांक डिलीवर किए जाते हैं. जगह की जानकारी के लिए ऑटोकंप्लीट की सुविधा - हर अनुरोध के लिए चार अनुरोध करने पर, 0.01132 डॉलर का शुल्क लगता है. इसलिए, चुनी गई जगह के सुझाव के लिए चार अनुरोधों और Geocoding API कॉल की कुल कीमत 0.01632 डॉलर होगी. यह कीमत, हर सेशन के लिए ऑटोकंप्लीट की सुविधा के लिए, हर सेशन के 0.017 डॉलर के शुल्क से कम है.1
परफ़ॉर्मेंस के सबसे सही तरीकों का इस्तेमाल करें, ताकि आपके उपयोगकर्ता कम वर्णों में भी अपनी खोज के नतीजे पा सकें.
नहीं
जगह की जानकारी के साथ, जगह के बारे में जानकारी के साथ ऑटोकंप्लीट की सुविधा का इस्तेमाल करें.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
उपयोगकर्ता के किसी स् थान के लिए ऑटोकंप्लीट सुविधा का सुझाव देने से पहले किए जाने वाले अनुरोधों की औसत संख्या, हर सेशन की लागत से ज़्यादा होती है. इसलिए, ऑटोकंप्लीट की सुविधा लागू करने पर, 'जगह के अपने-आप पूरे होने वाले अनुरोधों' और संबंधित जगह की जानकारी के अनुरोध, दोनों के लिए सेशन टोकन का इस्तेमाल किया जाना चाहिए. इसका इस्तेमाल हर सेशन के लिए कुल 0.017 डॉलर पर किया जाता है.1
विजेट लागू करना
सेशन मैनेजमेंट की सुविधा, JavaScript, Android या iOS विजेट में अपने-आप मौजूद होती है. इसमें चुने गए सुझाव पर स्थान के अपने आप पूरे होने वाले अनुरोध और स्थान की जानकारी का अनुरोध, दोनों शामिल हैं. fields
पैरामीटर ज़रूर बताएं, ताकि यह पक्का किया जा सके कि आपने सिर्फ़ बुनियादी डेटा फ़ील्ड के लिए अनुरोध किया है.
प्रोग्रामैटिक तौर पर लागू करना
अपनी जगह के अपने-आप पूरे होने वाले अनुरोधों के लिए, सेशन टोकन का इस्तेमाल करें. चुने गए सुझाव के बारे में जगह की जानकारी का अनुरोध करते समय, ये पैरामीटर शामिल करें:
- जगह के अपने-आप पूरे होने वाले जवाब से मिला जगह का आईडी
- ऑटोकंप्लीट की सुविधा के अनुरोध में इस्तेमाल किया गया सेशन टोकन
- पता और ज्यामिति जैसे बेसिक डेटा फ़ील्ड को बताने वाला
fields
पैरामीटर
जगह की जानकारी अपने-आप पूरी होने की सुविधा के अनुरोधों को देर से भेजने पर विचार करें
जगह की जानकारी अपने-आप पूरी होने की सुविधा के अनुरोध को तब तक देर से भेजें, जब तक कि उपयोगकर्ता ने पहले तीन या चार वर्ण टाइप न कर लिए हों. इससे आपका ऐप्लिकेशन कम अनुरोध करेगा. उदाहरण के लिए, उपयोगकर्ता के तीसरा वर्ण टाइप करने के बाद, हर वर्ण के लिए जगह की जानकारी के ऑटोकंप्लीट के अनुरोध करने का मतलब है कि अगर उपयोगकर्ता सात वर्ण टाइप करता है और फिर कोई अनुमान चुनता है, जिसके लिए आपने एक जियोकोडिंग एपीआई अनुरोध किया है, तो कुल लागत 0.01632 डॉलर होगी (हर अनुरोध के लिए ऑटोकंप्लीट की 4 * 0.00283 डॉलर की लागत + 0.005 डॉलर की जियोकोडिंग की लागत).1
अगर अनुरोधों में देरी करने से आपका औसत प्रोग्रामैटिक अनुरोध चार से कम हो सकता है, तो आप Geocoding API की मदद से, जगह के अपने-आप पूरा होने की बेहतर परफ़ॉर्मेंस लागू करने के दिशा-निर्देशों का पालन कर सकते हैं. ध्यान दें कि देर से होने वाले अनुरोधों को उस उपयोगकर्ता के लिए इंतज़ार का समय माना जा सकता है जो हर नए कीस्ट्रोक के साथ अनुमान देखने की उम्मीद कर रहा हो.
परफ़ॉर्मेंस के सबसे सही तरीके इस्तेमाल करें, ताकि आपके उपयोगकर्ता कम वर्णों में अनुमान लगा पाएं कि वे क्या खोज रहे हैं.
-
यहां बताई गई लागत डॉलर में है. कीमत की पूरी जानकारी के लिए, कृपया Google Maps Platform की बिलिंग पेज पर जाएं.
परफ़ॉर्मेंस के सबसे सही तरीके
नीचे दिए गए दिशा-निर्देशों में बताया गया है कि किसी जगह के ऑटोकंप्लीट की सुविधा की परफ़ॉर्मेंस को कैसे ऑप्टिमाइज़ किया जा सकता है:
- देश से जुड़ी पाबंदियां जोड़ें, जगह का मापदंड तय करना, और (प्रोग्रामैटिक लागू करने के लिए) आपके स्थान ऑटोकंप्लीट की भाषा प्राथमिकता लागू करना. विजेट के लिए, भाषा की प्राथमिकता सेट करने की ज़रूरत नहीं होती, क्योंकि ये उपयोगकर्ता के ब्राउज़र या मोबाइल डिवाइस से भाषा की प्राथमिकताएं चुनते हैं.
- अगर ऑटोकंप्लीट की सुविधा के साथ कोई मैप मौजूद है, तो मैप के व्यूपोर्ट की मदद से जगह की जानकारी का पता लगाया जा सकता है.
- जब कोई उपयोगकर्ता ऑटोकंप्लीट के सुझावों में से कोई सुझाव नहीं चुनता है, तो आम तौर पर ऐसा इसलिए होता है, क्योंकि उनमें से कोई भी सुझाव, उपयोगकर्ता के हिसाब से सही पता नहीं होता. ऐसे में, ज़्यादा काम के नतीजे पाने के लिए, उपयोगकर्ता के मूल इनपुट का फिर से इस्तेमाल किया जा सकता है:
- अगर आपको लगता है कि उपयोगकर्ता सिर्फ़ पते की जानकारी डालेगा, तो उपयोगकर्ता के ओरिजनल इनपुट का फिर से इस्तेमाल करें Geocoding API को कॉल करने के दौरान.
- अगर आपको लगता है कि उपयोगकर्ता किसी जगह के नाम या पते से जुड़ी क्वेरी डालेगा, तो जगह ढूंढने का अनुरोध का इस्तेमाल करें. अगर आपको सिर्फ़ किसी खास इलाके के लिए नतीजे चाहिए, तो जगह के हिसाब से नतीजे दिखाने की सुविधा का इस्तेमाल करें.
- ऐसे देश जहां सब-प्राइमिस पतों के लिए, जगह के नाम को अपने-आप पूरा करने की सुविधा अधूरी है. जैसे, चेकिया, एस्टोनिया, और लिथुआनिया. उदाहरण के लिए, चेक पता "Stroupezunicého 3191/17, Praha" स्थान में आंशिक पूर्वानुमान देता है ऑटोकंप्लीट.
- ऐसे उपयोगकर्ता जो सड़क के सेगमेंट के प्रीफ़िक्स के साथ पते डालते हैं. जैसे, न्यूयॉर्क शहर में "23-30 29th St, Queens" या हवाई के काऊई द्वीप पर "47-380 Kamehameha Hwy, Kaneohe".
समस्या का हल
कई तरह की गड़बड़ियां हो सकती हैं. हालांकि, आपके ऐप्लिकेशन में होने वाली ज़्यादातर गड़बड़ियां, कॉन्फ़िगरेशन की गड़बड़ियों (उदाहरण के लिए, गलत एपीआई पासकोड का इस्तेमाल किया गया या एपीआई पासकोड को गलत तरीके से कॉन्फ़िगर किया गया) या कोटा से जुड़ी गड़बड़ियों (आपका ऐप्लिकेशन अपने कोटे से ज़्यादा डेटा इस्तेमाल कर रहा है) की वजह से होती हैं. इस्तेमाल से जुड़ी जानकारी देखें ज़्यादा के लिए सीमाएं कोटा के बारे में जानकारी.
ऑटोकंप्लीट कंट्रोल के इस्तेमाल में होने वाली गड़बड़ियां,
onActivityResult()
कॉलबैक. स्टेटस जानने के लिए, Autocomplete.getStatus()
पर कॉल करें
मैसेज दिखता है.