ব্যবহারকারীর সার্চ কোয়েরির উত্তরে Place Autocomplete (Legacy) জায়গার পূর্বাভাস প্রদান করে। ব্যবহারকারী টাইপ করার সাথে সাথে, অটোমেটিক সম্পূর্ণ করার পরিষেবা ব্যবসা, ঠিকানা, Plus Code এবং উল্লেখযোগ্য স্থানের মতো জায়গার জন্য সাজেশন দেখায়।
আপনি নিম্নলিখিত উপায়ে আপনার অ্যাপে অটোমেটিক সম্পূর্ণ হওয়া ফিচার যোগ করতে পারবেন:
- ডেভেলপমেন্টের সময় বাঁচানো এবং ব্যবহারকারীর অভিজ্ঞতা সুসংগত রাখা নিশ্চিত করতে অটোফিল উইজেট যোগ করুন।
- কাস্টমাইজ করা ব্যবহারকারীর অভিজ্ঞতা তৈরি করতে, প্রোগ্রাম অনুযায়ী জায়গা সম্পর্কিত পূর্বাভাস পান।
অটোমেটিক সম্পূর্ণ করার উইজেট যোগ করুন

অটোমেটিক সম্পূর্ণ হওয়া উইজেট হল একটি সার্চ ডায়ালগ যাতে অটোমেটিক সম্পূর্ণ হওয়ার
ফাংশনালিটি বিল্ট-ইন থাকে। ব্যবহারকারী সার্চ করা শব্দ লিখলে, উইজেট বেছে নেওয়ার জন্য
অনুমান করা জায়গার একটি তালিকা দেখায়। ব্যবহারকারী কোনও কিছু বেছে নিলে, একটি
Place
ইনস্ট্যান্স রিটার্ন করা হয়, যা আপনার অ্যাপ বেছে নেওয়া
জায়গা সম্পর্কে বিবরণ পেতে ব্যবহার করতে পারে।
আপনার অ্যাপে অটোমেটিক সম্পূর্ণ হওয়া উইজেট যোগ করার দুটি বিকল্প আছে:
- বিকল্প ১:
AutocompleteSupportFragmentএম্বেড করুন। - বিকল্প ২: অটোফিল অ্যাক্টিভিটি লঞ্চ করার জন্য ইনটেন্ট ব্যবহার করুন।
বিকল্প ১: AutocompleteSupportFragment এম্বেড করুন
আপনার অ্যাপে AutocompleteSupportFragment যোগ করতে, এইসব ধাপ অনুসরণ করুন:
- আপনার অ্যাক্টিভিটির XML লেআউটে ফ্র্যাগমেন্ট যোগ করুন।
- আপনার অ্যাক্টিভিটি বা ফ্র্যাগমেন্টে লিসেনার যোগ করুন।
কোনও অ্যাক্টিভিটিতে AutocompleteSupportFragment যোগ করা
অ্যাক্টিভিটিতে AutocompleteSupportFragment যোগ করতে, XML লেআউটে
নতুন ফ্র্যাগমেন্ট যোগ করুন। যেমন:
<fragment android:id="@+id/autocomplete_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment"
/>
- ডিফল্ট হিসেবে, ফ্র্যাগমেন্টে কোনও বর্ডার বা ব্যাকগ্রাউন্ড থাকে না। একই ধরনের ভিজ্যুয়াল অ্যাপিয়ারেন্স প্রদান করতে, CardView-এর মতো অন্য লেআউট এলিমেন্টের মধ্যে ফ্র্যাগমেন্ট নেস্ট করুন।
- আপনি যদি 'অটোফিল' ফ্র্যাগমেন্ট ব্যবহার করেন এবং আপনাকে
onActivityResultওভাররাইড করতে হয়, তাহলে আপনাকে অবশ্যইsuper.onActivityResultকল করতে হবে, তা না হলে ফ্র্যাগমেন্ট সঠিকভাবে কাজ করবে না।
অ্যাক্টিভিটিতে PlaceSelectionListener যোগ করুন
ব্যবহারকারীর বেছে নেওয়া বিকল্পের ভিত্তিতে কোনও জায়গার উত্তর দেওয়ার জন্য PlaceSelectionListener হ্যান্ডেল ব্যবহার করা হয়।
নিচের কোডটি ফ্র্যাগমেন্টের রেফারেন্স তৈরি করা এবং
আপনার AutocompleteSupportFragment-এ লিসেনার যোগ করা দেখায়:
Kotlin
// Initialize the AutocompleteSupportFragment. val autocompleteFragment = supportFragmentManager.findFragmentById(R.id.autocomplete_fragment) as AutocompleteSupportFragment // Specify the types of place data to return. autocompleteFragment.setPlaceFields(listOf(Place.Field.ID, Place.Field.DISPLAY_NAME)) // Set up a PlaceSelectionListener to handle the response. autocompleteFragment.setOnPlaceSelectedListener(object : PlaceSelectionListener { override fun onPlaceSelected(place: Place) { binding.autocompleteResult.text = getString( R.string.place_selection, place.displayName, place.id, place.formattedAddress ) Log.i(TAG, "Place: ${place.displayName}, ${place.id}") } override fun onError(status: Status) { binding.autocompleteResult.text = getString(R.string.an_error_occurred, status) Log.i(TAG, "An error occurred: $status") } })
Java
// Initialize the AutocompleteSupportFragment. AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment) getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment); // Specify the types of place data to return. assert autocompleteFragment != null; autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME, Place.Field.FORMATTED_ADDRESS)); // Set up a PlaceSelectionListener to handle the response. autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { @Override public void onPlaceSelected(@NonNull Place place) { binding.autocompleteResult.setText( getString( R.string.place_selection, place.getDisplayName(), place.getId(), place.getFormattedAddress() ) ); Log.i(TAG, "Place: " + place.getDisplayName() + ", " + place.getId()); } @Override public void onError(@NonNull Status status) { binding.autocompleteResult.setText(getString(R.string.an_error_occurred, status)); Log.e(TAG, "An error occurred: " + status); } });
বিকল্প ২: অটোকমপ্লিট অ্যাক্টিভিটি লঞ্চ করতে ইনটেন্ট ব্যবহার করা
আপনার অ্যাপ যদি অন্য কোনও নেভিগেশনাল ফ্লো ব্যবহার করতে চায় (যেমন, সার্চ ফিল্ডের পরিবর্তে কোনও আইকন থেকে অটোকমপ্লিট অভিজ্ঞতা ট্রিগার করা), তাহলে আপনার অ্যাপ ইনটেন্ট ব্যবহার করে অটোকমপ্লিট চালু করতে পারে।
ইনটেন্ট ব্যবহার করে অটোমেটিক সম্পূর্ণ করার উইজেট লঞ্চ করতে, এই ধাপগুলি অনুসরণ করুন:
Autocomplete.IntentBuilderব্যবহার করে ইনটেন্ট তৈরি করুন, পছন্দসইAutocompleteমোড পাস করুন।- একটি অ্যাক্টিভিটি ফলাফল লঞ্চার
registerForActivityResultসংজ্ঞায়িত করুন যা ইনটেন্ট লঞ্চ করতে এবং ফলাফলে ব্যবহারকারীর বেছে নেওয়া স্থান সম্পর্কিত পূর্বানুমান হ্যান্ডেল করতে ব্যবহার করা যেতে পারে।
অটোফিল ইনটেন্ট তৈরি করা
নিচের উদাহরণে
Autocomplete.IntentBuilder
ব্যবহার করে ইনটেন্ট হিসেবে অটোমেটিক সম্পূর্ণ করার উইজেট লঞ্চ করার ইনটেন্ট তৈরি করা হয়েছে:
Kotlin
// Set the fields to specify which types of place data to // return after the user has made a selection. val fields = listOf(Place.Field.ID, Place.Field.DISPLAY_NAME, Place.Field.FORMATTED_ADDRESS) val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(listOf(PlaceTypes.ESTABLISHMENT)) .build(this) startAutocomplete.launch(intent)
Java
// Set the fields to specify which types of place data to // return after the user has made a selection. List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME, Place.Field.FORMATTED_ADDRESS); // Start the autocomplete intent. Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(List.of(PlaceTypes.ESTABLISHMENT)) .build(this); startAutocomplete.launch(intent);
অটোকমপ্লিট উইজেট লঞ্চ করার জন্য কোনও ইনটেন্ট ব্যবহার করার সময়, আপনি ওভারলে বা ফুল-স্ক্রিন ডিসপ্লে মোড থেকে বেছে নিতে পারবেন। নিম্নলিখিত স্ক্রিনশটে প্রতিটি ডিসপ্লে মোড দেখানো হয়েছে:
ইনটেন্ট ফলাফলের জন্য কলব্যাক রেজিস্টার করুন
ব্যবহারকারী কোনও জায়গা বেছে নিলে বিজ্ঞপ্তি পেতে, একটি
registerForActivityResult() লঞ্চার নির্দিষ্ট করুন, যা অ্যাক্টিভিটি লঞ্চ করে এবং
নিচের উদাহরণে দেখানো ফলাফলও ম্যানেজ করে। ব্যবহারকারী কোনও পূর্বাভাস বেছে নিলে, সেটি
ফলাফল অবজেক্টে থাকা ইনটেন্টে ডেলিভার করা হবে। যেহেতু ইনটেন্টটি
Autocomplete.IntentBuilder তৈরি করেছে, তাই Autocomplete.getPlaceFromIntent() পদ্ধতিটি
এটি থেকে Place অবজেক্ট এক্সট্র্যাক্ট করতে পারে।
Kotlin
private val startAutocomplete = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> if (result.resultCode == RESULT_OK) { val intent = result.data if (intent != null) { val place = Autocomplete.getPlaceFromIntent(intent) binding.autocompleteResult.text = getString( R.string.place_selection, place.displayName, place.id, place.formattedAddress) Log.i( TAG, "Place: ${place.displayName}, ${place.id}" ) } } else if (result.resultCode == RESULT_CANCELED) { // The user canceled the operation. binding.autocompleteResult.setText(R.string.user_canceled_autocomplete) Log.i(TAG, "User canceled autocomplete") } }
Java
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); binding.autocompleteResult.setText( getString( R.string.place_selection, place.getDisplayName(), place.getId(), place.getFormattedAddress() ) ); Log.i(TAG, "Place: " + place.getDisplayName() + ", " + place.getId()); } } else if (result.getResultCode() == Activity.RESULT_CANCELED) { // The user canceled the operation. binding.autocompleteResult.setText(R.string.user_canceled_autocomplete); Log.i(TAG, "User canceled autocomplete"); } });
প্রোগ্রাম্যাটিক্যালি জায়গার পূর্বাভাস পাওয়া
আপনি
অটোফিল উইজেটের মাধ্যমে প্রদান করা UI-এর বিকল্প হিসেবে কাস্টম সার্চ UI তৈরি করতে পারবেন। এটি করতে, আপনার অ্যাপকে অবশ্যই প্রোগ্রাম্যাটিকভাবে জায়গার পূর্বাভাস
পেতে হবে। আপনার অ্যাপ,
PlacesClient.findAutocompletePredictions()
কল করে,
FindAutocompletePredictionsRequest
অবজেক্টকে নিম্নলিখিত প্যারামিটার সহ পাস করে,
অটোকমপ্লিট API থেকে সম্ভাব্য জায়গার নাম এবং/অথবা
ঠিকানার তালিকা পেতে পারে:
- প্রয়োজন: ব্যবহারকারীর টাইপ করা টেক্সট সহ
queryস্ট্রিং। - সাজেস্ট করা: A
AutocompleteSessionToken, যা বিলিংয়ের উদ্দেশ্যে ব্যবহারকারীর সার্চের কোয়েরি ও বেছে নেওয়ার ফেজকে আলাদা সেশনে গ্রুপ করে। ব্যবহারকারী কোনও কোয়েরি টাইপ করা শুরু করলে সেশন শুরু হয় এবং তিনি কোনও জায়গা বেছে নিলে সেশন শেষ হয়। - সাজেস্ট করা হয়েছে: একটি
RectangularBoundsঅবজেক্ট, যা নির্দিষ্ট অঞ্চলে ফলাফল সীমাবদ্ধ করতে অক্ষাংশ এবং দ্রাঘিমাংশের সীমা নির্দিষ্ট করে। - ঐচ্ছিক: দুই অক্ষরের এক বা একাধিক দেশের কোড (ISO 3166-1 Alpha-2), যা সেই দেশ বা দেশগুলিকে নির্দেশ করে যেখানে ফলাফল সীমাবদ্ধ করা উচিত।
ঐচ্ছিক: একটি
TypeFilter, যা আপনি নির্দিষ্ট জায়গার ধরনের ফলাফল সীমাবদ্ধ করতে ব্যবহার করতে পারেন। নিম্নলিখিত ধরনের জায়গা কাজ করে:TypeFilter.GEOCODE– ব্যবসার পরিবর্তে শুধুমাত্র জিওকোডিং ফলাফল ফেরত দেয়। যেখানে নির্দিষ্ট লোকেশন অনিশ্চিত হতে পারে, সেখানে ফলাফলকে দ্ব্যর্থহীন করতে এই অনুরোধ ব্যবহার করুন।TypeFilter.ADDRESS– শুধু সঠিক ঠিকানা সহ অটোকমপ্লিট ফলাফল দেখায়। ব্যবহারকারী যে সম্পূর্ণ নির্দিষ্ট ঠিকানা খুঁজছেন তা আপনি জানলে এই ধরনের কোয়েরি ব্যবহার করুন।TypeFilter.ESTABLISHMENT– শুধু সেইসব জায়গা দেখায় যেগুলি ব্যবসা।TypeFilter.REGIONS– শুধুমাত্র সেইসব জায়গা দেখায় যা নিম্নলিখিত ধরনের সাথে ম্যাচ করে:LOCALITYSUBLOCALITYPOSTAL_CODECOUNTRYADMINISTRATIVE_AREA_LEVEL_1ADMINISTRATIVE_AREA_LEVEL_2TypeFilter.CITIES– শুধুমাত্রLOCALITYবাADMINISTRATIVE_AREA_LEVEL_3-এর সাথে ম্যাচ করা ফলাফল দেখায়।
ঐচ্ছিক: অনুরোধের উৎসের লোকেশন নির্দিষ্ট করে এমন একটি
LatLng। আপনিsetOrigin()কল করলে, পরিষেবাটি নির্দিষ্ট উৎস থেকে মিটারে (distanceMeters) দূরত্ব দেখায়, উত্তরে প্রতিটি অটোমেটিক সম্পূর্ণ হওয়া পূর্বাভাসের জন্য।
জায়গার ধরন সম্পর্কে তথ্যের জন্য, জায়গার ধরন সংক্রান্ত নির্দেশিকা দেখুন।
নিচের উদাহরণে
PlacesClient.findAutocompletePredictions()-এ করা একটি সম্পূর্ণ কল দেখানো হয়েছে।
Kotlin
// Create a new token for the autocomplete session. Pass this to FindAutocompletePredictionsRequest, // and once again when the user makes a selection (for example when calling fetchPlace()). val token = AutocompleteSessionToken.newInstance() // Create a RectangularBounds object. val bounds = RectangularBounds.newInstance( LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596) ) // Use the builder to create a FindAutocompletePredictionsRequest. val request = FindAutocompletePredictionsRequest.builder() // Call either setLocationBias() OR setLocationRestriction(). .setLocationBias(bounds) //.setLocationRestriction(bounds) .setOrigin(LatLng(-33.8749937, 151.2041382)) .setCountries("AU", "NZ") .setTypesFilter(listOf(PlaceTypes.ESTABLISHMENT)) .setSessionToken(token) .setQuery(query) .build() placesClient.findAutocompletePredictions(request) .addOnSuccessListener { response: FindAutocompletePredictionsResponse -> val builder = StringBuilder() for (prediction in response.autocompletePredictions) { builder.append(prediction.getPrimaryText(null).toString()).append("\n") Log.i(TAG, prediction.placeId) Log.i(TAG, prediction.getPrimaryText(null).toString()) } binding.autocompleteResult.text = builder.toString() }.addOnFailureListener { exception: Exception? -> if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.statusCode}") binding.autocompleteResult.text = getString(R.string.place_not_found, exception.message) } }
Java
// Create a new token for the autocomplete session. Pass this to FindAutocompletePredictionsRequest, // and once again when the user makes a selection (for example when calling fetchPlace()). AutocompleteSessionToken token = AutocompleteSessionToken.newInstance(); // Create a RectangularBounds object. RectangularBounds bounds = RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596)); // Use the builder to create a FindAutocompletePredictionsRequest. FindAutocompletePredictionsRequest request = FindAutocompletePredictionsRequest.builder() // Call either setLocationBias() OR setLocationRestriction(). .setLocationBias(bounds) //.setLocationRestriction(bounds) .setOrigin(new LatLng(-33.8749937, 151.2041382)) .setCountries("AU", "NZ") .setTypesFilter(List.of(PlaceTypes.ESTABLISHMENT)) .setSessionToken(token) .setQuery(query) .build(); placesClient.findAutocompletePredictions(request).addOnSuccessListener((response) -> { StringBuilder builder = new StringBuilder(); for (AutocompletePrediction prediction : response.getAutocompletePredictions()) { builder.append(prediction.getPrimaryText(null).toString()).append("\n"); Log.i(TAG, prediction.getPlaceId()); Log.i(TAG, prediction.getPrimaryText(null).toString()); } binding.autocompleteResult.setText(builder.toString()); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException apiException) { Log.e(TAG, "Place not found: " + apiException.getStatusCode()); binding.autocompleteResult.setText(getString(R.string.place_not_found, apiException.getMessage())); } });
API একটি
FindAutocompletePredictionsResponse
Task-এ ফেরত দেয়। FindAutocompletePredictionsResponse-এ
AutocompletePrediction
অবজেক্টের তালিকা আছে যা অনুমান করা জায়গা দেখায়। কোয়েরি ও ফিল্টার করার মাপকাঠি অনুযায়ী কোনও পরিচিত জায়গা না থাকলে, তালিকাটি খালি থাকতে পারে।
প্রতিটি পূর্বানুমানিত জায়গার জন্য, জায়গার বিবরণ পেতে আপনি নিম্নলিখিত মেথড কল করতে পারবেন:
getFullText(CharacterStyle)কোনও জায়গার বিবরণের সম্পূর্ণ টেক্সট দেখায়। এটি প্রাইমারি ও সেকেন্ডারি টেক্সটের একটি কম্বিনেশন। যেমন: "আইফেল টাওয়ার, অ্যাভিনিউ আনাতোল ফ্রান্স, প্যারিস, ফ্রান্স"। এছাড়াও, এই পদ্ধতি আপনাকে বিবরণের সেইসব বিভাগ হাইলাইট করতে দেয় যেগুলি আপনার পছন্দমতো স্টাইলে সার্চের সাথে ম্যাচ করে, এর জন্যCharacterStyleব্যবহার করা হয়।CharacterStyleপ্যারামিটারটি ঐচ্ছিক। আপনি কোনও হাইলাইটিং না চাইলে এটি নাল হিসেবে সেট করুন।getPrimaryText(CharacterStyle)কোনও জায়গার বিবরণ সহ মূল টেক্সট দেখায়। এটি সাধারণত জায়গার নাম হয়। যেমন: "আইফেল টাওয়ার" এবং "১২৩ পিট স্ট্রিট"।getSecondaryText(CharacterStyle)কোনও জায়গার বিবরণের সাবসিডিয়ারি টেক্সট দেখায়। এটি সহায়ক হয়, যেমন, অটোমেটিক পূরণ সংক্রান্ত পূর্বাভাষ দেখানোর সময় দ্বিতীয় লাইন হিসেবে। যেমন: "Avenue Anatole France, Paris, France" এবং "Sydney, New South Wales"।getPlaceId()পূর্বাভাস দেওয়া জায়গার আইডি দেখায়। প্লেস আইডি হল একটি টেক্সচুয়াল আইডেন্টিফায়ার যা কোনও জায়গাকে অনন্যভাবে শনাক্ত করে, যা আপনি পরে আবারPlaceঅবজেক্ট পুনরুদ্ধার করতে ব্যবহার করতে পারেন। Android-এর জন্য Places SDK-তে প্লেস আইডি সম্পর্কে আরও তথ্যের জন্য, জায়গার বিবরণ দেখুন। প্লেস আইডি সম্পর্কে সাধারণ তথ্যের জন্য, প্লেস আইডি ওভারভিউ দেখুন।getPlaceTypes()এই জায়গার সাথে যুক্ত জায়গার ধরনের তালিকা রিটার্ন করে।getDistanceMeters()এই জায়গা ও অনুরোধে উল্লেখ করা অরিজিনের মধ্যে সরলরেখায় দূরত্ব মিটার হিসেবে দেখায়।
সেশন টোকেন
সেশন টোকেন, ব্যবহারকারীর অটোফিল সার্চের কোয়েরি ও বেছে নেওয়ার ফেজকে বিলিংয়ের উদ্দেশ্যে আলাদা সেশনে গ্রুপ করে। ব্যবহারকারী কোয়েরি টাইপ করা শুরু করলে সেশন শুরু হয় এবং তিনি কোনও জায়গা বেছে নিলে সেশন শেষ হয়। প্রতিটি সেশনে একাধিক কোয়েরি থাকতে পারে, যার পরে একটি জায়গা বেছে নেওয়া হয়। সেশন শেষ হয়ে গেলে, টোকেন আর বৈধ থাকে না; প্রতিটি সেশনের জন্য আপনার অ্যাপকে নতুন টোকেন জেনারেট করতে হবে। আমরা সব প্রোগ্রাম্যাটিক স্বয়ংসম্পূর্ণ সেশনের জন্য সেশন টোকেন ব্যবহার করার সাজেশন দিই (আপনি যখন কোনও ফ্র্যাগমেন্ট এম্বেড করেন বা ইনটেন্ট ব্যবহার করে স্বয়ংসম্পূর্ণ ফিচার চালু করেন, তখন API অটোমেটিক এটি ম্যানেজ করে)।
Android-এর জন্য Places SDK প্রতিটি সেশন শনাক্ত করতে
AutocompleteSessionToken
ব্যবহার করে। প্রতিটি নতুন সেশন শুরু করার সময় আপনার অ্যাপকে একটি নতুন সেশন টোকেন পাস করতে হবে, তারপরে সেই একই টোকেন, একটি প্লেস আইডির সাথে, fetchPlace()-এ
পরবর্তী কলে পাস করতে হবে
যাতে ব্যবহারকারীর বেছে নেওয়া জায়গার জন্য জায়গার বিবরণ পাওয়া যায়।
সেশন টোকেন সম্পর্কে আরও জানুন।
অটোমেটিক সম্পূর্ণ করার ফলাফল সীমাবদ্ধ করা
আপনি অটোমেটিক সম্পূর্ণ হওয়া ফলাফল নির্দিষ্ট ভৌগোলিক অঞ্চলে সীমাবদ্ধ করতে পারেন এবং/অথবা
এক বা একাধিক ধরনের জায়গা বা সর্বাধিক পাঁচটি দেশের জন্য ফলাফল ফিল্টার করতে পারেন। আপনি
এইসব সীমাবদ্ধতা অটোমেটিক সম্পূর্ণ করার অ্যাক্টিভিটি,
AutocompleteSupportFragment এবং প্রোগ্র্যামাটিক অটোমেটিক সম্পূর্ণ করার API-তে প্রয়োগ করতে পারবেন।
ফলাফল সীমিত করতে, নিম্নলিখিত কাজগুলি করুন:
- নির্দিষ্ট অঞ্চলের মধ্যে ফলাফল পছন্দ করতে,
setLocationBias()কল করুন (নির্দিষ্ট অঞ্চলের বাইরের কিছু ফলাফল এখনও দেখানো হতে পারে)। - নির্দিষ্ট অঞ্চলের মধ্যে ফলাফল শুধুমাত্র দেখাতে,
setLocationRestriction()কল করুন (নির্দিষ্ট অঞ্চলের মধ্যে শুধুমাত্র ফলাফল ফেরত দেওয়া হবে)। - শুধুমাত্র নির্দিষ্ট ধরনের জায়গার সাথে মানানসই ফলাফল পেতে,
setTypesFilter()কল করুন (যেমন,TypeFilter.ADDRESSউল্লেখ করলে শুধুমাত্র সুনির্দিষ্ট ঠিকানা সহ ফলাফল পাওয়া যাবে)। - সর্বাধিক পাঁচটি নির্দিষ্ট দেশের মধ্যে ফলাফল পেতে,
setCountries()কল করুন। দেশকে অবশ্যই দুই অক্ষরের ISO 3166-1 Alpha-2 মানানসই দেশের কোড হিসেবে পাস করতে হবে।
নির্দিষ্ট অঞ্চলের জন্য পক্ষপাতদুষ্ট ফলাফল
কোনও নির্দিষ্ট ভৌগোলিক অঞ্চলের জন্য অটোকমপ্লিট ফলাফলকে পক্ষপাতদুষ্ট করতে, setLocationBias() কল করুন, একটি
RectangularBounds পাস করুন।
নিচের কোডের উদাহরণে দেখানো হয়েছে যে ফ্র্যাগমেন্ট ইনস্ট্যান্সে setLocationBias() কল করা হচ্ছে যাতে
অস্ট্রেলিয়ার সিডনি অঞ্চলের জন্য অটোকমপ্লিট সাজেশন বায়াস করা যায়।
Kotlin
autocompleteFragment.setLocationBias(bounds)
Java
autocompleteFragment.setLocationBias( RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596) ) );
ফলাফল নির্দিষ্ট অঞ্চলে সীমাবদ্ধ করা
অটোমেটিক সম্পূর্ণ হওয়ার ফলাফলকে নির্দিষ্ট ভৌগোলিক অঞ্চলে সীমাবদ্ধ করতে, setLocationRestriction() কল করুন, একটি
RectangularBounds পাস করুন।
নিচের কোডের উদাহরণে দেখানো হয়েছে যে কীভাবে setLocationRestriction() কল করে কোনও
ফ্র্যাগমেন্ট ইনস্ট্যান্সের অটোকমপ্লিট সাজেশনকে অস্ট্রেলিয়ার সিডনি অঞ্চলের দিকে
বায়াস করা যায়।
Kotlin
autocompleteFragment.setLocationRestriction(bounds)
Java
autocompleteFragment.setLocationRestriction( RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596) ) );
মনে রাখবেন: এই বিধিনিষেধ শুধুমাত্র সম্পূর্ণ রুটের ক্ষেত্রে প্রযোজ্য, আয়তাকার সীমার বাইরে অবস্থিত সিন্থেটিক ফলাফল এমন রুটের উপর ভিত্তি করে দেখানো হতে পারে যা লোকেশন সংক্রান্ত বিধিনিষেধের সাথে ওভারল্যাপ করে।
জায়গার ধরন বা ধরনের সংগ্রহ অনুযায়ী ফলাফল ফিল্টার করুন
আপনি অটো-কমপ্লিট অনুরোধ থেকে পাওয়া ফলাফল সীমাবদ্ধ করতে পারেন যাতে সেগুলি শুধুমাত্র নির্দিষ্ট ধরনের জায়গা দেখায়। জায়গার ধরন-এর ১, ২ ও ৩ নম্বর টেবিলে তালিকাভুক্ত জায়গার ধরন বা ধরনের সংগ্রহ ব্যবহার করে একটি ফিল্টার নির্দিষ্ট করুন। কিছু উল্লেখ করা না থাকলে, সব ধরনের ফলাফল দেখানো হয়।
অটোমেটিক সম্পূর্ণ হওয়া ফলাফল ফিল্টার করতে, ফিল্টার সেট করতে
setTypesFilter()
কল করুন।
কোনও ধরন বা ধরন কালেকশন ফিল্টার নির্দিষ্ট করতে:
setTypesFilter()কল করুন এবং জায়গার ধরন-এ দেখানো টেবিল ১ ও টেবিল ২ থেকে সর্বাধিক পাঁচটি টাইপ ভ্যালু নির্দিষ্ট করুন। টাইপ ভ্যালুগুলিPlaceTypes-এ ধ্রুবক দ্বারা সংজ্ঞায়িত করা হয়।setTypesFilter()কল করুন এবং প্লেস টাইপ-এ দেখানো টেবিল ৩ থেকে টাইপ কালেকশন নির্দিষ্ট করুন। কালেকশনের ভ্যালুPlaceTypes-এ কনস্ট্যান্ট দ্বারা সংজ্ঞায়িত করা হয়।অনুরোধে টেবিল ৩ থেকে শুধুমাত্র একটি ধরন অনুমোদিত। আপনি যদি সারণী ৩ থেকে কোনও মান নির্দিষ্ট করেন, তাহলে সারণী ১ বা সারণী ২ থেকে কোনও মান নির্দিষ্ট করতে পারবেন না। আপনি যদি তা করেন, তাহলে একটি সমস্যা হবে।
নিচের কোডের উদাহরণে setTypesFilter()-কে
AutocompleteSupportFragment-এর উপর কল করা হয়েছে এবং একাধিক ধরনের ভ্যালু নির্দিষ্ট করা হয়েছে।
Kotlin
autocompleteFragment.setTypesFilter(listOf("landmark", "restaurant", "store"))
Java
autocompleteFragment.setTypesFilter(List.of("landmark", "restaurant", "store"));
নিম্নলিখিত কোডের উদাহরণে দেখানো হয়েছে যে কীভাবে setTypesFilter()-কে
AutocompleteSupportFragment-এ কল করা হয় যাতে টাইপ কালেকশন নির্দিষ্ট করে শুধুমাত্র সঠিক ঠিকানা সহ ফলাফল
ফেরত দেওয়ার জন্য ফিল্টার সেট করা যায়।
Kotlin
autocompleteFragment.setTypesFilter(listOf(PlaceTypes.ADDRESS))
Java
autocompleteFragment.setTypesFilter(List.of(PlaceTypes.ESTABLISHMENT));
নিম্নলিখিত কোডের উদাহরণে দেখানো হয়েছে যে কীভাবে একটি IntentBuilder-এ setTypesFilter() কল করে
একটি ফিল্টার সেট করা যায় যা একটি টাইপ কালেকশন নির্দিষ্ট করে
শুধুমাত্র সঠিক ঠিকানা সহ ফলাফল দেখায়।
Kotlin
val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(listOf(PlaceTypes.ESTABLISHMENT)) .build(this)
Java
Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(List.of(PlaceTypes.ESTABLISHMENT)) .build(this);
দেশ অনুযায়ী ফলাফল ফিল্টার করুন
সর্বাধিক পাঁচটি দেশের জন্য অটোমেটিক সম্পূর্ণ হওয়া ফলাফল ফিল্টার করতে, দেশের কোড সেট করতে
setCountries()
কল করুন।
তারপর, ফ্র্যাগমেন্ট বা ইনটেন্টে ফিল্টার পাস করুন। দেশকে অবশ্যই
দুটি অক্ষর, ISO 3166-1 Alpha-2 মানানসই দেশের
কোড হিসেবে পাস করতে হবে।
নিম্নলিখিত কোডের উদাহরণে দেখানো হয়েছে যে কীভাবে AutocompleteSupportFragment-এ setCountries() কল করতে হয়, যাতে ফিল্টার সেট করে শুধু নির্দিষ্ট দেশের মধ্যে ফলাফল দেখানো যায়।
Kotlin
autocompleteFragment.setCountries("AU", "NZ")
Java
autocompleteFragment.setCountries("AU", "NZ");
ব্যবহারের সীমা
Android-এর জন্য Places SDK (পুরনো) সহ Places API (পুরনো) ব্যবহারের ক্ষেত্রে, প্রতিদিন সর্বাধিক অনুরোধের (QPD) সীমা আর প্রযোজ্য নয়। তবে, ব্যবহারের উপর নিম্নলিখিত সীমা এখনও প্রযোজ্য:
- রেট লিমিট হল ৬,০০০ QPM (প্রতি মিনিটে অনুরোধ)। একই প্রোজেক্টের ক্রেডেনশিয়াল ব্যবহার করে সব অ্যাপ্লিকেশনের জন্য ক্লায়েন্ট-সাইড ও সার্ভার-সাইড অনুরোধের যোগফল হিসেবে এটি গণনা করা হয়।
আপনার অ্যাপে অ্যাট্রিবিউশন দেখান
- আপনার অ্যাপ যদি প্রোগ্রাম্যাটিক উপায়ে অটোফিল পরিষেবা ব্যবহার করে, তাহলে আপনার UI-কে 'Google দ্বারা পরিচালিত' অ্যাট্রিবিউশন দেখাতে হবে অথবা Google-এর ব্র্যান্ড করা ম্যাপের মধ্যে দেখাতে হবে।
- আপনার অ্যাপ যদি অটোমেটিক সম্পূর্ণ করার উইজেট ব্যবহার করে, তাহলে অতিরিক্ত কোনও অ্যাকশন নেওয়ার প্রয়োজন নেই (প্রয়োজনীয় অ্যাট্রিবিউশন ডিফল্ট হিসেবে দেখানো হয়)।
- কোনও প্লেসকে আইডি দিয়ে পাওয়ার পরে, আপনি যদি অতিরিক্ত প্লেস সংক্রান্ত তথ্য রিট্রিভ ও ডিসপ্লে করেন, তাহলে আপনাকে অবশ্যই থার্ড-পার্টি অ্যাট্রিবিউশনও ডিসপ্লে করতে হবে।
আরও বিবরণের জন্য, অ্যাট্রিবিউশন সংক্রান্ত ডকুমেন্টেশন দেখুন।
জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) অপ্টিমাইজেশন
এই বিভাগে, আপনাকে Place Autocomplete (Legacy) পরিষেবা থেকে সবচেয়ে বেশি সুবিধা পেতে সাহায্য করার জন্য পেশাদার পদ্ধতি বর্ণনা করা হয়েছে।
এখানে কিছু সাধারণ নির্দেশিকা দেওয়া হল:
- কার্যকর ইউজার ইন্টারফেস ডেভেলপ করার সবচেয়ে দ্রুত উপায় হল Maps JavaScript API প্লেস অটোকমপ্লিট (লিগ্যাসি) উইজেট, Android-এর জন্য Places SDK প্লেস অটোকমপ্লিট (লিগ্যাসি) উইজেট, অথবা iOS-এর জন্য Places SDK প্লেস অটোকমপ্লিট (লিগ্যাসি) UI কন্ট্রোল ব্যবহার করা।
- শুরু থেকেই জায়গা অটোমেটিক সম্পূর্ণ করা (Legacy) ডেটা ফিল্ড সম্পর্কে প্রয়োজনীয় তথ্য জেনে নিন।
- লোকেশন বায়াসিং ও লোকেশন বিধিনিষেধ ফিল্ড ঐচ্ছিক হলেও অটো-কমপ্লিট পারফর্ম্যান্সের উপর এর উল্লেখযোগ্য প্রভাব পড়তে পারে।
- API কোনও সমস্যা রিটার্ন করলে, আপনার অ্যাপ যাতে ঠিকভাবে কাজ করা বন্ধ করে দেয় তা নিশ্চিত করতে সমস্যা ম্যানেজ করার সুবিধা ব্যবহার করুন।
- কোনও কিছু বেছে না নেওয়া হলে আপনার অ্যাপ যেন সেটি ম্যানেজ করতে পারে এবং ব্যবহারকারীকে চালিয়ে যাওয়ার উপায় অফার করে তা নিশ্চিত করুন।
খরচ অপ্টিমাইজ করার পেশাদার পদ্ধতি
বেসিক খরচ অপ্টিমাইজেশন
Place Autocomplete (Legacy) পরিষেবা ব্যবহারের খরচ অপ্টিমাইজ করতে, Place Details (Legacy) এবং Place Autocomplete (Legacy) উইজেটে ফিল্ড মাস্ক ব্যবহার করে শুধুমাত্র আপনার প্রয়োজনীয় Place Autocomplete (Legacy) ডেটা ফিল্ড রিটার্ন করুন।
উন্নত খরচ অপ্টিমাইজেশন
Place Autocomplete (Legacy) প্রোগ্রামেটিক প্রয়োগের কথা বিবেচনা করুন যাতে SKU: Autocomplete - অনুরোধ পিছু দাম অ্যাক্সেস করা যায় এবং Place Details (Legacy)-এর পরিবর্তে বেছে নেওয়া জায়গার জন্য Geocoding API ফলাফল অনুরোধ করা যায়। নিম্নলিখিত দুটি শর্ত পূরণ হলে, জিওকোডিং API-এর সাথে প্রতি-অনুরোধের মূল্য নির্ধারণ, প্রতি-সেশন (সেশন-ভিত্তিক) মূল্য নির্ধারণের চেয়ে বেশি সাশ্রয়ী হয়:
- ব্যবহারকারীর বেছে নেওয়া জায়গার অক্ষাংশ ও দ্রাঘিমাংশ বা ঠিকানা জানতে চাইলে, Geocoding API এই তথ্য Place Details (Legacy) কলের চেয়ে কম খরচে প্রদান করে।
- ব্যবহারকারীরা যদি গড়ে চারটি বা তার কম জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) পূর্বাভাসের অনুরোধের মধ্যে একটি অটোমেটিক সম্পূর্ণ করা পূর্বাভাস বেছে নেন, তাহলে প্রতি-অনুরোধের মূল্য প্রতি-সেশনের মূল্যের চেয়ে বেশি সাশ্রয়ী হতে পারে।
আপনার অ্যাপ্লিকেশনে কি বেছে নেওয়া পূর্বাভাসের ঠিকানা ও অক্ষাংশ/দ্রাঘিমাংশ ছাড়া অন্য কোনও তথ্য প্রয়োজন?
হ্যাঁ, আরও বিবরণ প্রয়োজন
জায়গার বিবরণ (লিগ্যাসি) সহ সেশন-ভিত্তিক জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) ব্যবহার করুন।
যেহেতু আপনার অ্যাপ্লিকেশনের জন্য জায়গার বিবরণ (লিগ্যাসি) প্রয়োজন, যেমন জায়গার নাম, ব্যবসার স্ট্যাটাস
বা খোলা থাকার সময়, তাই আপনার Place Autocomplete (লিগ্যাসি) প্রয়োগের ক্ষেত্রে সেশন টোকেন
(প্রোগ্রাম্যাটিক্যালি বা
JavaScript,
Android
বা iOS
উইজেটে বিল্ট-ইন) প্রতি সেশনে
এবং প্রযোজ্য Places Data SKU ব্যবহার করা উচিত,
আপনি কোন কোন জায়গার ডেটা ফিল্ডের জন্য অনুরোধ করছেন তার উপর নির্ভর করে।১
উইজেট প্রয়োগ করা
সেশন ম্যানেজমেন্ট অটোমেটিক
JavaScript,
Android,
বা iOS
উইজেটে বিল্ট-ইন থাকে। এর মধ্যে জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) এবং বেছে নেওয়া পূর্বাভাসের উপর ভিত্তি করে
জায়গার বিবরণ (লিগ্যাসি) সংক্রান্ত অনুরোধ অন্তর্ভুক্ত। আপনার প্রয়োজনীয় fields প্যারামিটার উল্লেখ করতে ভুলবেন না, যাতে
আপনি শুধু
জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) ডেটা ফিল্ড
অনুরোধ করছেন তা নিশ্চিত করা যায়।
প্রোগ্রামাটিক প্রয়োগ
আপনার Place Autocomplete (Legacy) অনুরোধের সাথে
সেশন টোকেন
ব্যবহার করুন। বেছে নেওয়া পূর্বাভাসের জন্য জায়গার বিবরণ (পুরনো) সংক্রান্ত অনুরোধ করার সময়, নিম্নলিখিত প্যারামিটারগুলি অন্তর্ভুক্ত করুন:
- প্লেস অটোকমপ্লিট (লিগ্যাসি) রেসপন্স থেকে পাওয়া প্লেস আইডি
- Place Autocomplete (Legacy) অনুরোধে ব্যবহৃত সেশন টোকেন
fieldsপ্যারামিটারটি আপনার প্রয়োজনীয় জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) ডেটা ফিল্ড নির্দিষ্ট করে
না, শুধু ঠিকানা ও লোকেশন প্রয়োজন
আপনার প্লেস অটোকমপ্লিট (Legacy) ব্যবহারের পারফর্ম্যান্সের উপর নির্ভর করে, আপনার অ্যাপ্লিকেশনের জন্য প্লেস বিবরণ (Legacy)-এর চেয়ে জিওকোডিং API আরও সাশ্রয়ী বিকল্প হতে পারে। প্রতিটি অ্যাপ্লিকেশনের Place Autocomplete (Legacy) কার্যকারিতা নির্ভর করে ব্যবহারকারীরা কী লিখছেন, অ্যাপ্লিকেশনটি কোথায় ব্যবহার করা হচ্ছে এবং পারফর্ম্যান্স অপ্টিমাইজেশনের সেরা পদ্ধতি প্রয়োগ করা হয়েছে কিনা তার উপর।
নিচের প্রশ্নের উত্তর দিতে, আপনার অ্যাপ্লিকেশনে কোনও 'প্লেস অটোকমপ্লিট (Legacy)' সাজেশন বেছে নেওয়ার আগে একজন ব্যবহারকারী গড়ে কতগুলি অক্ষর টাইপ করেন তা বিশ্লেষণ করুন।
আপনার ব্যবহারকারীরা কি গড়ে চারটি বা তার কম অনুরোধে কোনও 'প্লেস অটোকমপ্লিট (Legacy)' সাজেশন বেছে নেন?
হ্যাঁ
সেশন টোকেন ছাড়া প্রোগ্রামাটিক পদ্ধতিতে Place Autocomplete (Legacy) প্রয়োগ করুন এবং বেছে নেওয়া জায়গার পূর্বাভাসের জন্য Geocoding API কল করুন।
Geocoding API, ঠিকানা ও অক্ষাংশ/দ্রাঘিমাংশ কোঅর্ডিনেট প্রদান করে।
চারটি
Autocomplete - Per Request
অনুরোধ এবং বেছে নেওয়া জায়গার পূর্বাভাসের জন্য একটি Geocoding API
কল করার খরচ, সেশন প্রতি Place Autocomplete (Legacy)
খরচের চেয়ে কম।১
আপনার ব্যবহারকারীরা যাতে আরও কম অক্ষর টাইপ করেই তাদের কাঙ্ক্ষিত পূর্বাভাস পেতে পারেন, তার জন্য পারফর্ম্যান্স সংক্রান্ত পেশাদার পদ্ধতি প্রয়োগ করার কথা বিবেচনা করুন।
না
'জায়গা অটোমেটিক সম্পূর্ণ করা' (Legacy) ফিচারের সাথে সেশন-ভিত্তিক 'জায়গার বিবরণ' (Legacy) ফিচার ব্যবহার করুন।
ব্যবহারকারী কোনও জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) সংক্রান্ত পূর্বাভাস বেছে নেওয়ার আগে আপনি যতগুলি অনুরোধ করবেন বলে আশা করেন,
তার গড় সংখ্যা সেশন প্রতি দামের থেকে বেশি, তাই আপনার জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) সংক্রান্ত প্রয়োগের ক্ষেত্রে
জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) সংক্রান্ত অনুরোধ এবং সংশ্লিষ্ট স্থানের বিবরণ (লিগ্যাসি) সংক্রান্ত অনুরোধ,
উভয়ের জন্যই সেশন টোকেন ব্যবহার করা উচিত
প্রতি সেশন।
১
উইজেট প্রয়োগ করা
সেশন ম্যানেজমেন্ট অটোমেটিক
JavaScript,
Android
অথবা iOS
উইজেটে তৈরি করা হয়। এর মধ্যে জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) অনুরোধ এবং বেছে নেওয়া পূর্বাভাসের উপর জায়গার বিবরণ (লিগ্যাসি)
অনুরোধ অন্তর্ভুক্ত। আপনি শুধুমাত্র প্রয়োজনীয় ফিল্ডের অনুরোধ করছেন কিনা তা নিশ্চিত করতে, fields প্যারামিটার
নির্দিষ্ট করতে ভুলবেন না।
প্রোগ্রাম্যাটিক প্রয়োগ
আপনার Place Autocomplete (Legacy) অনুরোধের সাথে
সেশন টোকেন
ব্যবহার করুন।
বেছে নেওয়া পূর্বানুমান সম্পর্কে 'স্থান সম্পর্কিত বিবরণ (পুরনো)' অনুরোধ করার সময়,
নিম্নলিখিত প্যারামিটার অন্তর্ভুক্ত করুন:
- প্লেস অটোকমপ্লিট (লিগ্যাসি) রেসপন্স থেকে পাওয়া প্লেস আইডি
- Place Autocomplete (Legacy) অনুরোধে ব্যবহৃত সেশন টোকেন
fieldsপ্যারামিটার যা প্রাথমিক ডেটা ফিল্ড নির্দিষ্ট করে যেমন ঠিকানা ও জ্যামিতি
প্লেস অটোকমপ্লিট (লিগ্যাসি) অনুরোধে দেরি করার কথা বিবেচনা করুন
আপনি এমন কৌশল অবলম্বন করতে পারেন, যেমন ব্যবহারকারী প্রথম তিন বা চারটি অক্ষর টাইপ না করা পর্যন্ত প্লেস অটোকমপ্লিট (লিগ্যাসি) অনুরোধে দেরি করা, যাতে আপনার অ্যাপ্লিকেশন কম অনুরোধ করে। যেমন, ব্যবহারকারী তৃতীয় অক্ষর টাইপ করার পরে প্রতিটি অক্ষরের জন্য Place Autocomplete (Legacy) অনুরোধ করা মানে হল, ব্যবহারকারী যদি সাতটি অক্ষর টাইপ করেন এবং এমন একটি সাজেশন বেছে নেন যার জন্য আপনি একটি জিওকোডিং API অনুরোধ করেন, তাহলে মোট খরচ হবে ৪টি Place Autocomplete (Legacy) প্রতি অনুরোধ + জিওকোডিং।১
অনুরোধে দেরি করার ফলে আপনার গড় প্রোগ্রাম্যাটিক অনুরোধ চারের কম হলে, আপনি Geocoding API-এর সাথে পারফর্ম্যান্ট Place Autocomplete (Legacy) প্রয়োগ করার নির্দেশিকা অনুসরণ করতে পারেন। মনে রাখবেন, অনুরোধ পাঠাতে দেরি হলে ব্যবহারকারী মনে করতে পারেন যে লেটেন্সি হচ্ছে, কারণ তিনি হয়ত প্রতিটি নতুন কীস্ট্রোকের সাথে সাথে সাজেশন দেখতে চান।
আপনার ব্যবহারকারীরা যাতে কম অক্ষরের মধ্যে তাদের প্রয়োজনীয় পূর্বাভাস পান, সেই জন্য পারফর্ম্যান্স সংক্রান্ত পেশাদার পদ্ধতি প্রয়োগ করার কথা বিবেচনা করুন।
-
খরচের জন্য, Google Maps Platform-এর দামের তালিকা দেখুন।
পারফর্ম্যান্স সংক্রান্ত পেশাদার পদ্ধতি
নিচে উল্লেখ করা নির্দেশিকায়, প্লেস অটোকমপ্লিট (Legacy) পারফর্ম্যান্স অপ্টিমাইজ করার উপায় বর্ণনা করা হয়েছে:
- আপনার জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) ইমপ্লিমেন্টেশনে নিষেধাজ্ঞা আছে এমন দেশ, লোকেশন বায়াসিং এবং (প্রোগ্রাম্যাটিক ইমপ্লিমেন্টেশনের জন্য) পছন্দের ভাষা যোগ করুন। উইজেটের ক্ষেত্রে ভাষার পছন্দ সেট করার প্রয়োজন নেই কারণ এটি ব্যবহারকারীর ব্রাউজার বা মোবাইল ডিভাইস থেকে ভাষার পছন্দ বেছে নেয়।
- জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) ফিচারের সাথে ম্যাপ থাকলে, আপনি ম্যাপ ভিউপোর্ট অনুযায়ী লোকেশন বায়াস করতে পারবেন।
- এমন পরিস্থিতি যখন ব্যবহারকারী প্লেস অটোকমপ্লিট (Legacy) থেকে কোনও সাজেশন বেছে নেন না, সাধারণত
কারণ সেইসব সাজেশন থেকে কাঙ্ক্ষিত ফলাফল-ঠিকানা পাওয়া যায় না, তখন আপনি আরও প্রাসঙ্গিক ফলাফল পাওয়ার জন্য মূল
ব্যবহারকারীর ইনপুট আবার ব্যবহার করতে পারেন:
- আপনি যদি আশা করেন যে ব্যবহারকারী শুধুমাত্র ঠিকানা সংক্রান্ত তথ্য লিখবেন, তাহলে Geocoding API-তে কল করার সময় ব্যবহারকারীর আসল ইনপুট আবার ব্যবহার করুন।
- ব্যবহারকারী নাম বা ঠিকানা দিয়ে নির্দিষ্ট কোনও জায়গা সার্চ করবেন বলে আপনি আশা করলে, জায়গার বিবরণ (পুরনো) সংক্রান্ত অনুরোধ ব্যবহার করুন। ফলাফল শুধুমাত্র নির্দিষ্ট অঞ্চলে প্রত্যাশিত হলে, লোকেশন বায়াসিং ব্যবহার করুন।
- ব্যবহারকারীরা সাবপ্রিমাইজ ঠিকানা ইনপুট করছেন, যেমন কোনও বিল্ডিংয়ের মধ্যে নির্দিষ্ট ইউনিট বা অ্যাপার্টমেন্টের ঠিকানা। যেমন, চেক প্রজাতন্ত্রের ঠিকানা "Stroupežnického 3191/17, Praha" জায়গা অটোমেটিক সম্পূর্ণ করা (লিগ্যাসি) ফিচারে আংশিক পূর্বাভাস দেখায়।
- ব্যবহারকারীরা রোড-সেগমেন্ট প্রিফিক্স সহ ঠিকানা ইনপুট করছেন, যেমন নিউ ইয়র্ক সিটিতে "23-30 29th St, Queens" অথবা হাওয়াইয়ের কাউয়াই দ্বীপে "47-380 Kamehameha Hwy, Kaneohe"।
লোকেশন বায়াসিং
location প্যারামিটার এবং radius
প্যারামিটার পাস করে নির্দিষ্ট এলাকার জন্য পক্ষপাতমূলক ফলাফল। এটি 'জায়গা অটোমেটিক সম্পূর্ণ করা (Legacy)' ফিচারকে নির্দিষ্ট এলাকার মধ্যে ফলাফল দেখানোর জন্য
অগ্রাধিকার দিতে নির্দেশ দেয়। নির্ধারিত এলাকার বাইরে থাকা ফলাফল এখনও
দেখানো হতে পারে। আপনি includedRegionCodes প্যারামিটার ব্যবহার করে ফলাফল ফিল্টার করতে পারেন
যাতে শুধুমাত্র নির্দিষ্ট দেশের মধ্যে থাকা জায়গাগুলি দেখানো হয়।
লোকেশন সংক্রান্ত বিধিনিষেধ
locationRestriction প্যারামিটার পাস করে ফলাফলকে নির্দিষ্ট এলাকায় সীমাবদ্ধ করুন।
এছাড়াও, আপনি location
ও radius প্যারামিটার দ্বারা সংজ্ঞায়িত অঞ্চলে ফলাফল সীমাবদ্ধ করতে পারেন, এর জন্য আপনাকে
strictbounds
প্যারামিটার যোগ করতে হবে। এটি প্লেস অটোকমপ্লিট (Legacy)-কে সেই অঞ্চলের মধ্যে শুধুমাত্র
ফলাফল রিটার্ন করার নির্দেশ দেয়।
সমস্যার সমাধান
যদিও বিভিন্ন ধরনের সমস্যা হতে পারে, তবে আপনার অ্যাপে বেশিরভাগ সমস্যা সাধারণত কনফিগারেশন সংক্রান্ত সমস্যার কারণে হয় (যেমন, ভুল API কী ব্যবহার করা হয়েছে বা API কী ভুলভাবে কনফিগার করা হয়েছে) অথবা কোটা সংক্রান্ত সমস্যা (আপনার অ্যাপ তার কোটা অতিক্রম করেছে)। কোটা সম্পর্কে আরও তথ্য পেতে, ব্যবহারের সীমা দেখুন।
অটোকমপ্লিট কন্ট্রোল ব্যবহার করার সময় কোনও সমস্যা হলে, তা
onActivityResult() কলব্যাকে ফেরত দেওয়া হয়। ফলাফলের স্ট্যাটাস মেসেজ পেতে
Autocomplete.getStatus()-এ কল করুন।