जगहों के सुझाव ऑटोकंप्लीट करने की सुविधा

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
प्लैटफ़ॉर्म चुनें: Android iOS JavaScript वेब सेवा

Android के लिए Places SDK टूल में ऑटोकंप्लीट सेवा, उपयोगकर्ता की सर्च क्वेरी के जवाब में जगह के अनुमान दिखाती है. उपयोगकर्ता टाइप के तौर पर, ऑटोकंप्लीट की सुविधा से कारोबार, पते, प्लस कोड, और पसंदीदा जगहों जैसी जगहों के सुझाव मिलते हैं.

आप नीचे दिए गए तरीकों से अपने ऐप्लिकेशन में ऑटोकंप्लीट जोड़ें:

ऑटोकंप्लीट विजेट जोड़ें

ऑटोकंप्लीट विजेट, पहले से मौजूद ऑटोकंप्लीट फ़ंक्शन की सुविधा वाला खोज डायलॉग है. जैसे-जैसे उपयोगकर्ता खोज के लिए शब्द डालता है, विजेट पसंद के मुताबिक जगहों की सूची दिखाता है. उपयोगकर्ता की ओर से कोई विकल्प चुनने पर, Place इंस्टेंस दिखता है. इसका इस्तेमाल करके, आपका ऐप्लिकेशन चुनी गई जगह के बारे में जानकारी पाने के लिए इस्तेमाल कर सकता है.

अपने ऐप्लिकेशन में ऑटोकंप्लीट विजेट जोड़ने के दो विकल्प हैं:

पहला विकल्प: अपने-आप पूरा होने वाली सहायता फ़्रैगमेंट एम्बेड करना

अपने ऐप्लिकेशन में AutocompleteSupportFragment जोड़ने के लिए, यह तरीका अपनाएं:

  1. अपनी गतिविधि के एक्सएमएल लेआउट में कोई फ़्रैगमेंट जोड़ें.
  2. अपनी गतिविधि या फ़्रैगमेंट में कोई पहचानकर्ता जोड़ें.

किसी गतिविधि में 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 में सुनने वाला जोड़ने के बारे में जानकारी देता है:

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);
        }
    });

      

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")
        }
    })

      

दूसरा विकल्प: ऑटोकंप्लीट ऐक्टिविटी लॉन्च करने के लिए, इंटेंट का इस्तेमाल करना

अगर आप अपने ऐप्लिकेशन में अलग नेविगेशन फ़्लो का इस्तेमाल करना चाहते हैं (उदाहरण के लिए, किसी खोज फ़ील्ड के बजाय आइकॉन से अपने-आप पूरा होने वाले अनुभव को ट्रिगर करना), तो आपका ऐप्लिकेशन इंटेंट का इस्तेमाल करके ऑटोकंप्लीट की सुविधा को लॉन्च कर सकता है.

किसी इंटेंट का इस्तेमाल करके अपने-आप पूरा होने वाले विजेट को लॉन्च करने के लिए, यह तरीका अपनाएं:

  1. मनचाहे Autocomplete मोड को पास करने वाला इंटेंट बनाने के लिए Autocomplete.IntentBuilder का इस्तेमाल करें. इंटेंट को पहचानने वाले अनुरोध कोड को पास करते हुए, इंटेंट को startActivityForResult को कॉल करना चाहिए.
  2. चुनी गई जगह को पाने के लिए, onActivityResult के कॉलबैक को बदलें.

ऑटोकंप्लीट इंटेंट बनाएं

नीचे दिए गए उदाहरण में, ऑटोकंप्लीट विजेट को इंटेंट के तौर पर लॉन्च करने के मकसद से, Autocomplete.IntentBuilder का इस्तेमाल करने के बारे में बताया गया है:

Java


    private static int AUTOCOMPLETE_REQUEST_CODE = 1;

    // 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);
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);

      

Kotlin


    private val AUTOCOMPLETE_REQUEST_CODE = 1

    // 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)
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE)

      

ऑटोकंप्लीट विजेट लॉन्च करने के लिए, इंटेंट का इस्तेमाल करते समय, ओवरले या फ़ुल-स्क्रीन डिसप्ले मोड में से चुना जा सकता है. नीचे दिए गए स्क्रीनशॉट में हर डिसप्ले मोड इसी क्रम में दिखता है:

ओवरले मोड में दिखाए जाने पर, ऑटोकंप्लीट विजेट, कॉल करने के यूज़र इंटरफ़ेस (यूआई) पर सुपरइंपोज़ (एक ग्राफ़िक का दूसरे पर प्लेसमेंट करना) करता है.
पहली इमेज: ओवरले मोड में ऑटोकंप्लीट विजेट
फ़ुलस्क्रीन मोड में दिखाए जाने पर, ऑटोकंप्लीट विजेट पूरी स्क्रीन पर दिखता है.
दूसरी इमेज: फ़ुलस्क्रीन मोड में ऑटोकंप्लीट विजेट

onActivityResult कॉलबैक को बदलें

अगर उपयोगकर्ता ने किसी जगह को चुन लिया है, तो इसकी सूचना पाने के लिए आपके ऐप्लिकेशन को गतिविधि के onActivityResult() की जगह, उस अनुरोध कोड की जांच करनी चाहिए जिसे आपने पास किया है. यहां इसका उदाहरण दिया गया है.

Java


@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Place place = Autocomplete.getPlaceFromIntent(data);
            Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
        } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
            // TODO: Handle the error.
            Status status = Autocomplete.getStatusFromIntent(data);
            Log.i(TAG, status.getStatusMessage());
        } else if (resultCode == RESULT_CANCELED) {
            // The user canceled the operation.
        }
        return;
    }
    super.onActivityResult(requestCode, resultCode, data);
}

      

Kotlin


override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        when (resultCode) {
            Activity.RESULT_OK -> {
                data?.let {
                    val place = Autocomplete.getPlaceFromIntent(data)
                    Log.i(TAG, "Place: ${place.name}, ${place.id}")
                }
            }
            AutocompleteActivity.RESULT_ERROR -> {
                // TODO: Handle the error.
                data?.let {
                    val status = Autocomplete.getStatusFromIntent(data)
                    Log.i(TAG, status.statusMessage ?: "")
                }
            }
            Activity.RESULT_CANCELED -> {
                // The user canceled the operation.
            }
        }
        return
    }
    super.onActivityResult(requestCode, resultCode, data)
}

      

प्रोग्राम के रूप में स्थान पूर्वानुमान प्राप्त करना

ऑटोकंप्लीट विजेट से मिलने वाले यूज़र इंटरफ़ेस (यूआई) के विकल्प के तौर पर, कस्टम सर्च यूज़र इंटरफ़ेस (यूआई) बनाया जा सकता है. ऐसा करने के लिए, आपके ऐप्लिकेशन को प्रोग्राम के हिसाब से, जगह के अनुमान मिलने चाहिए. आपका ऐप्लिकेशन, नीचे दिए गए पैरामीटर के साथ FindAutocompletePredictionsRequest ऑब्जेक्ट को पास करके, PlacesClient.findAutocompletePredictions() पर कॉल करके, अपने-आप पूरे होने वाले एपीआई से अनुमानित जगह के नामों और/या पतों की सूची पा सकता है.

  • ज़रूरी है: एक query स्ट्रिंग जिसमें उपयोगकर्ता का टाइप किया हुआ टेक्स्ट शामिल है.
  • सुझाया गया: एक AutocompleteSessionToken, जो उपयोगकर्ता की क्वेरी के साथ-साथ उसे चुनने के चरणों को, बिलिंग के मकसद से अलग-अलग सेशन में बांटता है. सेशन की शुरुआत तब होती है, जब उपयोगकर्ता क्वेरी टाइप करना शुरू करता है और खत्म करता है.
  • सुझाया गया: एक RectangularBounds ऑब्जेक्ट, जो बताता है कि अक्षांश और देशांतर नतीजों को तय किए गए इलाके तक ही सीमित करते हैं.
  • ज़रूरी नहीं: एक या दो अक्षर वाले देश कोड (ISO 3166-1 Alpha-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() को किया गया पूरा कॉल दिखाया गया है.

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(TypeFilter.ADDRESS.toString()))
        .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());
        }
    });

      

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(TypeFilter.ADDRESS.toString()))
            .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)
            }
        }

      

एपीआई, Task में FindAutocompletePredictionsResponse दिखाता है. FindAutocompletePredictionsResponse में AutocompletePrediction ऑब्जेक्ट की सूची है, जो अनुमानित जगहों को दिखाती है. अगर क्वेरी और फ़िल्टर मानदंड से जुड़ी कोई जानी-पहचानी जगह नहीं है, तो सूची खाली हो सकती है.

हर अनुमानित जगह के लिए, आप जगह के बारे में जानकारी पाने के लिए इन तरीकों का इस्तेमाल कर सकते हैं:

  • getFullText(CharacterStyle) किसी जगह के ब्यौरे का पूरा टेक्स्ट दिखाता है. यह प्राइमरी और सेकंडरी टेक्स्ट का एक कॉम्बिनेशन है. उदाहरण: "एफ़िल टावर, एवेन्यू अनातोले फ़्रांस, पैरिस, फ़्रांस". इसके अलावा, इस तरीके से, जानकारी के उन सेक्शन को हाइलाइट किया जा सकता है जो आपकी पसंद के स्टाइल से खोज से मेल खाते हैं. इसके लिए, आपको CharacterStyle का इस्तेमाल करना होगा. CharacterStyle पैरामीटर ज़रूरी नहीं है. अगर आपको हाइलाइट करने की ज़रूरत नहीं है, तो इसे शून्य पर सेट करें.
  • getPrimaryText(CharacterStyle) किसी जगह के बारे में मुख्य टेक्स्ट दिखाता है. यह आम तौर पर जगह का नाम होता है. उदाहरण: "Eiffel Tower", और "123 Pitt Street".
  • getSecondaryText(CharacterStyle) जगह की जानकारी के मुख्य टेक्स्ट को दिखाता है. उदाहरण के लिए, यह ऑटोकंप्लीट सुविधा दिखाते समय, दूसरी लाइन के तौर पर काम का होता है. उदाहरण: "Avenue Aatole France,Paris, France" और "सिडनी, न्यू साउथ वेल्स".
  • getPlaceId() अनुमानित जगह की जगह का आईडी दिखाता है. जगह का आईडी, टेक्स्ट के तौर पर एक आइडेंटिफ़ायर होता है. यह किसी जगह की पहचान करता है और उसे बाद में पाने के लिए, Place फिर से इस्तेमाल किया जा सकता है. Android के लिए Places SDK टूल में प्लेस आईडी के बारे में ज़्यादा जानकारी के लिए, जगह की जानकारी देखें. जगह के आईडी के बारे में सामान्य जानकारी के लिए, जगह के आईडी की खास जानकारी देखें.
  • getPlaceTypes() इस जगह से जुड़ी जगहों की सूची दिखाता है.
  • getDistanceMeters() इस जगह और अनुरोध में बताए गए ऑरिजिन के बीच, मीटर में सीधी लाइन दिखाता है.

सेशन के टोकन

सत्र टोकन, बिलिंग के मकसद से उपयोगकर्ता के अपने-आप पूरा होने की क्वेरी और उसे चुनने के चरणों को अलग-अलग सेशन में ग्रुप करता है. सेशन की शुरुआत तब होती है, जब उपयोगकर्ता क्वेरी टाइप करना शुरू करता है और फिर किसी जगह को चुनता है. हर सेशन में कई क्वेरी हो सकती हैं, जिसके बाद एक जगह चुनी जा सकती है. सेशन खत्म होने के बाद, टोकन काम नहीं करता है. आपके ऐप्लिकेशन को हर सेशन के लिए नया टोकन जनरेट करना होगा. हमारा सुझाव है कि सभी प्रोग्रामेटिक ऑटोकंप्लीट सेशन के लिए सेशन टोकन का इस्तेमाल करें (जब आप कोई फ़्रैगमेंट एम्बेड करते हैं या किसी इंटेंट का इस्तेमाल करके अपने-आप पूरा होने की सुविधा लॉन्च करते हैं, तो एपीआई अपने-आप इसका ध्यान रखता है).

Android के लिए Places SDK टूल, हर सेशन की पहचान करने के लिए AutocompleteSessionToken का इस्तेमाल करता है. हर नए सेशन की शुरुआत में, आपके ऐप्लिकेशन को सेशन का नया टोकन पास करना होगा. इसके बाद, जगह की जानकारी के साथ fetchPlace() को कॉल करना होगा और उपयोगकर्ता की चुनी हुई जगह की जानकारी दोबारा पाना ज़रूरी है.

सेशन टोकन के बारे में ज़्यादा जानें.

ऑटोकंप्लीट की सुविधा से जुड़े नतीजों पर पाबंदी लगाएं

किसी एक इलाके के हिसाब से, ऑटोकंप्लीट की सुविधा को पूरा किया जा सकता है और/या नतीजों को एक या एक से ज़्यादा जगहों के हिसाब से फ़िल्टर किया जा सकता है. इसके अलावा, ज़्यादा से ज़्यादा पांच देशों के लिए भी ऐसा किया जा सकता है. अपने-आप पूरा होने की गतिविधि, AutocompleteSupportFragment, और प्रोग्रामैटिक ऑटोकंप्लीट एपीआई पर ये पाबंदियां लागू की जा सकती हैं.

नतीजों को सीमित करने के लिए, ये काम करें:

  • तय किए गए इलाके में नतीजों को प्राथमिकता देने के लिए, setLocationBias() पर कॉल करें. हालांकि, हो सकता है कि चुने गए इलाके के बाहर के कुछ नतीजे दिख सकें.
  • किसी खास इलाके में नतीजे सिर्फ़ दिखाने के लिए, setLocationRestriction() पर कॉल करें (सिर्फ़ ऐसे नतीजे दिखाए जाएंगे जो तय किए गए क्षेत्र में शामिल हैं).
  • सिर्फ़ किसी खास जगह के हिसाब से नतीजे पाने के लिए, setTypesFilter() पर कॉल करें (उदाहरण के लिए, TypeFilter.ADDRESS बताने से सिर्फ़ सटीक पते वाले नतीजे मिलेंगे).
  • सिर्फ़ पांच देशों के अंदर नतीजे दिखाने के लिए, setCountries() पर कॉल करें. देशों को दो वर्णों वाले ISO 3166-1 Alpha-2 देश कोड के तौर पर पास किया जाना चाहिए.

किसी खास इलाके में भेदभाव के नतीजे

किसी खास इलाके के हिसाब से, ऑटोकंप्लीट की सुविधा का इस्तेमाल करने के लिए, setLocationBias() को RectangularBounds से कॉल करें. नीचे दिए गए कोड के उदाहरण में दिखाया गया है कि setLocationBias() को ऑस्ट्रेलिया के सिडनी इलाके में, फ़्रैगमेंट इंस्टेंस की मदद से, ऑटोकंप्लीट करने के लिए सुझाव दिया जाता है.

Java


    autocompleteFragment.setLocationBias(RectangularBounds.newInstance(
        new LatLng(-33.880490, 151.184363),
        new LatLng(-33.858754, 151.229596)));

      

Kotlin


    autocompleteFragment.setLocationBias(
        RectangularBounds.newInstance(
            LatLng(-33.880490, 151.184363),
            LatLng(-33.858754, 151.229596)
        )
    )

      

किसी खास इलाके के नतीजों पर पाबंदी लगाएं

अगर आपको ऑटोकंप्लीट की सुविधा से मिलने वाले नतीजों को किसी खास इलाके में दिखाना है, तो setLocationRestriction() को RectangularBounds पास करें. नीचे दिए गए कोड के उदाहरण में दिखाया गया है कि setLocationRestriction() को कॉल करने के लिए, फ़्रैगमेंट इंस्टेंस का इस्तेमाल, ऑस्ट्रेलिया के सिडनी इलाके में किया जाता है.

Java


    autocompleteFragment.setLocationRestriction(RectangularBounds.newInstance(
        new LatLng(-33.880490, 151.184363),
        new LatLng(-33.858754, 151.229596)));

      

Kotlin


    autocompleteFragment.setLocationRestriction(
        RectangularBounds.newInstance(
            LatLng(-33.880490, 151.184363),
            LatLng(-33.858754, 151.229596)
        )
    )

      

ध्यान दें: यह पाबंदी सिर्फ़ पूरे रास्तों पर लागू होती है. आयताकार सीमाओं के बाहर मौजूद सिंथेटिक नतीजे, रास्ते की उन सीमाओं के हिसाब से दिखाए जा सकते हैं जो जगह की पाबंदी वाले ओवरलैप होते हैं.

जगह के टाइप या टाइप कलेक्शन के हिसाब से नतीजे फ़िल्टर करें

आप ऑटोकंप्लीट सुविधा के अनुरोध पर, नतीजों पर पाबंदी लगा सकते हैं, ताकि वे सिर्फ़ किसी खास तरह की जगह दिखा सकें. जगह के प्रकार पर टेबल 1, 2, और 3 में दी गई सूची में से जगहों के प्रकार या प्रकार संग्रह का इस्तेमाल करके फ़िल्टर तय करें. अगर कुछ भी तय नहीं है, तो सभी तरह के यूआरएल दिखाए जाते हैं.

अपने-आप पूरा होने वाले नतीजों को फ़िल्टर करने के लिए, setTypesFilter() को कॉल करके फ़िल्टर सेट करें.

टाइप या टाइप कलेक्शन फ़िल्टर तय करने के लिए:

  • setTypesFilter() को कॉल करें और टेबल 1 से ज़्यादा से ज़्यादा पांच प्रकार के मान तय करें और जगह के प्रकार पर टेबल 2 दिखाएं. टाइप की वैल्यू को PlaceTypes में कॉन्सटेंट की मदद से तय किया जाता है.

  • setTypesFilter() को कॉल करें और जगह के प्रकार पर दिखाई गई टेबल 3 का टाइप कलेक्शन बताएं. कलेक्शन की वैल्यू PlaceTypes में मौजूद कॉन्सटेंट के ज़रिए तय की जाती हैं.

    अनुरोध में टेबल 3 से सिर्फ़ एक प्रकार की अनुमति है. अगर आप टेबल 3 से कोई मान तय करते हैं, तो आप टेबल 1 या टेबल 2 से कोई मान तय नहीं कर सकते. ऐसा करने से, कोई गड़बड़ी होती है.

नीचे दिया गया उदाहरण, AutocompleteSupportFragment पर setTypesFilter() को कॉल करता है और एक से ज़्यादा टाइप वैल्यू बताता है.

Java


    autocompleteFragment.setTypesFilter(Arrays.asList("landmark", "restaurant", "store"));

      

Kotlin


    autocompleteFragment.setTypesFilter(listOf("landmark", "restaurant", "store"))

      

कोड के इस उदाहरण में, AutocompleteSupportFragment को setTypesFilter() पर कॉल करने के बारे में बताने के लिए, एक फ़िल्टर सेट करने के बारे में बताया गया है. यह फ़िल्टर सिर्फ़ सटीक पते वाले नतीजे दिखाता है.

Java


    autocompleteFragment.setTypesFilter(Arrays.asList(TypeFilter.ADDRESS.toString()));

      

Kotlin


    autocompleteFragment.setTypesFilter(listOf(TypeFilter.ADDRESS.toString()))

      

यहां दिए गए कोड के उदाहरण में, IntentBuilder को setTypesFilter() पर कॉल करने के तरीके के बारे में बताने के लिए, एक फ़िल्टर सेट किया गया है. यह फ़िल्टर सिर्फ़ एक सटीक पता दिखाता है.

Java


    Intent intent = new Autocomplete.IntentBuilder(
        AutocompleteActivityMode.FULLSCREEN, fields)
        .setTypesFilter(Arrays.asList(TypeFilter.ADDRESS.toString()))
        .build(this);
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);

      

Kotlin


    val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields)
        .setTypesFilter(listOf(TypeFilter.ADDRESS.toString()))
        .build(this)
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE)

      

नतीजों को देश के हिसाब से फ़िल्टर करें

अपने-आप पूरा होने वाले नतीजों को पांच देशों तक फ़िल्टर करने के लिए, setCountries() को कॉल करके देश कोड सेट करें. इसके बाद, फ़िल्टर को फ़्रैगमेंट या इंटेंट पर भेजें. देशों को दो वर्णों वाले ISO 3166-1 Alpha-2 देश कोड के तौर पर पास किया जाना चाहिए.

दिए गए कोड के उदाहरण में, AutocompleteSupportFragment पर setCountries() को कॉल करने का तरीका दिखाया गया है, ताकि फ़िल्टर को सिर्फ़ तय किए गए देशों के नतीजों में दिखाया जा सके.

Java


    autocompleteFragment.setCountries("AU", "NZ");

      

Kotlin


    autocompleteFragment.setCountries("AU", "NZ")

      

इस्तेमाल करने की सीमा

Android के लिए Places SDK टूल सहित, Places API का आपका उपयोग प्रति दिन अधिकतम अनुरोध (QPD) तक सीमित नहीं रहता है. हालांकि, इस्तेमाल की ये सीमाएं अब भी लागू होती हैं:

  • रेट की सीमा 100 अनुरोध प्रति सेकंड (क्यूपीएस) है. इसकी गणना एक ही प्रोजेक्ट के क्रेडेंशियल का इस्तेमाल करके सभी ऐप्लिकेशन के लिए क्लाइंट-साइड और सर्वर साइड अनुरोधों के योग के रूप में की जाती है.

अपने ऐप्लिकेशन में एट्रिब्यूशन दिखाएं

  • अगर आपका ऐप्लिकेशन, प्रोग्राम की मदद से अपने-आप पूरा होने वाली सेवा का इस्तेमाल करता है, तो आपके यूज़र इंटरफ़ेस (यूआई) को 'Google की मदद से' एट्रिब्यूशन दिखाना होगा या Google के ब्रैंड वाले मैप में दिखाना होगा.
  • अगर आपका ऐप्लिकेशन, ऑटोकंप्लीट विजेट का इस्तेमाल करता है, तो कुछ और करने की ज़रूरत नहीं होती (ज़रूरी एट्रिब्यूशन डिफ़ॉल्ट रूप से दिखता है).
  • आईडी से जगह पाने के बाद, अगर आपको जगह की ज़्यादा जानकारी मिलती है और आप उसे दिखाते हैं, तो आपको तीसरे पक्ष के एट्रिब्यूशन भी दिखाने होंगे.

ज़्यादा जानकारी के लिए, एट्रिब्यूशन से जुड़े दस्तावेज़ देखें.

जगह का ऑटोकंप्लीट ऑप्टिमाइज़ेशन

इस सेक्शन में, जगह के हिसाब से अपने-आप पूरा होने वाली सेवा का ज़्यादा से ज़्यादा फ़ायदा पाने के सबसे सही तरीके बताए गए हैं.

यहां कुछ सामान्य दिशा-निर्देश दिए गए हैं:

  • चालू यूज़र इंटरफ़ेस को डेवलप करने का सबसे तेज़ तरीका है, JavaScript JavaScript एपीआई ऑटोकंप्लीट विजेट, Android के लिए Places SDK टूल ऑटोकंप्लीट विजेट या iOS के लिए Places SDK टूल की मदद से ऑटोकंप्लीट यूज़र इंटरफ़ेस (यूआई) कंट्रोल करना
  • शुरू से ही ज़रूरी प्लेस ऑटोकंप्लीट डेटा फ़ील्ड को समझने की कोशिश करें.
  • जगह का मापदंड तय करना और जगह की पाबंदी वाले फ़ील्ड ज़रूरी नहीं हैं. हालांकि, ऑटोकंप्लीट की सुविधा की परफ़ॉर्मेंस पर इनका काफ़ी असर पड़ सकता है.
  • गड़बड़ी को हैंडल करने की सुविधा का इस्तेमाल करें, ताकि यह पक्का किया जा सके कि एपीआई से गड़बड़ी मिलने पर आपका ऐप्लिकेशन सही तरीके से खराब हो जाए.
  • पक्का करें कि आपका ऐप्लिकेशन कोई विकल्प न चुने जाने पर हैंडल करता हो और उपयोगकर्ताओं को आगे बढ़ने का तरीका ऑफ़र करता हो.

लागत ऑप्टिमाइज़ेशन के सबसे सही तरीके

मूल लागत ऑप्टिमाइज़ेशन

प्लेस ऑटोकंप्लीट सेवा का इस्तेमाल करने की लागत को ऑप्टिमाइज़ करने के लिए, जगह की जानकारी और प्लेस ऑटोकंप्लीट विजेट में फ़ील्ड मास्क का इस्तेमाल करें. ऐसा करके, सिर्फ़ उन जगह के डेटा फ़ील्ड दिखाए जा सकते हैं जिनकी आपको ज़रूरत है.

लागत का बेहतर ऑप्टिमाइज़ेशन

हर अनुरोध की कीमत को ऐक्सेस करने के लिए, 'जगह की जानकारी अपने-आप पूरा होना' सुविधा को प्रोग्राम के हिसाब से लागू करें. इससे, जगह की जानकारी के बजाय, चुनी गई जगह के लिए जियोकोडिंग एपीआई के नतीजे पाने का अनुरोध किया जा सकता है. अगर नीचे दी गई दोनों शर्तें पूरी होती हैं, तो जियोकोडिंग एपीआई के साथ जोड़े गए हर अनुरोध की कीमत, हर सेशन (सेशन-आधारित) की कीमत से ज़्यादा किफ़ायती होती है:

  • अगर आपको उपयोगकर्ता की चुनी हुई जगह के सिर्फ़ अक्षांश/देशांतर या पते की ज़रूरत है, तो जियोकोडिंग एपीआई यह जानकारी, 'जगह की जानकारी' कॉल से कम समय के लिए देता है.
  • अगर उपयोगकर्ता, अपने-आप पूरे होने वाले चार अनुरोधों के औसत या उससे कम के सुझावों के तहत, अपने-आप पूरा होने के अनुमान को चुनते हैं, तो हर अनुरोध की कीमत के मुकाबले, हर अनुरोध की कीमत ज़्यादा किफ़ायती हो सकती है.
अपनी ज़रूरतों के हिसाब से, ऑटोकंप्लीट की सुविधा लागू करने की सुविधा चुनने में मदद पाने के लिए, वह टैब चुनें जो आपके सवाल के जवाब से जुड़ा हो.

क्या आपके ऐप्लिकेशन में चुने गए सुझाव के पते और अक्षांश/देशांतर के अलावा, किसी और जानकारी की ज़रूरत है?

हां, और जानकारी चाहिए

जगह की जानकारी के साथ, सेशन के आधार पर जगह के अपने-आप पूरा होने की सुविधा का इस्तेमाल करें.
आपके आवेदन में, स्थान का नाम, कारोबार की स्थिति या उसके खुले होने के समय जैसी जगह की जानकारी की ज़रूरत होती है. इसलिए, 'जगह की जानकारी अपने-आप पूरा होना' को लागू करने के लिए, सेशन टोकन (प्रोग्रामिंग या JavaScript, Android या iOS विजेट) का इस्तेमाल करें. इससे आपको कुल $0.017 हर सेशन के लिए और लागू होने वाले जगहों के डेटा के SKU मिलेंगे

विजेट लागू करना
सेशन मैनेजमेंट,
JavaScript, Android या iOS विजेट में अपने-आप पहले से मौजूद होता है. इसमें चुने गए सुझावों के लिए, 'जगह की जानकारी अपने-आप पूरी होना' अनुरोध और 'जगह की जानकारी' का अनुरोध शामिल है. fields पैरामीटर डालना न भूलें, ताकि यह पक्का किया जा सके कि आपने सिर्फ़ उन जगहों के डेटा फ़ील्ड के लिए अनुरोध किया है जिनकी आपको ज़रूरत है.

प्रोग्रामैटिक तरीके से लागू करना
अपने-आप पूरे होने वाले अनुरोधों के लिए, सेशन टोकन का इस्तेमाल करें. चुने गए अनुमान के बारे में जगह की जानकारी का अनुरोध करते समय, ये पैरामीटर शामिल करें:

  1. जगह के अपने-आप पूरा होने वाले जवाब की जगह का आईडी
  2. प्लेस ऑटोकंप्लीट अनुरोध में इस्तेमाल किया गया सेशन टोकन
  3. आपके लिए ज़रूरी जगह के डेटा फ़ील्ड के बारे में बताने वाला fields पैरामीटर

नहीं, सिर्फ़ पता और जगह की जानकारी चाहिए

आपके स्थान की ऑटोकंप्लीट सुविधा की परफ़ॉर्मेंस के आधार पर, आपके ऐप्लिकेशन के लिए जगह की जानकारी की तुलना में, जियोकोडिंग एपीआई ज़्यादा किफ़ायती विकल्प हो सकता है. हर ऐप्लिकेशन की अपने-आप पूरा होने की क्षमता, इस बात के हिसाब से अलग-अलग हो सकती है कि उपयोगकर्ता क्या डाल रहे हैं, ऐप्लिकेशन कहां इस्तेमाल किया जा रहा है, और परफ़ॉर्मेंस ऑप्टिमाइज़ेशन के सबसे सही तरीके लागू किए गए हैं या नहीं.

इस सवाल का जवाब देने के लिए, अपने ऐप्लिकेशन में, ऑटोकंप्लीट सुविधा की मदद से सुझाव देने की सुविधा चुनने से पहले, किसी उपयोगकर्ता के औसतन कितने वर्ण टाइप करें, इसका विश्लेषण करें.

क्या आपके उपयोगकर्ता औसतन चार या उससे कम अनुरोधों में, जगह के हिसाब से अपने-आप सुझाव की सुविधा चुनने का सुझाव चुनते हैं?

हां

सेशन के लिए, ऑटोकंप्लीट की सुविधा को प्रोग्राम के हिसाब से, सेशन वाले टोकन के बिना लागू करें. साथ ही, चुने गए जगह के अनुमान के लिए, जियोकोडिंग एपीआई को कॉल करें.
भौगोलिक कोडिंग एपीआई, हर अनुरोध के लिए 0.005 डॉलर में पते और अक्षांश/देशांतर निर्देशांक उपलब्ध कराता है. जगह के हिसाब से अपने-आप पूरा होने की सुविधा - हर अनुरोध के लिए अनुरोध की लागत 0.01132 डॉलर है, ताकि चार अनुरोधों की कुल लागत और जगह की जानकारी के लिए चुने गए अनुमान के बारे में जियोकोडिंग एपीआई कॉल की लागत 0.01632 डॉलर हो, जो हर सेशन के लिए, ऑटोकंप्लीट की कीमत 0.017 डॉलर से कम है.1

परफ़ॉर्मेंस के सबसे सही तरीकों का इस्तेमाल करें, ताकि आपके उपयोगकर्ताओं को वे सुझाव मिल सकें जिन्हें वे कम वर्णों में ढूंढ रहे हैं.

नहीं

जगह की जानकारी के साथ, सेशन के आधार पर जगह के अपने-आप पूरा होने की सुविधा का इस्तेमाल करें.
जगह के हिसाब से अपने-आप सुझाव देने की सुविधा का इस्तेमाल करने से पहले, आपको उपयोगकर्ताओं से औसत संख्या में जो अनुरोध करने हैं उनकी संख्या, हर सेशन की कीमत से ज़्यादा होती है. इसलिए, आपके कारोबार की जगह के लिए ऑटोकंप्लीट की सुविधा चालू करने के अनुरोध में, जगह के हिसाब से अपने-आप पूरे होने वाले अनुरोधों और उससे जुड़ी जगहों की जानकारी के अनुरोध के लिए, 0.017 डॉलर हर सेशन की कीमत का इस्तेमाल होना चाहिए.1

विजेट लागू करना
सेशन मैनेजमेंट, JavaScript, Android या iOS विजेट में अपने-आप पहले से मौजूद होता है. इसमें चुने गए सुझावों के लिए, 'जगह की जानकारी अपने-आप पूरी होना' अनुरोध और 'जगह की जानकारी' का अनुरोध शामिल है. fields पैरामीटर डालना न भूलें, ताकि यह पक्का किया जा सके कि सिर्फ़ बुनियादी डेटा फ़ील्ड के लिए अनुरोध किया जा रहा है.

प्रोग्रामैटिक तरीके से लागू करना
अपने-आप पूरे होने वाले अनुरोधों के लिए, सेशन टोकन का इस्तेमाल करें. चुने गए अनुमान के बारे में जगह की जानकारी का अनुरोध करते समय, ये पैरामीटर शामिल करें:

  1. जगह के अपने-आप पूरा होने वाले जवाब की जगह का आईडी
  2. प्लेस ऑटोकंप्लीट अनुरोध में इस्तेमाल किया गया सेशन टोकन
  3. fields पैरामीटर में पते और ज्यामिति जैसे बुनियादी डेटा वाले फ़ील्ड शामिल हैं

जगह के नाम के अपने-आप पूरा होने के अनुरोधों में देरी करने पर विचार करें
उपयोगकर्ता के पहले तीन या चार वर्णों में टाइप करने के बाद ही, अपने-आप पूरा होने के अनुरोध में देरी जैसी रणनीतियों का इस्तेमाल किया जा सकता है. उदाहरण के लिए, उपयोगकर्ता के तीसरे वर्ण टाइप करने के बाद, हर वर्ण के लिए, जगह के हिसाब से अपने-आप पूरा होने के अनुरोध करने का मतलब है कि अगर उपयोगकर्ता सात वर्ण टाइप करता है, तो जियोकोडिंग एपीआई से किया गया कोई अनुरोध चुना जाता है. ऐसे में, कुल लागत 0.01632 (4 * $0.00283 हर अनुरोध के लिए ऑटोकंप्लीट + 0.005 जियोकोडिंग) होगी.1

अगर देरी से आने वाले अनुरोधों से आपको चार औसत से कम प्रोग्रैम्ड तरीके से अनुरोध मिलता है, तो जियोकोडिंग एपीआई के साथ परफ़ॉर्म करने वाले प्लेस ऑटोकंप्लीट सुविधा को लागू करने के दिशा-निर्देशों का पालन करें. ध्यान दें कि जो उपयोगकर्ता हर नए कीस्ट्रोक के साथ अनुमान देखने की उम्मीद करते हैं, उन्हें देरी करने वाले अनुरोधों को इंतज़ार का समय माना जा सकता है.

परफ़ॉर्मेंस के सबसे सही तरीकों का इस्तेमाल करें, ताकि आपके उपयोगकर्ता यह अनुमान लगाने में मदद कर सकें कि वे कम वर्णों में क्या खोज रहे हैं.


  1. यहां दी गई कीमतें डॉलर में हैं. कीमत की पूरी जानकारी के लिए, कृपया Google Maps Platform की बिलिंग पेज पर जाएं.

परफ़ॉर्मेंस के सबसे सही तरीके

निम्न दिशा-निर्देश स्थान ऑटोकंप्लीट प्रदर्शन को अनुकूलित करने के तरीके बताते हैं:

  • अपने देश के हिसाब से लागू किए गए 'अपने-आप पूरा होना' सेटिंग में देश से जुड़ी पाबंदियां, जगह के लिए और (प्रोग्रामिंग लागू करने के लिए) प्राथमिकता जोड़ें. विजेट के लिए, भाषा की प्राथमिकता सेट करने की ज़रूरत नहीं होती, क्योंकि वे उपयोगकर्ता के ब्राउज़र या मोबाइल डिवाइस से भाषा की पसंद को चुनते हैं.
  • अगर स्थान ऑटोकंप्लीट के साथ मैप भी है, तो आप जगह की जानकारी को मैप व्यूपोर्ट के आधार पर दिखा सकते हैं.
  • ऐसी स्थिति में जब कोई उपयोगकर्ता अपने-आप पूरा होने वाले सुझावों में से किसी एक को नहीं चुनता है, क्योंकि आम तौर पर उनमें से कोई भी सुझाव सही नहीं होता है, तो ज़्यादा काम के नतीजे पाने के लिए, मूल उपयोगकर्ता के इनपुट का फिर से इस्तेमाल किया जा सकता है:
    • अगर आपको लगता है कि उपयोगकर्ता को सिर्फ़ पते की जानकारी देनी है, तो जियोकोडिंग एपीआई को कॉल करते समय, मूल उपयोगकर्ता के इनपुट का फिर से इस्तेमाल करें.
    • अगर आपको लगता है कि उपयोगकर्ता किसी खास जगह के लिए, नाम या पते से जुड़ी क्वेरी डाल सकता है, तो जगह का अनुरोध ढूंढें का इस्तेमाल करें. अगर नतीजों को सिर्फ़ किसी खास इलाके में दिखाने की उम्मीद की जाती है, तो जगह के लिए मापदंड का इस्तेमाल करें.
    जियोकोडिंग एपीआई का इस्तेमाल कम करने पर, ये काम किए जा सकते हैं:
    • उपयोगकर्ता उन देशों में उप-पते डाल रहे हैं जहां जगह के हिसाब से पते को अपने-आप पूरा करने की सुविधा अधूरी है, जैसे कि चेकिया, एस्टोनिया, और लिथुआनिया. उदाहरण के लिए, चेक के पते "Stroupešnického 3191/17, प्राहा" को जगह के हिसाब से ऑटोकंप्लीट की सुविधा में आंशिक अनुमान मिलता है.
    • उपयोगकर्ता, न्यूयॉर्क शहर में "23-30 29वीं सेंट, क्वींस" या हवाई के काउई द्वीप में "47-380 Kaehamaha Hwy, Kaneohe" जैसे सड़क के सेगमेंट प्रीफ़िक्स से पते डालते हैं.

समस्या हल करना

हालांकि, कई तरह की गड़बड़ियां हो सकती हैं, लेकिन आपके ऐप्लिकेशन में ज़्यादातर गड़बड़ियां, कॉन्फ़िगरेशन से जुड़ी गड़बड़ियों की वजह से होती हैं. उदाहरण के लिए, गलत एपीआई कुंजी का इस्तेमाल किया गया या एपीआई कुंजी को गलत तरीके से कॉन्फ़िगर किया गया था या कोटा की गड़बड़ियां, आपके ऐप्लिकेशन की तय सीमा से ज़्यादा हो गई हैं. कोटा के बारे में ज़्यादा जानकारी के लिए इस्तेमाल की सीमाएं देखें.

ऑटोकंप्लीट कंट्रोल की सुविधा का इस्तेमाल करते समय होने वाली गड़बड़ियां, onActivityResult() कॉलबैक में दिखती हैं. नतीजे का स्टेटस मैसेज पाने के लिए, Autocomplete.getStatus() को कॉल करें.