फटाफट और पुष्टि किए गए साइन अप को लागू करने की गाइड

खास जानकारी

वेब iOS एपीआई

Google Maps Platform, वेब (JS, TS), Android, और iOS के लिए उपलब्ध है. यह जगहों, रास्तों, और दूरी के बारे में जानकारी पाने के लिए, वेब सेवाओं के एपीआई भी उपलब्ध कराता है. इस गाइड में दिए गए सैंपल एक प्लैटफ़ॉर्म के लिए हैं. हालांकि, दस्तावेज़ के लिंक भी दिए गए हैं, ताकि इन्हें अन्य प्लैटफ़ॉर्म पर लागू किया जा सके.

इसे अभी बनाएं!

Google Cloud Console में मौजूद क्विक बिल्डर की मदद से, पते का फ़ॉर्म अपने-आप पूरा होने की सुविधा मिलती है. ऐसा इंटरैक्टिव यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके किया जाता है जो आपके लिए JavaScript कोड जनरेट करता है.

उपयोगकर्ता अब डिजिटल दुनिया में रहने और काम करने की आदत डाल चुके हैं. जिसमें सुविधा, रफ़्तार, और सुरक्षा बुनियादी उम्मीदें हैं. जब लोग क्रेडिट कार्ड, बैंक खाता या क़र्ज़ जैसी चीज़ों के लिए आवेदन करते हैं, तो वे उम्मीद करते हैं कि उनकी यह प्रक्रिया तेज़ और आसान होगी.

जितने ज़्यादा उपयोगकर्ताओं को डुप्लीकेट डेटा टाइप या डालना होगा, उन्हें ग्राहक के तौर पर बनाए रखने की संभावना उतनी ही कम होगी. साइन-अप करने का आसान, तेज़, और पुष्टि वाला अनुभव बनाने से, उपयोगकर्ता अनुभव बेहतर होगा. साथ ही, उपयोगकर्ताओं को अपनी साइट पर जोड़े रखने में भी आपको मदद मिलेगी.

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

यह विषय Google Maps Platform पर तुरंत और पुष्टि किए गए साइन-अप का अनुभव देने के लिए लागू करने के दिशा-निर्देश देता है. इस बात की संभावना सबसे ज़्यादा होती है कि उपयोगकर्ता मोबाइल डिवाइस पर साइन अप करेंगे. इसलिए, इस विषय में लागू करने के ज़्यादातर उदाहरण Android पर फ़ोकस करते हैं. (पूरा सैंपल सोर्स यहां देखा जा सकता है). इसी तरह के काम करने के लिए, iOS SDK टूल का इस्तेमाल भी किया जा सकता है.

नीचे दिया गया डायग्राम, समाधान को बनाने में शामिल मुख्य एपीआई को दिखाता है. इसे बड़ा करने के लिए क्लिक करें.

एपीआई चालू करना

इन सुझावों को लागू करने के लिए, आपको Google Cloud Console में इन एपीआई को चालू करना होगा:

सेटअप के बारे में ज़्यादा जानकारी के लिए, Google Maps Platform का इस्तेमाल शुरू करना देखें.

सबसे सही तरीके वाले सेक्शन

इस विषय में, नीचे दिए गए तरीके और कस्टमाइज़ेशन के बारे में बात की जाएगी.

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

इनपुट फ़ील्ड में ऑटोकंप्लीट की सुविधा जोड़ी जा रही है

इस उदाहरण में, इनका इस्तेमाल किया गया है: Android के लिए Places SDK टूल ये सुविधाएं भी उपलब्ध हैं: iOS | JavaScript

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

  • पता डालने से जुड़ी गड़बड़ियां कम करें.
  • साइन-अप करने की प्रोसेस में शामिल चरणों की संख्या कम करें.
  • मोबाइल या पहने जाने वाले डिवाइसों पर पता डालना आसान बनाएं.
  • कीस्ट्रोक और ग्राहक को साइन अप करने में लगने वाले कुल समय को ज़रूरत के हिसाब से कम करें.

जब कोई उपयोगकर्ता ऑटोकंप्लीट एंट्री बॉक्स चुनता है और लिखना शुरू करता है, तो पते के सुझावों की एक सूची दिखती है.

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

वीडियो: जगह के ऑटोकंप्लीट की सुविधा की मदद से, पते के फ़ॉर्म को बेहतर बनाएं

पते के फ़ॉर्म

Android

iOS

वेब

Google Maps Platform मोबाइल प्लैटफ़ॉर्म और वेब के लिए एक 'जगह के हिसाब से ऑटोकंप्लीट' विजेट देता है. यह विजेट, पिछले इमेज में दिखाया गया है. इसमें, खोज के लिए डायलॉग बॉक्स पहले से मौजूद होता है. इसमें अपने-आप पूरा होने की सुविधा मौजूद होती है. इसे जगह के स्कोप वाली खोज के हिसाब से ऑप्टिमाइज़ भी किया जा सकता है.

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

स्थान ऑटोकंप्लीट विजेट जोड़ना

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

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

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

                        // Write a method to read the address components from the Place
                        // and populate the form with the address components
                        Log.d(TAG, "Place: " + place.getAddressComponents());
                        fillInAddress(place);
                    }
                } else if (result.getResultCode() == Activity.RESULT_CANCELED) {
                    // The user canceled the operation.
                    Log.i(TAG, "User canceled autocomplete");
                }
            });

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

    private void startAutocompleteIntent() {

        // 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.ADDRESS_COMPONENTS,
                Place.Field.LAT_LNG, Place.Field.VIEWPORT);

        // Build the autocomplete intent with field, country, and type filters applied
        Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY, fields)
                .setCountries(Arrays.asList("US"))
                .setTypesFilter(new ArrayList<String>() {{
                    add(TypeFilter.ADDRESS.toString().toLowerCase());
                }})
                .build(this);
        startAutocomplete.launch(intent);
    }

जगह के अपने-आप पूरे होने की सुविधा के ज़रिए मिलने वाले पते को मैनेज करना

ActivityResultLauncher को पहले तय करने से यह भी तय होता है कि कॉलबैक में गतिविधि का नतीजा वापस आने पर क्या किया जाना चाहिए. अगर उपयोगकर्ता ने कोई सुझाव चुना है, तो उसे नतीजे के ऑब्जेक्ट में मौजूद इंटेंट में दिखाया जाएगा. इंटेंट Autocomplete.IntentBuilder से बनाया गया था, इसलिए Autocomplete.getPlaceFromIntent() तरीका इससे प्लेस ऑब्जेक्ट निकाल सकता है.

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

                        // Write a method to read the address components from the Place
                        // and populate the form with the address components
                        Log.d(TAG, "Place: " + place.getAddressComponents());
                        fillInAddress(place);
                    }
                } else if (result.getResultCode() == Activity.RESULT_CANCELED) {
                    // The user canceled the operation.
                    Log.i(TAG, "User canceled autocomplete");
                }
            });

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

मैन्युअल रूप से डाले गए पते के बजाय, अनुमान से पता डेटा कैप्चर करने से पता सटीक होता है. इससे यह पक्का करने में मदद मिलती है कि पता सही है और उसे डिलीवर किया जा सकता है. साथ ही, इससे उपयोगकर्ता के कीस्ट्रोक कम होते हैं.

स्थान ऑटोकंप्लीट लागू करते समय ध्यान रखने वाली बातें

ऑटोकंप्लीट की सुविधा में ऐसे कई विकल्प हैं जिनकी मदद से, विजेट के साथ-साथ अन्य सुविधाओं का भी इस्तेमाल किया जा सकता है. किसी जगह को सही तरीके से मैच करने के लिए, कई तरह की सेवाओं का इस्तेमाल किया जा सकता है.

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

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

    • किसी एरिया का दायरा सीमित करने के लिए, RectangularBounds का इस्तेमाल करें. साथ ही, यह पक्का करने के लिए setLocationRestriction() का इस्तेमाल करें कि सिर्फ़ उन जगहों के पते दिखें.

    • कुछ देशों में जवाबों को सीमित करने के लिए, setCountries() का इस्तेमाल करें.

  • अगर मैच करने से कुछ फ़ील्ड छूट जाते हैं, तो फ़ील्ड में बदलाव किए जा सकते हैं. साथ ही, ज़रूरत पड़ने पर ग्राहकों को पता अपडेट करने की अनुमति दें. ऑटोकंप्लीट की सुविधा से दिखाए जाने वाले ज़्यादातर पतों में, अपार्टमेंट, सुइट या यूनिट नंबर जैसे सब-प्रिमाइस नंबर नहीं होते. इसलिए, ज़रूरत पड़ने पर उपयोगकर्ताओं को यह जानकारी भरने के लिए बढ़ावा देने के लिए, फ़ोकस को पते की दूसरी लाइन पर ले जाया जा सकता है.

पते की विज़ुअल पुष्टि करना

इस उदाहरण में, इनका इस्तेमाल किया गया है: Android के लिए Maps SDK टूल ये सुविधाएं भी उपलब्ध हैं: iOS | JavaScript

पता डालने पर, उपयोगकर्ताओं को मैप पर दिखने वाले पते की साफ़ तौर पर पुष्टि करें. इससे उपयोगकर्ताओं को पता चलता है कि पता सही है.

यहां दिए गए डायग्राम में पते के नीचे एक मैप दिखाया गया है. इसमें पते पर पिन डाला गया है.

नीचे दिया गया उदाहरण, Android में मैप जोड़ने के बुनियादी तरीके का पालन करता है. ज़्यादा जानकारी के लिए दस्तावेज़ देखें.

SupportMapFragment को जोड़ा जा रहा है

सबसे पहले, लेआउट एक्सएमएल फ़ाइल में SupportMapFragment फ़्रैगमेंट जोड़ें.

    <fragment
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:id="@+id/confirmation_map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

इसके बाद, अगर फ़्रैगमेंट अभी तक मौजूद नहीं है, तो उसे प्रोग्राम के ज़रिए जोड़ें.

    private void showMap(Place place) {
        coordinates = place.getLatLng();

        // It isn't possible to set a fragment's id programmatically so we set a tag instead and
        // search for it using that.
        mapFragment = (SupportMapFragment)
                getSupportFragmentManager().findFragmentByTag(MAP_FRAGMENT_TAG);

        // We only create a fragment if it doesn't already exist.
        if (mapFragment == null) {
            mapPanel = ((ViewStub) findViewById(R.id.stub_map)).inflate();
            GoogleMapOptions mapOptions = new GoogleMapOptions();
            mapOptions.mapToolbarEnabled(false);

            // To programmatically add the map, we first create a SupportMapFragment.
            mapFragment = SupportMapFragment.newInstance(mapOptions);

            // Then we add it using a FragmentTransaction.
            getSupportFragmentManager()
                    .beginTransaction()
                    .add(R.id.confirmation_map, mapFragment, MAP_FRAGMENT_TAG)
                    .commit();
            mapFragment.getMapAsync(this);
        } else {
            updateMap(coordinates);
        }
    }

फ़्रैगमेंट के लिए हैंडल पाना और कॉलबैक रजिस्टर करना

  1. फ़्रैगमेंट का हैंडल पाने के लिए, FragmentManager.findFragmentById तरीके को कॉल करें और उसे अपनी लेआउट फ़ाइल में फ़्रैगमेंट का संसाधन आईडी पास करें. अगर आपने फ़्रैगमेंट को डाइनैमिक तरीके से जोड़ा है, तो यह चरण छोड़ दें, क्योंकि आपने हैंडल को पहले ही वापस ले लिया है.

  2. फ़्रैगमेंट पर कॉलबैक सेट करने के लिए, getMapAsync तरीके को कॉल करें.

उदाहरण के लिए, अगर आपने फ़्रैगमेंट को स्टैटिक तरीके से जोड़ा है:

Kotlin



val mapFragment = supportFragmentManager
    .findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)

      

Java


SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
    .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

      

मैप में मार्कर बनाना और जोड़ना

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

    @Override
    public void onMapReady(@NonNull GoogleMap googleMap) {
        map = googleMap;
        try {
            // Customise the styling of the base map using a JSON object defined
            // in a string resource.
            boolean success = map.setMapStyle(
                    MapStyleOptions.loadRawResourceStyle(this, R.raw.style_json));

            if (!success) {
                Log.e(TAG, "Style parsing failed.");
            }
        } catch (Resources.NotFoundException e) {
            Log.e(TAG, "Can't find style. Error: ", e);
        }
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 15f));
        marker = map.addMarker(new MarkerOptions().position(coordinates));
    }

(पूरा कोड सैंपल देखें)

मैप नियंत्रण अक्षम करना

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

उपयोगकर्ता के डाले गए पते की तुलना डिवाइस की जगह की जानकारी से करना

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

पते की जांच करने के लिए सुरक्षा सबसे अहम है, खास तौर पर डिजिटल साइन-अप प्रोसेस के दौरान. इस सेक्शन में, पुष्टि के लिए दिशा-निर्देश और सैंपल के तौर पर दी गई जानकारी दी गई है. इनकी मदद से, यह पता लगाया जाता है कि साइन अप के दौरान किसी उपयोगकर्ता की जगह की जानकारी, उस पते से मेल खाती है या नहीं जिसे वह उपयोगकर्ता अपने पते के तौर पर डालता है.

डाले गए पते की तुलना डिवाइस की जगह से करने की प्रक्रिया में ये चरण शामिल हैं:

  1. उपयोगकर्ता के डाले गए पते को भौगोलिक निर्देशांक में बदलना.
  2. उपयोगकर्ता से उसके डिवाइस की जगह की जानकारी पाने की अनुमति मांगना.
  3. डाले गए पते और डिवाइस की जगह के बीच की दूरी का हिसाब लगाया जा रहा है. इससे यह तय किया जा सकता है कि किसी पते की जगह की जानकारी को मैच करने के लिए, कितनी दूरी तय की जा सकती है.

नीचे दिया गया डायग्राम, उपयोगकर्ताओं से उनकी मौजूदा जगह के पते की तुलना करने का तरीका दिखाता है.

उपयोगकर्ता के डाले गए पते को भौगोलिक निर्देशांक में बदलना

इस उदाहरण में, इनका इस्तेमाल किया गया है: Android के लिए Places SDK टूल यह भी उपलब्ध है: iOS | JavaScript | जियोकोडिंग एपीआई

जब उपयोगकर्ता पते की पुष्टि करने के लिए सहमत हो जाते हैं (पिछले चित्र में "पुष्टि करें कि मैं अब हूं" को स्पर्श करके), मौजूदा स्थान के साथ पते की तुलना करने का पहला चरण डाले गए पते को भौगोलिक निर्देशांक में बदलना है.

अगर उपयोगकर्ता ने ऑटोकंप्लीट की सुविधा की मदद से अपना पता चुना है, तो पक्का करें कि आपने अपने-आप पूरे होने वाले विजेट के विजेट को जोड़ना कोड स्निपेट में दिखाए गए, 'ऑटोकंप्लीट' फ़ील्ड की सूची में Place.Field.LAT_LNG के लिए अनुरोध किया हो. साथ ही, चुने गए पते के भौगोलिक कोऑर्डिनेट पाने के लिए, तरीका Place.getLatLng() का इस्तेमाल करें.

coordinates = place.getLatLng();

अगर उपयोगकर्ता ने मैन्युअल रूप से अपना पता डाला है या जगह के अपने-आप पूरे होने की सुविधा के बाद फ़ील्ड में बदलाव किए हैं, तो उस पते से जुड़े निर्देशांक देखने के लिए Android Geocoder सेवा या Geocoding API का इस्तेमाल करें.

उदाहरण

https://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%2BParkway%2C%20Mountain%20View%2C%20CA%2094043&key=YOUR_API_KEY

पक्का करें कि Geocoding API को कॉल करने के लिए, यूआरएल को कोड में बदला गया हो.

यूआरएल को कोड में बदलने का क्विक रेफ़रंस: %20 = स्पेस, %2B = + (प्लस), %2C = , (कॉमा)

उपयोगकर्ता से उसके डिवाइस की जगह की जानकारी पाने के लिए अनुमति मांगना

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

  • सटीक लेवल (ACCESS_FINE_LOCATION) पर, एक बार दिए जाने वाले अनुदान के तौर पर, जगह की जानकारी की अनुमति का अनुरोध करें.

  • अगर उपयोगकर्ता जगह की जानकारी का ऐक्सेस देता है, तो उपयोगकर्ता की जगह की जानकारी पाएं.

  • अगर उपयोगकर्ता, जगह की जानकारी का ऐक्सेस अस्वीकार कर देता है, तो अस्वीकार किए जाने पर कार्रवाई करें. उदाहरण के लिए, इस तरह का मैसेज दिखाया जा सकता है (यह मानते हुए कि उपयोगकर्ता की मौजूदा जगह की जानकारी सेव नहीं की जा रही है):

    "अगर ऐप्लिकेशन को अपनी जगह की सटीक जानकारी नहीं दी जाती है, तो खाता चालू करने के लिए आपको डाक से पुष्टि करनी होगी. [ठीक है]"

यहां दिए गए डायग्राम में, उपयोगकर्ताओं को डिवाइस की जगह की जानकारी पाने की अनुमति देने के लिए, प्रॉम्प्ट का एक उदाहरण दिया गया है.

जगह की जानकारी की अनुमति देखने के लिए, एक ऐक्टिविटी लॉन्चर तैयार करें जो ActivityResultLauncher के साथ लॉन्च की गई गतिविधि का नतीजा सुन सकेगा. नतीजे के कॉलबैक में एक स्ट्रिंग होगी, जो यह बताएगी कि उपयोगकर्ता ने अनुरोध की अनुमति दी है या नहीं.

    // Register the permissions callback, which handles the user's response to the
    // system permissions dialog. Save the return value, an instance of
    // ActivityResultLauncher, as an instance variable.
    private final ActivityResultLauncher<String> requestPermissionLauncher =
            registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
                if (isGranted) {
                    // Since ACCESS_FINE_LOCATION is the only permission in this sample,
                    // run the location comparison task once permission is granted.
                    // Otherwise, check which permission is granted.
                    getAndCompareLocations();
                } else {
                    // Fallback behavior if user denies permission
                    Log.d(TAG, "User denied permission");
                }
            });

इसके बाद, देखें कि क्या ऐप्लिकेशन के पास पहले से ACCESS_FINE_LOCATION की अनुमति है. अगर ऐसा नहीं होता है, तो पिछले चरण में बताए गए लॉन्चर का इस्तेमाल करके, अनुमति के अनुरोध की गतिविधि लॉन्च करके, उपयोगकर्ता से इसके लिए कहें.

    private void checkLocationPermissions() {
        if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            getAndCompareLocations();
        } else {
            requestPermissionLauncher.launch(
                    ACCESS_FINE_LOCATION);
        }
    }

ACCESS_FINE_LOCATION की अनुमति मिलने के बाद, डिवाइस की जगह की आखिरी जानकारी पाने के लिए, फ़्यूज़्ड लोकेशन कंपनी का इस्तेमाल करें और उससे LatLng ऑब्जेक्ट बनाएं.

        FusedLocationProviderClient fusedLocationClient =
                LocationServices.getFusedLocationProviderClient(this);

        fusedLocationClient.getLastLocation()
                .addOnSuccessListener(this, location -> {
                    // Got last known location. In some rare situations this can be null.
                    if (location == null) {
                        return;
                    }

                    deviceLocation = new LatLng(location.getLatitude(), location.getLongitude());
                    // ...
                });
    }

डाले गए पते और डिवाइस की जगह के बीच की दूरी का हिसाब लगाया जा रहा है

दो अक्षांश/देशांतर निर्देशांकों के बीच की दूरी तय करने के लिए गणित का इस्तेमाल करें (पता और डिवाइस की जगह डालें). Android यूटिलिटी लाइब्रेरी के लिए Maps SDK टूल में मौजूद ओपन सोर्स में, Earth पर दो पॉइंट के बीच की गोलीय दूरी का हिसाब लगाने के कुछ आसान तरीके हैं.

सबसे पहले, Android यूटिलिटी लाइब्रेरी के लिए Maps SDK टूल इंस्टॉल करें. इसके लिए, अपने ऐप्लिकेशन की build.gradle फ़ाइल पर यह डिपेंडेंसी जोड़ें:

dependencies {


    // Utility Library for Maps SDK for Android
    // You do not need to add a separate dependency for the Maps SDK for Android
    // since this library builds in the compatible version of the Maps SDK.
    implementation 'com.google.maps.android:android-maps-utils:3.8.0'
}

इसके बाद, आखिरी बार उस डिवाइस की जगह की जानकारी का पता लगाने के बाद गतिविधि फ़ाइल में वापस आएं और इन दोनों जगहों को "मिलता-जुलता" मानकर मीटर में एक दायरा तय करें. दायरा इतना बड़ा होना चाहिए कि उसमें जीपीएस के सटीक होने में आने वाले उतार-चढ़ाव और उपयोगकर्ता के डाले गए पते में मौजूद जगह के साइज़ को ध्यान में रखा जा सके. उदाहरण के लिए:

private static final double acceptableProximity = 150;

इसके बाद, डिवाइस की जगह और उपयोगकर्ता के डाले गए पते के बीच की दूरी का हिसाब लगाने के लिए, यूटिलिटी लाइब्रेरी वाले तरीके computeDistanceBetween() का इस्तेमाल करें. अगर दूरी ऊपर बताए गए दायरे में आती है, तो मेल खाने वाली जगहों पर ध्यान दें.

// Use the computeDistanceBetween function in the Maps SDK for Android Utility Library
// to use spherical geometry to compute the distance between two Lat/Lng points.
double distanceInMeters = computeDistanceBetween(deviceLocation, enteredLocation);
if (distanceInMeters <= acceptedProximity) {
    Log.d(TAG, "location matched");
    // TODO: Display UI based on the locations matching
} else {
    Log.d(TAG, "location not matched");
    // TODO: Display UI based on the locations not matching
}

(पूरा कोड सैंपल देखें)

अगर पता और जगह की जानकारी मेल खाती है, तो ऐप्लिकेशन में पुष्टि करने वाला मैसेज दिखाएं, जैसा कि इस इमेज में दिखाया गया है.

फटाफट और पुष्टि किए गए साइन-अप की सुविधा को बेहतर बनाने के लिए सलाह

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

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