এক নজরে
Google Maps Platform ওয়েব (JS, TS), Android ও iOS-এর জন্য উপলভ্য এবং এটি জায়গা, দিকনির্দেশ ও দূরত্ব সম্পর্কে তথ্য পাওয়ার জন্য ওয়েব পরিষেবা API-ও অফার করে। এই নির্দেশিকায় নমুনাগুলি একটি প্ল্যাটফর্মের জন্য লেখা হয়েছে, কিন্তু অন্যান্য প্ল্যাটফর্মে প্রয়োগ করার জন্য ডকুমেন্টেশন লিঙ্ক দেওয়া হয়েছে।
Google Cloud Console-এ Quick Builder আপনাকে একটি ইন্ট্যার্যাক্টিভ UI ব্যবহার করে ঠিকানা ফর্ম অটোফিল করার সুবিধা তৈরি করতে দেয়, যা আপনার জন্য JavaScript কোড তৈরি করে।
ব্যবহারকারীরা এখন ডিজিটাল জগতে অভ্যস্ত হয়ে গেছেন যেখানে সুবিধা, দ্রুততা ও নিরাপত্তা হল প্রাথমিক প্রত্যাশা। ক্রেডিট কার্ড, ব্যাঙ্ক অ্যাকাউন্ট বা লোনের মতো কোনও কিছুর জন্য আবেদন করার সময়, তারা আশা করেন যে প্রসেসটি দ্রুত ও সহজ হবে।
যত বেশি ব্যবহারকারীকে ডুপ্লিকেট ডেটা টাইপ বা লিখতে হবে, গ্রাহক হিসেবে তাদের ধরে রাখার সম্ভাবনা তত কম হবে। দ্রুত, সহজ ও যাচাই করা সাইন-আপের অভিজ্ঞতা তৈরি করলে, ব্যবহারকারীর অভিজ্ঞতা উন্নত হবে এবং আপনার সাইটে ব্যবহারকারীদের ধরে রাখতে সাহায্য করবে।
ম্যানুয়ালি ঠিকানা লিখলে কনভার্সন কমে যেতে পারে, CRM ডেটায় ভুল হতে পারে এবং ডেলিভারির ক্ষেত্রে ব্যয়বহুল ভুল হতে পারে। দ্রুত ও যাচাই করা সাইন-আপ, সাইন-আপ প্রসেসকে আরও দ্রুত করে তোলে, শুধুমাত্র কয়েকটি থাম্ব ট্যাপের মাধ্যমে কাছাকাছি ঠিকানাগুলি তৎক্ষণাৎ সাজেস্ট করে এবং ভিজ্যুয়াল কনফার্মেশনের জন্য ইনপুট করা ঠিকানা দেখায়, এর ফলে ব্যবহারকারী নিশ্চিন্তে সঠিক ঠিকানা লিখতে পারেন। ব্যবহারকারীর বর্তমান লোকেশন ব্যবহার করে তার ঠিকানা যাচাই করাও প্রতারণা প্রতিরোধে সাহায্য করে এবং আপনার প্রোডাক্ট ও পরিষেবার উপর ব্যবহারকারীর আস্থা বাড়ায়। এছাড়াও, যাচাইকরণ করা হলে, আপনি ভার্চুয়াল ব্যাঙ্ক ও ক্রেডিট কার্ডের তথ্য তৎক্ষণাৎ প্রদান করার ব্যাপারে আরও বেশি আত্মবিশ্বাসী হতে পারবেন।
Google Maps Platform-এর মাধ্যমে দ্রুত ও যাচাই করা সাইন-আপ অভিজ্ঞতা তৈরি করার জন্য এই ডকুমেন্ট প্রয়োগ সংক্রান্ত নির্দেশিকা প্রদান করে। কারণ, ব্যবহারকারীরা বেশিরভাগ ক্ষেত্রেই মোবাইল ডিভাইসে সাইন-আপ করবেন, তাই এই ডকুমেন্টে বেশিরভাগ প্রয়োগের উদাহরণ Android-এর উপর ফোকাস করে। সম্পূর্ণ উদাহরণের জন্য, নমুনা সোর্স কোড দেখুন। একই উদ্দেশ্য পূরণের জন্য আপনি iOS SDK-ও ব্যবহার করতে পারেন।
নিচের ডায়াগ্রামে, সমাধান তৈরি করার কাজে ব্যবহৃত মূল API দেখানো হয়েছে (বড় করে দেখতে ক্লিক করুন)।
API চালু করা
এইসব সাজেশন প্রয়োগ করতে, আপনাকে অবশ্যই Google Cloud Console-এ নিম্নলিখিত API চালু করতে হবে:
- Android-এর জন্য Maps SDK (অথবা আপনার পছন্দের প্ল্যাটফর্মের জন্য API)
- Places API
- Geocoding API
সেট-আপ সম্পর্কে আরও তথ্যের জন্য, Google Maps Platform-এর ব্যবহার শুরু করা দেখুন।
পেশাদার পদ্ধতি বিভাগ
এই ডকুমেন্টে নিম্নলিখিত প্র্যাক্টিস ও কাস্টমাইজেশন কভার করা হয়েছে।
- টিক চিহ্ন আইকন হল একটি মূল পেশাদার পদ্ধতি।
- স্টার আইকনটি ঐচ্ছিক হলেও সমাধান উন্নত করার জন্য কাস্টমাইজেশন হিসেবে সাজেস্ট করা হয়।
| ইনপুট ফিল্ডে অটোমেটিক সম্পূর্ণ হওয়ার সুবিধা যোগ করা | ঠিকানার ফর্ম অটোফিল করা। সব প্ল্যাটফর্মে ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে এবং ন্যূনতম কীস্ট্রোকের মাধ্যমে ঠিকানা সঠিক করার জন্য টাইপ-অ্যাজ-ইউ-গো ফাংশনালিটি যোগ করুন। | |
| ঠিকানার ভিজ্যুয়াল কনফার্মেশন প্রদান করা | ব্যবহারকারীদের ম্যাপে তাদের ঠিকানা দেখতে দিন যাতে তারা ভিজ্যুয়াল কনফার্মেশন পান যে তারা সঠিক ঠিকানা লিখেছেন। | |
| ব্যবহারকারীর লেখা ঠিকানার সাথে ডিভাইস লোকেশন তুলনা করা | ব্যবহারকারীর বেছে নেওয়া বা লেখা ঠিকানা তার ডিভাইসের বর্তমান লোকেশনের সাথে তুলনা করে তিনি উল্লেখ করা ঠিকানায় আছেন কিনা তা নির্ধারণ করতে সাহায্য করুন। (এটি কাজ করার জন্য, ব্যবহারকারীকে সাইন-আপ করার সময় বাড়িতে থাকতে হবে।) | |
| 'দ্রুত ও যাচাই করা সাইন-আপ' ফিচার আরও উন্নত করার পরামর্শ | আপনি ঠিকানা লেখার সুবিধা আরও উন্নত করতে পারেন, যেমন অটোমেটিক সম্পূর্ণ করার উইজেটের লুক ও ফিল কাস্টমাইজ করা অথবা ব্যবহারকারীদের ঠিকানা হিসেবে কোনও ব্যবসা বা ল্যান্ডমার্কের নাম বেছে নিতে দেওয়া। |
ইনপুট ফিল্ডে অটোমেটিক সম্পূর্ণ করার সুবিধা যোগ করা
| এই উদাহরণে ব্যবহার করা হয়েছে: Places SDK for Android | এছাড়াও উপলভ্য: iOS | JavaScript |
'জায়গা অটোমেটিক সম্পূর্ণ করা' ফিচার আপনার অ্যাপ্লিকেশনে ঠিকানা লেখার কাজ সহজ করে দিতে পারে, যার ফলে কনভার্সন রেট আরও বেশি হয় এবং আপনার গ্রাহকরা নির্বিঘ্ন অভিজ্ঞতা পান। অটো-কমপ্লিট ফিচার "টাইপ-অ্যাহেড" ঠিকানা পূর্বাভাসের সাথে একটি একক, দ্রুত-এন্ট্রি ফিল্ড প্রদান করে যা সাইন-আপ ঠিকানা ফর্ম অটোমেটিক পূরণ করতে ব্যবহার করা যেতে পারে। আপনার সাইন-আপ ফ্লোতে জায়গা অটোমেটিক সম্পূর্ণ করার সুবিধা অন্তর্ভুক্ত করে, আপনি এগুলি করতে পারবেন:
- ঠিকানা লেখার সময় ভুল হওয়ার সম্ভাবনা কমানো।
- সাইন-আপ করার প্রসেসে ধাপের সংখ্যা কমান।
- মোবাইল বা পরে থাকা যায় এমন ডিভাইসে ঠিকানা লেখার অভিজ্ঞতা আরও সহজ করে তোলে।
- গ্রাহকের সাইন-আপ করার জন্য প্রয়োজনীয় কিস্ট্রোক এবং মোট সময় উল্লেখযোগ্যভাবে কমান।
ব্যবহারকারী অটোকমপ্লিট এন্ট্রি বক্স বেছে নিয়ে টাইপ করা শুরু করলে, সম্ভাব্য ঠিকানার একটি তালিকা দেখানো হয়।
ব্যবহারকারী পূর্বাভাসের তালিকা থেকে কোনও ঠিকানা বেছে নিলে, আপনি ঠিকানা যাচাই করতে এবং লোকেশন পেতে উত্তর ব্যবহার করতে পারবেন। আপনার অ্যাপ্লিকেশন তারপরে ঠিকানা এন্ট্রি ফর্মের সঠিক ফিল্ডগুলি পূরণ করতে পারে, যেমনটি নিম্নলিখিত চিত্রে দেখানো হয়েছে।

ভিডিও: 'প্লেস অটোকমপ্লিট' ফিচারের মাধ্যমে ঠিকানা লেখার ফর্ম আরও উন্নত করুন
ঠিকানা ফর্ম
Android
iOS
ওয়েব
Google Maps Platform মোবাইল প্ল্যাটফর্ম ও ওয়েবের জন্য জায়গা অটোমেটিক সম্পূর্ণ করার উইজেট প্রদান করে। আগের ছবিতে দেখানো উইজেটটি, বিল্ট-ইন অটোকমপ্লিট কার্যকারিতা সহ একটি সার্চ ডায়ালগ প্রদান করে যা আপনি লোকেশন-স্কোপড সার্চের জন্য অপ্টিমাইজ করতে পারেন।
এই বিভাগে দ্রুত ও যাচাই করা সাইন-আপের জন্য কীভাবে জায়গা অটোমেটিক সম্পূর্ণ করার ফিচার প্রয়োগ করতে হয় তা বর্ণনা করা হয়েছে।
'জায়গা অটোমেটিক সম্পূর্ণ করা' উইজেট যোগ করা
Android-এ, আপনি অটোকমপ্লিট ইনটেন্ট ব্যবহার করে অটোকমপ্লিট উইজেট যোগ করতে পারবেন যা ঠিকানা লাইন ১ ইনপুট ফিল্ড থেকে প্লেস অটোকমপ্লিট চালু করে, যেখানে ব্যবহারকারী তার ঠিকানা লিখতে শুরু করবেন। টাইপ করা শুরু করলে, তারা অটোমেটিক সম্পূর্ণ হওয়া পূর্বাভাসের তালিকা থেকে তাদের ঠিকানা বেছে নিতে পারবেন।
প্রথমে, 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"); } });
এরপর, Place 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.LOCATION, Place.Field.VIEWPORT); // Build the autocomplete intent with field, country, and type filters applied Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY, fields) .setCountries(List.of("US")) // IMPORTANT: the widget uses the legacy api .setTypesFilter(List.of(PlaceTypes.ADDRESS)) .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 ফর্মের জন্য, রাস্তার সম্পূর্ণ ঠিকানার সাথে মিল সীমাবদ্ধ করতে, types প্যারামিটার
address-এ সেট করুন। প্লেস অটোকমপ্লিট অনুরোধে কাজ করে এমন ধরন সম্পর্কে আরও জানুন।সারা বিশ্ব জুড়ে সার্চ করার প্রয়োজন না থাকলে, উপযুক্ত বিধিনিষেধ ও পক্ষপাতিত্ব সেট করুন। নির্দিষ্ট অঞ্চলের সাথে ম্যাচ করার জন্য অনেক প্যারামিটার ব্যবহার করা যেতে পারে।
RectangularBoundsব্যবহার করে কোনও এলাকার জন্য আয়তাকার বাউন্ডারি সেট করুন,setLocationRestriction()ব্যবহার করে নিশ্চিত করুন যে শুধুমাত্র সেই এলাকার ঠিকানাই দেখানো হচ্ছে।নির্দিষ্ট কিছু দেশে উত্তর সীমাবদ্ধ করতে
setCountries()ব্যবহার করুন।
ম্যাচ থেকে নির্দিষ্ট কিছু ফিল্ড বাদ গেলে, ফিল্ড এডিট করার সুবিধা চালু রাখুন এবং প্রয়োজন হলে গ্রাহকদের ঠিকানা আপডেট করার অনুমতি দিন। কারণ, Place Autocomplete-এর মাধ্যমে ফেরত পাওয়া বেশিরভাগ ঠিকানায় সাবপ্রিমিজ নম্বর থাকে না, যেমন অ্যাপার্টমেন্ট, স্যুট বা ইউনিট নম্বর, তাই আপনি Address Line 2-তে ফোকাস সরিয়ে নিয়ে যেতে পারেন যাতে ব্যবহারকারীকে প্রয়োজন হলে সেই তথ্য পূরণ করতে উৎসাহিত করা যায়।
ঠিকানার ভিজ্যুয়াল কনফার্মেশন প্রদান করা
| এই উদাহরণে এগুলি ব্যবহার করা হয়েছে: Android-এর জন্য Maps SDK | এছাড়াও উপলভ্য: iOS | JavaScript |
ঠিকানা লেখার অংশ হিসেবে, ম্যাপে ঠিকানাটি ব্যবহারকারীদের ভিজ্যুয়ালি কনফার্ম করুন। এর ফলে ব্যবহারকারী অতিরিক্ত আশ্বাস পান যে ঠিকানাটি সঠিক।
নিচের ছবিতে, ঠিকানার নিচে একটি ম্যাপ দেখানো হয়েছে যেখানে লেখা ঠিকানায় একটি পিন দেওয়া আছে।

নিম্নলিখিত উদাহরণটি Android-এ ম্যাপ যোগ করার প্রাথমিক ধাপ অনুসরণ করে। আরও বিবরণের জন্য ডকুমেন্টেশন দেখুন।
SupportMapFragmentযোগ করা (এই ক্ষেত্রে, ডায়নামিকভাবে ফ্র্যাগমেন্ট যোগ করা)- ফ্র্যাগমেন্টের হ্যান্ডেল পাওয়া এবং কলব্যাক রেজিস্টার করা
- ম্যাপে স্টাইলিং ও মার্কার যোগ করা
- ম্যাপ কন্ট্রোল বন্ধ করা হচ্ছে
SupportMapFragment যোগ করা হচ্ছে
প্রথমে, লেআউট XML ফাইলে
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.getLocation();
// 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);
}
}ফ্র্যাগমেন্টের হ্যান্ডেল পাওয়া এবং কলব্যাক রেজিস্টার করা
ফ্র্যাগমেন্টের হ্যান্ডেল পেতে,
FragmentManager.findFragmentByIdমেথড কল করুন এবং আপনার লেআউট ফাইলে ফ্র্যাগমেন্টের রিসোর্স আইডি এতে পাস করুন। আপনি যদি ডায়নামিক উপায়ে ফ্র্যাগমেন্ট যোগ করে থাকেন, তাহলে এই ধাপটি এড়িয়ে যান কারণ আপনি আগেই হ্যান্ডেল পেয়ে গেছেন।ফ্র্যাগমেন্টে কলব্যাক সেট করতে
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-এ, আরেকটি বিকল্প হল সীমিত ইন্টার্যাক্টিভিটি প্রদান করতে লাইট মোড চালু করা।
ব্যবহারকারীর লেখা ঠিকানা ডিভাইসের লোকেশনের সাথে তুলনা করা
ঠিকানার প্রমাণপত্র পাওয়া—ব্যবহারকারী যে ঠিকানা লিখেছেন, তিনি সেখানেই আছেন কিনা তা নিশ্চিত করা—বিভিন্ন কারণে জটিল হতে পারে, যেমন ব্যবহারকারীর লোকেশন প্রত্যন্ত অঞ্চলে হওয়া, ব্যবহারকারী নতুন ঠিকানায় চলে যাওয়া অথবা ডিজিটাল ব্যবসা (যেমন ডিজিটাল ব্যাঙ্ক) যার কোনও ফিজিক্যাল লোকেশন নেই যেখানে ব্যবহারকারী গিয়ে ইউটিলিটি বিল বা অন্যান্য ডকুমেন্ট সহ ঠিকানার প্রমাণপত্র জমা দিতে পারেন। ব্যবহারকারীর ঠিকানা যাচাই করার ডিজিটাল উপায় প্রদান করলে, আপনি আরও দ্রুত, বাধাহীন সাইন-আপের অভিজ্ঞতা প্রদান করতে পারবেন।
ঠিকানা যাচাই করার ক্ষেত্রে নিরাপত্তা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে ডিজিটাল সাইন-আপ প্রক্রিয়ার ক্ষেত্রে। এই বিভাগে, সাইন-আপ করার সময় ব্যবহারকারীর লোকেশন তার নিজের বলে উল্লেখ করা ঠিকানার সাথে মিলছে কিনা তা চেক করার জন্য নির্দেশিকা ও স্যাম্পেল দেওয়া হয়েছে।
ডিভাইসের লোকেশনের সাথে লেখা ঠিকানা তুলনা করার প্রসেসে নিম্নলিখিত ধাপগুলি রয়েছে:
- ব্যবহারকারীর লেখা ঠিকানা ভৌগোলিক স্থানাঙ্কে পরিবর্তন করা।
- ব্যবহারকারীর ডিভাইসের লোকেশন পাওয়ার জন্য তাকে অনুমতি দিতে বলা।
- আপনার লেখা ঠিকানা ও ডিভাইসের লোকেশনের মধ্যে দূরত্ব গণনা করা হচ্ছে। ঠিকানা-লোকেশন ম্যাচ করার জন্য সর্বাধিক দূরত্ব কত হতে পারে তা আপনি নির্ধারণ করতে পারবেন।
নিচের ছবিতে দেখানো হয়েছে যে কীভাবে আপনি ব্যবহারকারীদের তাদের দেওয়া ঠিকানা ও বর্তমান লোকেশনের মধ্যে তুলনা করতে প্রম্পট দেখাতে পারেন।

ব্যবহারকারীর লেখা ঠিকানা ভৌগোলিক স্থানাঙ্কে পরিবর্তন করা হচ্ছে
| এই উদাহরণে ব্যবহার করা হয়েছে: Places SDK for Android | এছাড়াও উপলভ্য: iOS | JavaScript | Geocoding API |
ব্যবহারকারী ঠিকানা যাচাইকরণে সম্মতি দেওয়ার পরে (আগের ছবিতে "যাচাই করুন, আমি এখন এখানে আছি" বিকল্পে টাচ করার মাধ্যমে), বর্তমান লোকেশন সহ ঠিকানা তুলনা করার প্রথম ধাপ হল, লেখা ঠিকানাটিকে ভৌগোলিক কোঅর্ডিনেটে কনভার্ট করা।
ব্যবহারকারী যদি 'প্লেস অটোকমপ্লিট' ফিচারের মাধ্যমে তার ঠিকানা বেছে নেন, তাহলে
'প্লেস অটোকমপ্লিট' উইজেট যোগ করা কোড স্নিপেটে দেখানো 'প্লেস অটোকমপ্লিট' ফিল্ডের তালিকায়
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-তে কল করার সময় URL এনকোড করতে ভুলবেন না।
URL এনকোডিংয়ের সংক্ষিপ্ত রেফারেন্স: %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());
// ...
});
}লেখা ঠিকানা ও ডিভাইসের লোকেশনের মধ্যে দূরত্ব হিসেব করা হচ্ছে
দুটি অক্ষাংশ ও দ্রাঘিমাংশের কোঅর্ডিনেটের (প্রবেশ করানো ঠিকানা ও ডিভাইস লোকেশন) মধ্যে দূরত্ব গণনা করতে গণিত ব্যবহার করো। ওপেন সোর্স Maps SDK for Android Utility Library-তে পৃথিবীর দুটি বিন্দুর মধ্যে গোলাকার দূরত্ব গণনা করার কিছু সহজ পদ্ধতি আছে।
প্রথমে, আপনার অ্যাপের build.gradle.kts ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যোগ করে Maps SDK for Android Utility Library ইনস্টল করুন:
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(libs.android.maps.utils) }
তারপর, ডিভাইসের শেষ জানা লোকেশন পাওয়ার পরে অ্যাক্টিভিটি ফাইলে ফিরে গিয়ে, দুটি লোকেশনকে "মিলে গেছে" হিসেবে বিবেচনা করার জন্য মিটারে ব্যাসার্ধ নির্ধারণ করুন। রেডিয়াসটি যথেষ্ট বড় হতে হবে যাতে জিপিএস যথার্থতার পরিবর্তনশীলতা এবং ব্যবহারকারীর লেখা ঠিকানায় জায়গার সাইজকে বিবেচনা করা যায়। যেমন:
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-এর উইজেট ব্যবহার করার পরিবর্তে আপনার অ্যাপে Place Autocomplete-এর লুক ও ফিল নিয়ন্ত্রণ করতে চাইলে, প্রোগ্রাম্যাটিক্যালি Place Autocomplete ব্যবহার করতে পারেন। এর মাধ্যমে Place Autocomplete পরিষেবার সাহায্যে আপনার তৈরি করা UI-কে শক্তিশালী করতে পারবেন।