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

ভিডিও: প্লেস অটোকমপ্লিট ব্যবহার করে ঠিকানা ফর্ম উন্নত করুন
ঠিকানা ফর্ম
অ্যান্ড্রয়েড
আইওএস
ওয়েব
গুগল ম্যাপস প্ল্যাটফর্ম মোবাইল প্ল্যাটফর্ম এবং ওয়েবের জন্য একটি প্লেস অটোকমপ্লিট উইজেট প্রদান করে। পূর্ববর্তী চিত্রগুলিতে দেখানো এই উইজেটটি একটি সার্চ ডায়ালগ প্রদান করে, যাতে বিল্ট-ইন অটোকমপ্লিট কার্যকারিতা রয়েছে এবং আপনি এটিকে অবস্থান-ভিত্তিক অনুসন্ধানের জন্য অপ্টিমাইজও করতে পারেন।
এই বিভাগে দ্রুত ও যাচাইকৃত সাইন-আপের জন্য প্লেস অটোকমপ্লিট কীভাবে প্রয়োগ করতে হয় তা বর্ণনা করা হয়েছে।
স্থান স্বয়ংসম্পূর্ণ উইজেট যোগ করা
অ্যান্ড্রয়েডে, আপনি একটি অটোকমপ্লিট ইন্টেন্ট ব্যবহার করে অটোকমপ্লিট উইজেটটি যোগ করতে পারেন। এই ইন্টেন্টটি 'অ্যাড্রেস লাইন ১' ইনপুট ফিল্ড থেকে 'প্লেস অটোকমপ্লিট' চালু করে, যেখানে ব্যবহারকারী তার ঠিকানা লেখা শুরু করবেন। টাইপ করা শুরু করলেই, তিনি অটোকমপ্লিট প্রেডিকশনের তালিকা থেকে নিজের ঠিকানা বেছে নিতে পারবেন।
প্রথমে, ActivityResultLauncher ব্যবহার করে একটি অ্যাক্টিভিটি লঞ্চার প্রস্তুত করুন, যা চালু করা অ্যাক্টিভিটি থেকে ফলাফলের জন্য অপেক্ষা করবে। রেজাল্ট কলব্যাকে একটি Place অবজেক্ট থাকবে, যা ব্যবহারকারীর Autocomplete প্রেডিকশন থেকে নির্বাচিত ঠিকানার সাথে সঙ্গতিপূর্ণ হবে।
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 ইন্টেন্টের fields, location, এবং type প্রোপার্টিগুলো সংজ্ঞায়িত করুন এবং 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")) .setTypesFilter(List.of("establishment")) .build(this); startAutocomplete.launch(intent); }
প্লেস অটোকমপ্লিট দ্বারা প্রাপ্ত ঠিকানা পরিচালনা করা
পূর্বে ActivityResultLauncher সংজ্ঞায়িত করার মাধ্যমে এটাও নির্ধারণ করা হয়েছিল যে, কলব্যাকে অ্যাক্টিভিটির ফলাফল ফেরত এলে কী করা হবে। যদি ব্যবহারকারী কোনো প্রেডিকশন নির্বাচন করে থাকেন, তবে সেটি রেজাল্ট অবজেক্টের মধ্যে থাকা ইন্টেন্টে সরবরাহ করা হবে। যেহেতু ইন্টেন্টটি Autocomplete.IntentBuilder দ্বারা তৈরি করা হয়েছিল, তাই Autocomplete.getPlaceFromIntent() মেথডটি এর থেকে Place অবজেক্টটি বের করে নিতে পারে।
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() কল করুন এবং অ্যাড্রেস ফর্মের প্রতিটি অ্যাড্রেস কম্পোনেন্টকে তার সংশ্লিষ্ট ইনপুট ফিল্ডের সাথে মেলান, এবং ব্যবহারকারীর নির্বাচিত Place থেকে পাওয়া ভ্যালু দিয়ে ফিল্ডটি পূরণ করুন।
হাতে লিখে ঠিকানা দেওয়ার পরিবর্তে পূর্বাভাস থেকে ঠিকানার তথ্য সংগ্রহ করলে তা ঠিকানার নির্ভুলতা নিশ্চিত করতে সাহায্য করে, ঠিকানাটি পরিচিত এবং সেখানে ডেলিভারি করা সম্ভব তা নিশ্চিত করে এবং ব্যবহারকারীর কীস্ট্রোক কমায়।
প্লেস অটোকমপ্লিট বাস্তবায়নের সময় বিবেচ্য বিষয়সমূহ
প্লেস অটোকমপ্লিট-এ বেশ কিছু অপশন রয়েছে যা এর বাস্তবায়নকে নমনীয় করে তোলে, যদি আপনি শুধু উইজেটের বাইরেও আরও কিছু ব্যবহার করতে চান। কোনো একটি অবস্থানকে সঠিকভাবে মেলানোর জন্য আপনার যা প্রয়োজন, তা পেতে আপনি বিভিন্ন সার্ভিসের সমন্বয় ব্যবহার করতে পারেন।
একটি ADDRESS ফর্মের ক্ষেত্রে, শুধুমাত্র সম্পূর্ণ রাস্তার ঠিকানার সাথে মিল সীমাবদ্ধ করতে types প্যারামিটারটি
addressএ সেট করুন। Place Autocomplete অনুরোধগুলিতে সমর্থিত প্রকারগুলি সম্পর্কে আরও জানুন।Set the appropriate restrictions and biases if you don't need to search worldwide. There are a number of parameters that can be used to bias or restrict any match to only specific regions.
কোনো একটি এলাকাকে সীমাবদ্ধ করার জন্য আয়তক্ষেত্রাকার সীমানা নির্ধারণ করতে
RectangularBoundsব্যবহার করুন, এবং শুধুমাত্র সেই এলাকার ঠিকানাগুলোই যাতে ফেরত আসে তা নিশ্চিত করতেsetLocationRestriction()ব্যবহার করুন।নির্দিষ্ট কিছু দেশের মধ্যে প্রতিক্রিয়া সীমাবদ্ধ করতে
setCountries()ব্যবহার করুন।
যদি মিল খুঁজে পাওয়ার সময় নির্দিষ্ট কোনো ফিল্ড বাদ পড়ে যায়, সেই ক্ষেত্রে ফিল্ডগুলো সম্পাদনাযোগ্য রাখুন এবং প্রয়োজনে গ্রাহকদের ঠিকানা আপডেট করার সুযোগ দিন। যেহেতু প্লেস অটোকমপ্লিট দ্বারা প্রাপ্ত বেশিরভাগ ঠিকানায় অ্যাপার্টমেন্ট, স্যুট বা ইউনিট নম্বরের মতো সাব-প্রিমিজ নম্বর থাকে না, তাই প্রয়োজনে ব্যবহারকারীকে সেই তথ্য পূরণ করতে উৎসাহিত করার জন্য আপনি অ্যাড্রেস লাইন ২-এ ফোকাস সরিয়ে নিতে পারেন।
ঠিকানার চাক্ষুষ নিশ্চিতকরণ প্রদান করা
| এই উদাহরণটিতে ব্যবহৃত হয়েছে: অ্যান্ড্রয়েডের জন্য ম্যাপস এসডিকে (Maps SDK for Android)। | এছাড়াও উপলব্ধ: iOS | জাভাস্ক্রিপ্ট |
ঠিকানা লেখার অংশ হিসেবে, ব্যবহারকারীদের একটি মানচিত্রে ঠিকানাটির চাক্ষুষ নিশ্চিতকরণ প্রদান করুন। এটি ব্যবহারকারীদের ঠিকানাটি সঠিক হওয়ার বিষয়ে অতিরিক্ত আশ্বাস দেয়।
নিচের চিত্রে ঠিকানার নিচে একটি মানচিত্র দেখানো হয়েছে, যেখানে প্রবেশ করানো ঠিকানায় একটি পিন রয়েছে।

নিচের উদাহরণটিতে অ্যান্ড্রয়েডে ম্যাপ যোগ করার প্রাথমিক ধাপগুলো দেখানো হয়েছে। আরও বিস্তারিত জানতে ডকুমেন্টেশন দেখুন।
-
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);
}
}ফ্র্যাগমেন্টের হ্যান্ডেল পাওয়া এবং কলব্যাক নিবন্ধন করা
To get a handle to the fragment, call the
FragmentManager.findFragmentByIdmethod and pass it the resource ID of the fragment in your layout file. If you added the fragment dynamically , skip this step because you already retrieved the handle.ফ্র্যাগমেন্টে কলব্যাক সেট করতে
getMapAsyncমেথডটি কল করুন।
উদাহরণস্বরূপ, যদি আপনি ফ্র্যাগমেন্টটি স্ট্যাটিক্যালি যোগ করে থাকেন:
কোটলিন
val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this)
জাভা
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)); }
মানচিত্র নিয়ন্ত্রণ নিষ্ক্রিয় করা
অতিরিক্ত ম্যাপ কন্ট্রোল (যেমন কম্পাস, টুলবার বা অন্যান্য বিল্ট-ইন ফিচার) ছাড়া শুধু অবস্থান দেখিয়ে ম্যাপটিকে সহজ রাখতে, আপনার কাছে অপ্রয়োজনীয় কন্ট্রোলগুলো নিষ্ক্রিয় করে দেওয়ার কথা ভাবতে পারেন। অ্যান্ড্রয়েডের ক্ষেত্রে, সীমিত ইন্টারঅ্যাক্টিভিটির জন্য লাইট মোড চালু করা আরেকটি উপায়।
ব্যবহারকারীর প্রবেশ করানো ঠিকানা ডিভাইসের অবস্থানের সাথে তুলনা করা হচ্ছে
ঠিকানার প্রমাণ সংগ্রহ করা—অর্থাৎ ব্যবহারকারী যে ঠিকানাটিই দিয়েছেন, তিনি সেখানেই আছেন কি না সে বিষয়ে নিশ্চিত হওয়া—বিভিন্ন কারণে জটিল হতে পারে, যেমন—ব্যবহারকারীর দূরবর্তী অবস্থান, নতুন ঠিকানায় চলে যাওয়া, অথবা এমন ডিজিটাল ব্যবসা (যেমন ডিজিটাল ব্যাংক) যাদের কোনো ভৌত শাখা নেই যেখানে ব্যবহারকারীরা ইউটিলিটি বিল বা অন্যান্য নথিপত্র দেখিয়ে ঠিকানার প্রমাণ দিতে যেতে পারেন। ব্যবহারকারীর ঠিকানা যাচাই করার জন্য ডিজিটাল উপায় প্রদান করলে আপনি একটি দ্রুততর ও ঝামেলাহীন সাইন-আপ অভিজ্ঞতা দিতে পারেন।
ঠিকানা যাচাই করার ক্ষেত্রে নিরাপত্তা সর্বাপেক্ষা গুরুত্বপূর্ণ, বিশেষ করে ডিজিটাল সাইন-আপ প্রক্রিয়ার ক্ষেত্রে। এই বিভাগে, সাইন-আপের সময় ব্যবহারকারীর দেওয়া অবস্থান তার নিজের ঠিকানার সাথে মেলে কিনা, তা যাচাই করার জন্য নির্দেশনা এবং নমুনা প্রদান করা হয়েছে।
প্রবেশ করানো ঠিকানার সাথে ডিভাইসের অবস্থান তুলনা করার প্রক্রিয়ায় নিম্নলিখিত ধাপগুলো অন্তর্ভুক্ত রয়েছে:
- ব্যবহারকারীর প্রবেশ করানো ঠিকানাটিকে ভৌগোলিক স্থানাঙ্কে রূপান্তর করা হচ্ছে ।
- Prompting the user for permission to obtain their device's location .
- প্রবেশ করানো ঠিকানা এবং ডিভাইসের অবস্থানের মধ্যে দূরত্ব গণনা করা হচ্ছে । ঠিকানা ও অবস্থানের মিলের জন্য সর্বোচ্চ যে দূরত্বটি গণ্য হবে, তা আপনিই নির্ধারণ করতে পারবেন।
নিচের চিত্রটি একটি উদাহরণ, যেখানে দেখানো হয়েছে কীভাবে আপনি ব্যবহারকারীদেরকে তাদের প্রবেশ করানো ঠিকানার সাথে বর্তমান অবস্থান তুলনা করতে বলতে পারেন।

ব্যবহারকারীর প্রবেশ করানো ঠিকানাকে ভৌগোলিক স্থানাঙ্কে রূপান্তর করা
| এই উদাহরণটিতে ব্যবহৃত হয়েছে: অ্যান্ড্রয়েডের জন্য প্লেসেস এসডিকে (Places SDK for Android)। | এছাড়াও উপলব্ধ: iOS | জাভাস্ক্রিপ্ট | জিওকোডিং এপিআই |
ব্যবহারকারীরা ঠিকানা যাচাইকরণে সম্মত হওয়ার পর (পূর্ববর্তী চিত্রে 'আমি এখন সেখানে আছি যাচাই করুন' স্পর্শ করার মাধ্যমে), বর্তমান অবস্থানের সাথে ঠিকানা তুলনা করার প্রথম ধাপ হলো প্রবেশ করানো ঠিকানাটিকে ভৌগোলিক স্থানাঙ্কে রূপান্তর করা।
যদি ব্যবহারকারী প্লেস অটোকমপ্লিট ব্যবহার করে তাদের ঠিকানা নির্বাচন করে থাকেন, তাহলে "প্লেস অটোকমপ্লিট উইজেট যোগ করা" কোড স্নিপেটে দেখানো অনুযায়ী প্লেস অটোকমপ্লিট ফিল্ড লিস্টে Place.Field.LAT_LNG জন্য অনুরোধ করতে ভুলবেন না এবং নির্বাচিত ঠিকানার ভৌগোলিক স্থানাঙ্ক পেতে Place.getLatLng() মেথডটি কল করুন।
coordinates = place.getLatLng();
যদি ব্যবহারকারী নিজে ঠিকানা লিখে থাকেন অথবা প্লেস অটোকমপ্লিট ফিল্ডগুলো পূরণ করার পর কোনো সম্পাদনা করে থাকেন, তাহলে সেই ঠিকানার সাথে সম্পর্কিত স্থানাঙ্কগুলো খুঁজে বের করার জন্য অ্যান্ড্রয়েড জিওকোডার পরিষেবা বা জিওকোডিং এপিআই ব্যবহার করুন।
উদাহরণ
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 = , (কমা)
ব্যবহারকারীর ডিভাইসের অবস্থান জানার জন্য তার কাছে অনুমতি চাওয়া হচ্ছে।
ব্যবহারকারীর ডিভাইসের অবস্থান জানতে, আপনাকে লোকেশন সার্ভিস চালু করার জন্য ব্যবহারকারীর অনুমতি চাইতে হবে। লোকেশন-অ্যাওয়ার অ্যাপ তৈরির বিষয়ে অ্যান্ড্রয়েড ডকুমেন্টেশনের নির্দেশনা অনুসরণ করে নিম্নলিখিত ফ্লোটি বাস্তবায়ন করুন:
এককালীন মঞ্জুরি হিসেবে, একটি সুনির্দিষ্ট স্তরে (
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());
// ...
});
}প্রবেশ করানো ঠিকানা এবং ডিভাইসের অবস্থানের মধ্যে দূরত্ব গণনা করা
দুটি অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্কের (প্রবেশ করানো ঠিকানা এবং ডিভাইসের অবস্থান) মধ্যে দূরত্ব গণনা করতে গণিত ব্যবহার করুন। অ্যান্ড্রয়েডের জন্য ওপেন সোর্স ম্যাপস এসডিকে ইউটিলিটি লাইব্রেরিতে পৃথিবীর দুটি বিন্দুর মধ্যে গোলাকার দূরত্ব গণনা করার জন্য কিছু সুবিধাজনক পদ্ধতি রয়েছে।
প্রথমে, আপনার অ্যাপের build.gradle.kts ফাইলে নিম্নলিখিত ডিপেন্ডেন্সিটি যোগ করে Maps SDK for Android ইউটিলিটি লাইব্রেরিটি ইনস্টল করুন:
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.19.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 প্রপার্টিটি সরিয়ে দিন।
আপনার ওয়েবসাইটের স্টাইলের সাথে মিলিয়ে প্লেস অটোকমপ্লিট বক্সের ডিজাইন ও অনুভূতি কাস্টমাইজ করুন। আপনি যদি গুগলের উইজেট ব্যবহার না করে আপনার অ্যাপে প্লেস অটোকমপ্লিটের ডিজাইন ও অনুভূতি নিয়ন্ত্রণ করতে চান, তবে প্লেস অটোকমপ্লিট পরিষেবা দিয়ে তৈরি করা UI-কে চালনা করতে আপনি প্রোগ্রাম্যাটিকভাবে প্লেস অটোকমপ্লিট ব্যবহার করতে পারেন।