Android के लिए Places SDK टूल में मौजूद ऑटोकंप्लीट सेवा की मदद से दिखाया गया उपयोगकर्ता की खोज क्वेरी के जवाब में दिए जाने वाले सुझाव. जैसे-जैसे उपयोगकर्ता टाइप करता है, अपने-आप पूरा होने वाली सेवा, कारोबार, जैसे कि कारोबार, पते, प्लस कोड, और लोकप्रिय जगहें.
नीचे दिए गए तरीकों से अपने ऐप्लिकेशन में ऑटोकंप्लीट की सुविधा जोड़ी जा सकती है:
- सेव करने के लिए, अपने-आप पूरा होने वाला विजेट जोड़ें तय करते हैं कि उपयोगकर्ता को एक जैसा अनुभव दिया जा रहा है या नहीं.
- जगहों के बारे में अनुमान पाएं प्रोग्रामेटिक रूप से उपयोगकर्ता अनुभव को कस्टमाइज़ किया जा सके.
अपने आप पूरा होने वाला विजेट जोड़ें
ऑटोकंप्लीट विजेट, खोज के लिए इस्तेमाल होने वाला एक डायलॉग है. इसमें, ऑटोकंप्लीट की सुविधा पहले से मौजूद है
सुविधा पर काम करता है. जैसे ही कोई उपयोगकर्ता खोज शब्द दर्ज करता है, विजेट
में से अपनी पसंद की जगहें चुनने की सुविधा मिलती है. जब उपयोगकर्ता कोई विकल्प चुनता है, तो
Place
इंस्टेंस दिखाया जाता है, जिसका इस्तेमाल करके आपका ऐप्लिकेशन
चयनित स्थान.
अपने ऐप्लिकेशन में ऑटोकंप्लीट विजेट जोड़ने के दो विकल्प हैं:
- पहला विकल्प:
AutocompleteSupportFragment
को एम्बेड करना. - दूसरा विकल्प: ऑटोकंप्लीट की गतिविधि को लॉन्च करने के लिए, किसी इंटेंट का इस्तेमाल करें.
विकल्प 1: ऑटोकंप्लीटSupportफ़्रैगमेंट एम्बेड करना
अपने ऐप्लिकेशन में 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
को कॉल करना होगा, नहीं तो फ़्रैगमेंट ठीक से काम नहीं करेगा.
किसी गतिविधि में PlanSelectionListener जोड़ें
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.IntentBuilder
का इस्तेमाल करें इंटेंट बनाने के लिए, मनचाहेAutocomplete
मोड को पास करें.- गतिविधि के नतीजे दिखाने वाला लॉन्चर तय करें
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);
ऑटोकंप्लीट विजेट को लॉन्च करने के लिए, किसी इंटेंट का इस्तेमाल करते समय ओवरले या फ़ुल-स्क्रीन डिसप्ले मोड का इस्तेमाल किया जा सकता है. इन स्क्रीनशॉट में, डिसप्ले मोड की जानकारी भी दी गई है:
![ओवरले मोड में दिखाए जाने पर, ऑटोकंप्लीट विजेट, कॉलिंग यूज़र इंटरफ़ेस (यूआई) के ऊपर दिखता है.](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/places/images/acw_overlay.png?authuser=6&hl=hi)
![फ़ुलस्क्रीन मोड में दिखाने पर, ऑटोकंप्लीट विजेट पूरी स्क्रीन पर दिखने लगता है.](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/places/images/acw_fullscreen.png?authuser=6&hl=hi)
इंटेंट के नतीजे के लिए कॉलबैक रजिस्टर करें
जब कोई उपयोगकर्ता किसी जगह को चुन ले, तो सूचना पाने के लिए
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
स्ट्रिंग जिसमें वह टेक्स्ट शामिल है जिसे उपयोगकर्ता ने टाइप किया है. - सुझाव: A
AutocompleteSessionToken
, यह किसी उपयोगकर्ता की खोज की क्वेरी और उसे चुनने के चरणों को अलग-अलग ग्रुप में बांटता है सेशन के लिए चुना गया है. सेशन तब शुरू होता है, जब उपयोगकर्ता टाइप करना शुरू करता है क्वेरी पोस्ट करता है और जगह चुनने पर खत्म होता है. - सुझाया गया: एक
RectangularBounds
ऑब्जेक्ट, जो अक्षांश और देशांतर की सीमा तय करता है, ताकि नज़दीकी के लिए नतीजों को तय करें. - ज़रूरी नहीं: एक या दो वर्णों वाला एक से ज़्यादा देश कोड (ISO 3166-1 ऐल्फ़ा-2), उस देश या उन देशों को दिखाता है जहां के नतीजे दिखाए जाने चाहिए प्रतिबंधित.
ज़रूरी नहीं: A
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()); } });
एपीआई,
FindAutocompletePredictionsResponse
में
Task
. FindAutocompletePredictionsResponse
इसमें
AutocompletePrediction
ऑब्जेक्ट, जो अनुमानित जगहों को दिखा रहे हैं. अगर कोई न हो, तो सूची खाली हो सकती है
क्वेरी और फ़िल्टर मापदंड के अनुरूप ज्ञात स्थान.
प्रत्येक अनुमानित स्थान के लिए, आप स्थान पुनर्प्राप्त करने के लिए निम्न तरीकों को कॉल कर सकते हैं विवरण:
getFullText(CharacterStyle)
किसी जगह की जानकारी का पूरा टेक्स्ट दिखाता है. यह कई तरीकों से मुख्य और दूसरा टेक्स्ट. उदाहरण: "कुतुब मीनार, एवेन्यू एनेटोले फ़्रांस, पेरिस, फ़्रांस". इसके अलावा, इस तरीके की मदद से, आपको ऐसा ब्यौरा डालें जो खोज के नतीजों में आपकी पसंद की स्टाइल से मेल खाता हो.CharacterStyle
.CharacterStyle
पैरामीटर ज़रूरी नहीं है. अगर ऐसा नहीं होता है, तो इसे शून्य पर सेट करें को हाइलाइट करने की ज़रूरत नहीं होती.getPrimaryText(CharacterStyle)
किसी जगह के बारे में बताने वाला मुख्य टेक्स्ट दिखाता है. आम तौर पर यह जगह. उदाहरण: "कुतुब मीनार" और "123 Pitt Street".getSecondaryText(CharacterStyle)
यह फ़ंक्शन किसी जगह के ब्यौरे का मुख्य टेक्स्ट दिखाता है. यह इन लोगों के लिए काम का है उदाहरण के लिए, ऑटोकंप्लीट सुविधा की मदद से मिलने वाले सुझावों को दूसरी लाइन में दिखाने के लिए. उदाहरणः "एवेन्यू अनातोले फ़्रांस, पेरिस, फ़्रांस" और "सिडनी, न्यू साउथ वेल्स".getPlaceId()
यह अनुमानित जगह का जगह का आईडी दिखाता है. जगह का आईडी एक टेक्स्ट होता है ऐसा आइडेंटिफ़ायर जो किसी जगह की खास पहचान करता है. इसका इस्तेमाल करके, जानकारी पाई जा सकती है यहPlace
फिर से ऑब्जेक्ट सबमिट करें. जगह के आईडी के बारे में ज़्यादा जानकारी के लिए, Android के लिए Places SDK टूल की जानकारी के साथ, जगह की जानकारी जानकारी. सामान्य जगह की जानकारी के बारे में जानकारी पाने के लिए, जगह का आईडी देखें खास जानकारी पर टैप करें.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()
को कॉल करके, दिखने वाली टेबल 3 से टाइप कलेक्शन तय करें जगह के टाइप पर क्लिक करें. कलेक्शन की वैल्यू इसमें कॉन्सटेंट PlaceTypes.अनुरोध में टेबल 3 से सिर्फ़ एक ही टाइप की अनुमति है. अगर आप टेबल 3 के मान के हिसाब से, टेबल 1 या टेबल 2 से कोई वैल्यू तय नहीं की जा सकती. अगर आपने तो कोई गड़बड़ी होती है.
उदाहरण के तौर पर दिया गया यह कोड, setTypesFilter()
को
AutocompleteSupportFragment
और कई तरह के मान तय करता है.
Kotlin
autocompleteFragment.setTypesFilter(listOf("landmark", "restaurant", "store"))
Java
autocompleteFragment.setTypesFilter(Arrays.asList("landmark", "restaurant", "store"));
उदाहरण के तौर पर दिया गया यह कोड, setTypesFilter()
को कॉल करने के लिए दिखाता है
सिर्फ़ ऐसे नतीजे दिखाने वाला फ़िल्टर सेट करने के लिए AutocompleteSupportFragment
सटीक पता बनाने के लिए, कलेक्शन का टाइप तय करें.
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 डॉलर हर सेशन और लागू जगह डेटा SKU का इस्तेमाल करना होगा. ये इस बात पर निर्भर करता है कि आप किस जगह के डेटा फ़ील्ड का अनुरोध करते हैं
विजेट लागू करना
सेशन मैनेजमेंट की सुविधा, JavaScript, Android या iOS विजेट में अपने-आप मौजूद होती है. इसमें चुने गए सुझाव पर स्थान के अपने आप पूरे होने वाले अनुरोध और स्थान की जानकारी का अनुरोध, दोनों शामिल हैं. fields
पैरामीटर बताना न भूलें, ताकि यह पक्का किया जा सके कि आप सिर्फ़
अपनी ज़रूरत के हिसाब से डेटा फ़ील्ड डालें.
प्रोग्रामैटिक तौर पर लागू करना
अपनी जगह के अपने-आप पूरे होने वाले अनुरोधों के लिए, सेशन टोकन का इस्तेमाल करें. चुने गए सुझाव के बारे में जगह की जानकारी का अनुरोध करते समय, ये पैरामीटर शामिल करें:
- जगह के अपने-आप पूरे होने वाले जवाब से मिला जगह का आईडी
- ऑटोकंप्लीट की सुविधा के अनुरोध में इस्तेमाल किया गया सेशन टोकन
fields
पैरामीटर, जो अपनी ज़रूरत के हिसाब से डेटा फ़ील्ड डालें
नहीं, सिर्फ़ पता और जगह की जानकारी चाहिए
आपके स्थान के अपने आप पूर्ण उपयोग के प्रदर्शन के आधार पर, आपके ऐप्लिकेशन के लिए स्थान विवरण की तुलना में Geocoding API ज़्यादा किफ़ायती विकल्प हो सकता है. हर ऐप्लिकेशन की अपने-आप पूरे होने की क्षमता इस आधार पर अलग-अलग होती है कि उपयोगकर्ता क्या डाल रहे हैं, ऐप्लिकेशन का इस्तेमाल कहां कर रहे हैं, और क्या परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के सबसे सही तरीके लागू किए गए हैं.
नीचे दिए गए सवाल का जवाब देने के लिए, अपने ऐप्लिकेशन में स्थान ऑटोकंप्लीट सुझाव चुनने से पहले इस बात का विश्लेषण करें कि कोई उपयोगकर्ता औसतन कितने वर्ण टाइप करता है.
क्या आपके उपयोगकर्ता औसतन चार या उससे कम अनुरोधों में, किसी जगह के लिए ऑटोकंप्लीट की सुविधा का अनुमान लगाते हैं?
हां
सेशन टोकन के बिना, जगह के अपने-आप पूरे होने की सुविधा को प्रोग्राम के हिसाब से लागू करें. साथ ही, चुनी गई जगह के अनुमान पर 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 को कॉल करने के दौरान.
- अगर आपको लगता है कि उपयोगकर्ता किसी खास जगह के नाम या पते के आधार पर क्वेरी कर सकता है, तो जगह ढूंढने के अनुरोध का इस्तेमाल करें. अगर नतीजे सिर्फ़ किसी खास क्षेत्र में होने की उम्मीद है, तो जगह का फ़ैसला.
- उन देशों में उप-प्रिमाइस के पते इनपुट करते हुए जहां स्थान अपने आप पूर्ण करने के लिए समर्थन उपलब्ध है सब-प्रिमाइस का पता अधूरा है, जैसे कि चेकिया, एस्टोनिया, और लिथुआनिया. उदाहरण के लिए, चेक पता "Stroupešnicého 3191/17, Praha" स्थान में आंशिक पूर्वानुमान देता है ऑटोकंप्लीट.
- "23-30 29th St, Queens" जैसे रोड-सेगमेंट प्रीफ़िक्स के साथ पते डालने वाले उपयोगकर्ता इंच न्यूयॉर्क शहर या "47-380 Camehameha Hwy, Kaneohe" हवाई के काऊआई द्वीप पर मौजूद है.
समस्या का हल
भले ही, आपके ऐप्लिकेशन में कई तरह की गड़बड़ियां हो सकती हैं, लेकिन ज़्यादातर गड़बड़ियां कॉन्फ़िगरेशन की गड़बड़ियों की वजह से ऐसा हो सकता है (उदाहरण के लिए, गलत एपीआई पासकोड का इस्तेमाल किया गया या एपीआई पासकोड को गलत तरीके से कॉन्फ़िगर किया गया) या कोटा गड़बड़ियां (आपके ऐप्लिकेशन ने तय सीमा पार कर ली है). इस्तेमाल से जुड़ी जानकारी देखें ज़्यादा के लिए सीमाएं कोटा के बारे में जानकारी.
ऑटोकंप्लीट कंट्रोल के इस्तेमाल में होने वाली गड़बड़ियां,
onActivityResult()
कॉलबैक. स्टेटस जानने के लिए, Autocomplete.getStatus()
पर कॉल करें
मैसेज दिखता है.