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

खास जानकारी

web iOS एपीआई

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

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

Google Cloud Console में मौजूद Quick Builder की मदद से, पते के फ़ॉर्म को अपने-आप पूरा करने की सुविधा दी जा सकती है. इसके लिए, एक इंटरैक्टिव यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल किया जाता है. यह यूज़र इंटरफ़ेस (यूआई) आपके लिए 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 ऑब्जेक्ट में बताई गई स्टाइल का इस्तेमाल करता है या आपके पास ऐसे मैप आईडी को लोड करने का विकल्प भी है जिसे क्लाउड पर आधारित मैप स्टाइलिंग से तय किया गया है.

    @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 जियोकोडर सेवा या जियोकोडिंग एपीआई का इस्तेमाल करें.

उदाहरण

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

जियोकोडिंग एपीआई पर कॉल को यूआरएल एन्कोड करना न भूलें.

यूआरएल एन्कोडिंग का तुरंत रेफ़रंस: %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 Utility लाइब्रेरी के लिए Maps SDK टूल में, Earth पर दो पॉइंट के बीच स्फ़ेरिकल दूरी का हिसाब लगाने के कुछ आसान तरीके हैं.

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

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'
}

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

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 के विजेट के बजाय, ऐप्लिकेशन में 'जगह की जानकारी अपने-आप पूरी होने' की सुविधा के लुक और स्टाइल को कंट्रोल करना है, तो 'अपने-आप पूरा होने की सुविधा' सेवा की मदद से बनाए गए यूज़र इंटरफ़ेस (यूआई) को बेहतर बनाने के लिए, 'अपने-आप पूरा होने की सुविधा डालें' सुविधा का इस्तेमाल करें.