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

স্বয়ংক্রিয় সম্পূর্ণ উইজেট হল একটি অনুসন্ধান সংলাপ যার অন্তর্নির্মিত স্বয়ংক্রিয় সম্পূর্ণ কার্যকারিতা রয়েছে। ব্যবহারকারী যখন অনুসন্ধানের শব্দ প্রবেশ করান, তখন উইজেটটি বেছে নেওয়ার জন্য পূর্বাভাসিত স্থানগুলির একটি তালিকা উপস্থাপন করে। ব্যবহারকারী যখন একটি নির্বাচন করেন, তখন একটি Place উদাহরণ ফেরত পাঠানো হয়, যা আপনার অ্যাপটি নির্বাচিত স্থান সম্পর্কে বিশদ জানতে ব্যবহার করতে পারে।
আপনার অ্যাপে স্বয়ংক্রিয়ভাবে সম্পন্ন উইজেট যোগ করার জন্য দুটি বিকল্প আছে:
- বিকল্প ১: একটি
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 ।
- যদি আপনি Autocomplete ফ্র্যাগমেন্ট ব্যবহার করেন এবং
onActivityResultওভাররাইড করতে চান, তাহলে আপনাকেsuper.onActivityResultকল করতে হবে, অন্যথায় ফ্র্যাগমেন্টটি সঠিকভাবে কাজ করবে না।
একটি কার্যকলাপে একটি PlaceSelectionListener যোগ করুন
ব্যবহারকারীর নির্বাচনের প্রতিক্রিয়ায় একটি স্থান ফেরত দেওয়ার পদ্ধতি PlaceSelectionListener পরিচালনা করে। নিম্নলিখিত কোডটি দেখায় যে খণ্ডটির একটি রেফারেন্স তৈরি করা এবং আপনার AutocompleteSupportFragment এ একটি শ্রোতা যোগ করা:
কোটলিন
// 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") } })
জাভা
// 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মোডটি পাস করে একটি ইন্টেন্ট তৈরি করতেAutocomplete.IntentBuilderব্যবহার করুন। - একটি অ্যাক্টিভিটি রেজাল্ট লঞ্চার
registerForActivityResultসংজ্ঞায়িত করুন যা ইনটেন্ট চালু করতে এবং ফলাফলে ব্যবহারকারীর নির্বাচিত স্থান পূর্বাভাস পরিচালনা করতে ব্যবহার করা যেতে পারে।
একটি স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার ইন্টেন্ট তৈরি করুন
নিচের উদাহরণটি Autocomplete.IntentBuilder ব্যবহার করে একটি ইনটেন্ট তৈরি করে যাতে অটোকম্পলিট উইজেটটি একটি ইনটেন্ট হিসেবে চালু করা যায়:
কোটলিন
// 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)
জাভা
// 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() পদ্ধতিটি এটি থেকে প্লেস অবজেক্টটি বের করতে পারে।
কোটলিন
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") } }
জাভা
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 অবজেক্ট পাস করে autocomplete API থেকে পূর্বাভাসিত স্থানের নাম এবং/অথবা ঠিকানাগুলির একটি তালিকা পেতে পারে:
- প্রয়োজনীয়: ব্যবহারকারীর টাইপ করা টেক্সট সম্বলিত একটি
queryস্ট্রিং। - প্রস্তাবিত: একটি
AutocompleteSessionToken, যা বিলিং উদ্দেশ্যে ব্যবহারকারীর অনুসন্ধানের ক্যোয়ারী এবং নির্বাচনের পর্যায়গুলিকে একটি পৃথক সেশনে গোষ্ঠীভুক্ত করে। ব্যবহারকারী যখন একটি ক্যোয়ারী টাইপ করা শুরু করেন তখন সেশনটি শুরু হয় এবং যখন তারা একটি স্থান নির্বাচন করে তখন শেষ হয়। - প্রস্তাবিত: একটি
RectangularBoundsঅবজেক্ট, যা নির্দিষ্ট অঞ্চলে ফলাফল সীমাবদ্ধ করার জন্য অক্ষাংশ এবং দ্রাঘিমাংশের সীমা নির্দিষ্ট করে। - ঐচ্ছিক: এক বা একাধিক দুই-অক্ষরের দেশের কোড s (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() এ একটি সম্পূর্ণ কল দেখায়।
কোটলিন
// 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) } }
জাভা
// 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 একটি Task এ FindAutocompletePredictionsResponse প্রদান করে। FindAutocompletePredictionsResponse এ AutocompletePrediction অবজেক্টের একটি তালিকা থাকে যা পূর্বাভাসিত স্থানগুলিকে প্রতিনিধিত্ব করে। যদি কোয়েরি এবং ফিল্টার মানদণ্ডের সাথে সম্পর্কিত কোনও পরিচিত স্থান না থাকে তবে তালিকাটি খালি থাকতে পারে।
প্রতিটি পূর্বাভাসিত স্থানের জন্য, স্থানের বিবরণ পুনরুদ্ধার করতে আপনি নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করতে পারেন:
-
getFullText(CharacterStyle)একটি স্থানের বর্ণনার সম্পূর্ণ লেখা ফেরত দেয়। এটি প্রাথমিক এবং গৌণ লেখার সংমিশ্রণ। উদাহরণ: " আইফেল টাওয়ার, অ্যাভিনিউ আনাতোল ফ্রান্স, প্যারিস, ফ্রান্স "। এছাড়াও, এই পদ্ধতিটি আপনাকে বর্ণনার সেই অংশগুলিকে হাইলাইট করতে দেয় যা অনুসন্ধানের সাথে মেলে আপনার পছন্দের স্টাইলের সাথে,CharacterStyleব্যবহার করে।CharacterStyleপ্যারামিটারটি ঐচ্ছিক। যদি আপনার কোনও হাইলাইটিংয়ের প্রয়োজন না হয় তবে এটিকে null এ সেট করুন। -
getPrimaryText(CharacterStyle)একটি স্থানের বর্ণনাকারী মূল লেখাটি ফেরত পাঠায়। এটি সাধারণত স্থানটির নাম। উদাহরণ: " আইফেল টাওয়ার ", এবং " 123 পিট স্ট্রিট "। -
getSecondaryText(CharacterStyle)একটি স্থানের বর্ণনার সহায়ক টেক্সট ফেরত দেয়। উদাহরণস্বরূপ, স্বয়ংক্রিয়ভাবে সম্পূর্ণ পূর্বাভাস দেখানোর সময় এটি দ্বিতীয় লাইন হিসেবে কার্যকর। উদাহরণ: " Avenue Anatole France, Paris, France ", এবং " Sydney, New South Wales "। -
getPlaceId()পূর্বাভাসিত স্থানের স্থান আইডি ফেরত দেয়। স্থান আইডি হল একটি টেক্সটুয়াল শনাক্তকারী যা একটি স্থানকে অনন্যভাবে শনাক্ত করে, যা আপনি পরে আবারPlaceঅবজেক্টটি পুনরুদ্ধার করতে ব্যবহার করতে পারেন। Android এর জন্য Places SDK-তে স্থান আইডি সম্পর্কে আরও তথ্যের জন্য, স্থান বিবরণ দেখুন। স্থান আইডি সম্পর্কে সাধারণ তথ্যের জন্য, স্থান আইডি ওভারভিউ দেখুন। -
getPlaceTypes()এই স্থানের সাথে সম্পর্কিত স্থানের প্রকারের তালিকা প্রদান করে। -
getDistanceMeters()অনুরোধে উল্লেখিত এই স্থান এবং উৎপত্তিস্থলের মধ্যে সরলরেখার দূরত্ব মিটারে ফেরত পাঠায়।
সেশন টোকেন
সেশন টোকেনগুলি বিলিং উদ্দেশ্যে ব্যবহারকারীর স্বয়ংক্রিয়ভাবে সম্পূর্ণ অনুসন্ধানের কোয়েরি এবং নির্বাচনের ধাপগুলিকে একটি পৃথক সেশনে গোষ্ঠীবদ্ধ করে। ব্যবহারকারী যখন একটি কোয়েরি টাইপ করা শুরু করেন তখন সেশনটি শুরু হয় এবং যখন তারা একটি স্থান নির্বাচন করেন তখন এটি শেষ হয়। প্রতিটি সেশনে একাধিক কোয়েরি থাকতে পারে, তারপরে একটি স্থান নির্বাচন করা হয়। একবার একটি সেশন শেষ হয়ে গেলে, টোকেনটি আর বৈধ থাকে না; আপনার অ্যাপকে প্রতিটি সেশনের জন্য একটি নতুন টোকেন তৈরি করতে হবে। আমরা সমস্ত প্রোগ্রাম্যাটিক স্বয়ংক্রিয়ভাবে সম্পূর্ণ সেশনের জন্য সেশন টোকেন ব্যবহার করার পরামর্শ দিই (যখন আপনি একটি খণ্ড এম্বেড করেন, অথবা একটি ইনটেন্ট ব্যবহার করে স্বয়ংক্রিয়ভাবে সম্পূর্ণ চালু করেন, তখন API স্বয়ংক্রিয়ভাবে এটির যত্ন নেয়)।
Android এর জন্য Places SDK প্রতিটি সেশন সনাক্ত করার জন্য একটি AutocompleteSessionToken ব্যবহার করে। আপনার অ্যাপটি প্রতিটি নতুন সেশন শুরু করার সময় একটি নতুন সেশন টোকেন পাস করবে, তারপর ব্যবহারকারীর দ্বারা নির্বাচিত স্থানের জন্য স্থানের বিবরণ পুনরুদ্ধার করার জন্য fetchPlace() কলে একটি Place ID সহ একই টোকেন পাস করবে।
সেশন টোকেন সম্পর্কে আরও জানুন ।
স্বয়ংক্রিয়ভাবে সম্পূর্ণ ফলাফল সীমাবদ্ধ করুন
আপনি একটি নির্দিষ্ট ভৌগোলিক অঞ্চলে স্বয়ংক্রিয়ভাবে সম্পূর্ণ ফলাফল সীমাবদ্ধ করতে পারেন, এবং/অথবা ফলাফলগুলিকে এক বা একাধিক স্থানের ধরণে অথবা সর্বাধিক পাঁচটি দেশে ফিল্টার করতে পারেন। আপনি স্বয়ংক্রিয়ভাবে সম্পূর্ণ কার্যকলাপ, AutocompleteSupportFragment এবং প্রোগ্রাম্যাটিক স্বয়ংক্রিয়ভাবে সম্পূর্ণ API-তে এই সীমাবদ্ধতাগুলি প্রয়োগ করতে পারেন।
ফলাফল সীমিত করতে, নিম্নলিখিতগুলি করুন:
- নির্ধারিত অঞ্চলের মধ্যে ফলাফল পছন্দ করতে ,
setLocationBias()কল করুন (নির্ধারিত অঞ্চলের বাইরের কিছু ফলাফল এখনও ফিরে আসতে পারে)। - শুধুমাত্র নির্ধারিত অঞ্চলের মধ্যে ফলাফল দেখানোর জন্য,
setLocationRestriction()কল করুন (শুধুমাত্র নির্ধারিত অঞ্চলের মধ্যে ফলাফল ফেরত পাঠানো হবে)। - শুধুমাত্র একটি নির্দিষ্ট স্থানের ধরণের সাথে সামঞ্জস্যপূর্ণ ফলাফল ফেরত দিতে,
setTypesFilter()কল করুন (উদাহরণস্বরূপ,TypeFilter.ADDRESSনির্দিষ্ট করলে শুধুমাত্র একটি সুনির্দিষ্ট ঠিকানা সহ ফলাফল ফেরত আসবে)। - শুধুমাত্র পাঁচটি নির্দিষ্ট দেশের মধ্যে ফলাফল ফেরত দিতে,
setCountries()কল করুন। Countries-কে দুই-অক্ষরের, ISO 3166-1 Alpha-2 সামঞ্জস্যপূর্ণ দেশের কোড হিসাবে পাস করতে হবে।
একটি নির্দিষ্ট অঞ্চলে পক্ষপাতের ফলাফল
একটি নির্দিষ্ট ভৌগোলিক অঞ্চলে স্বয়ংক্রিয়ভাবে সম্পূর্ণ ফলাফলকে পক্ষপাতী করতে, setLocationBias() কল করুন, একটি RectangularBounds পাস করুন। নিম্নলিখিত কোড উদাহরণে setLocationBias() কল করার মাধ্যমে একটি ফ্র্যাগমেন্ট ইনস্ট্যান্সের স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার পরামর্শকে অস্ট্রেলিয়ার সিডনির একটি অঞ্চলে পক্ষপাতী করা দেখানো হয়েছে।
কোটলিন
autocompleteFragment.setLocationBias(bounds)
জাভা
autocompleteFragment.setLocationBias( RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596) ) );
ফলাফল নির্দিষ্ট অঞ্চলে সীমাবদ্ধ করুন
একটি নির্দিষ্ট ভৌগোলিক অঞ্চলে স্বয়ংক্রিয়ভাবে সম্পূর্ণ ফলাফল সীমাবদ্ধ করতে, setLocationRestriction() কল করুন, একটি RectangularBounds পাস করুন। নিম্নলিখিত কোড উদাহরণে setLocationRestriction() কল করার মাধ্যমে একটি ফ্র্যাগমেন্ট ইনস্ট্যান্সের স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার পরামর্শগুলি অস্ট্রেলিয়ার সিডনির একটি অঞ্চলে সীমাবদ্ধ করার চেষ্টা দেখানো হয়েছে।
কোটলিন
autocompleteFragment.setLocationRestriction(bounds)
জাভা
autocompleteFragment.setLocationRestriction( RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596) ) );
দ্রষ্টব্য: এই বিধিনিষেধটি শুধুমাত্র সমগ্র রুটের ক্ষেত্রে প্রযোজ্য, আয়তক্ষেত্রাকার সীমানার বাইরে অবস্থিত সিন্থেটিক ফলাফলগুলি এমন একটি রুটের উপর ভিত্তি করে ফেরত পাঠানো যেতে পারে যা অবস্থান সীমার সাথে ওভারল্যাপ করে।
স্থানের ধরণ বা সংগ্রহের ধরণ অনুসারে ফলাফল ফিল্টার করুন
আপনি একটি স্বয়ংক্রিয়ভাবে সম্পন্ন হওয়া অনুরোধ থেকে ফলাফল সীমাবদ্ধ করতে পারেন যাতে তারা শুধুমাত্র একটি নির্দিষ্ট স্থানের ধরণ ফেরত পাঠায়। স্থানের ধরণ ব্যবহার করে একটি ফিল্টার নির্দিষ্ট করুন অথবা স্থানের ধরণ টেবিল ১, ২ এবং ৩-এ তালিকাভুক্ত একটি প্রকার সংগ্রহ উল্লেখ করুন। যদি কিছু নির্দিষ্ট না করা থাকে, তাহলে সমস্ত প্রকার ফেরত দেওয়া হবে।
স্বয়ংক্রিয়ভাবে সম্পূর্ণ ফলাফল ফিল্টার করতে, ফিল্টার সেট করতে setTypesFilter() কল করুন।
একটি ধরণ বা ধরণ সংগ্রহ ফিল্টার নির্দিষ্ট করতে:
setTypesFilter()কল করুন এবং Place Types এ দেখানো টেবিল 1 এবং টেবিল 2 থেকে পাঁচটি পর্যন্ত টাইপ মান নির্দিষ্ট করুন। টাইপ মানগুলি PlaceTypes এর ধ্রুবক দ্বারা সংজ্ঞায়িত করা হয়।setTypesFilter()কল করুন এবং Place Types এ দেখানো টেবিল 3 থেকে একটি টাইপ সংগ্রহ নির্দিষ্ট করুন। সংগ্রহের মানগুলি PlaceTypes এর ধ্রুবক দ্বারা সংজ্ঞায়িত করা হয়।অনুরোধে টেবিল ৩ থেকে শুধুমাত্র একটি একক প্রকার অনুমোদিত। যদি আপনি টেবিল ৩ থেকে একটি মান নির্দিষ্ট করেন, তাহলে আপনি টেবিল ১ বা টেবিল ২ থেকে একটি মান নির্দিষ্ট করতে পারবেন না। যদি আপনি তা করেন, তাহলে একটি ত্রুটি দেখা দেয়।
নিচের কোড উদাহরণটি একটি AutocompleteSupportFragment এ setTypesFilter() কল করে এবং একাধিক ধরণের মান নির্দিষ্ট করে।
কোটলিন
autocompleteFragment.setTypesFilter(listOf("landmark", "restaurant", "store"))
জাভা
autocompleteFragment.setTypesFilter(List.of("landmark", "restaurant", "store"));
নিচের কোড উদাহরণে একটি AutocompleteSupportFragment এ setTypesFilter() কল করে একটি ফিল্টার সেট করা দেখানো হয়েছে যা একটি টাইপ সংগ্রহ নির্দিষ্ট করে শুধুমাত্র একটি সুনির্দিষ্ট ঠিকানা সহ ফলাফল প্রদান করে।
কোটলিন
autocompleteFragment.setTypesFilter(listOf(PlaceTypes.ADDRESS))
জাভা
autocompleteFragment.setTypesFilter(List.of(PlaceTypes.ESTABLISHMENT));
নিচের কোড উদাহরণে দেখানো হয়েছে যে একটি IntentBuilder এ setTypesFilter() কল করে একটি ফিল্টার সেট করা হয় যা একটি টাইপ সংগ্রহ নির্দিষ্ট করে শুধুমাত্র একটি সুনির্দিষ্ট ঠিকানা সহ ফলাফল প্রদান করে।
কোটলিন
val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(listOf(PlaceTypes.ESTABLISHMENT)) .build(this)
জাভা
Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(List.of(PlaceTypes.ESTABLISHMENT)) .build(this);
দেশ অনুসারে ফলাফল ফিল্টার করুন
সর্বোচ্চ পাঁচটি দেশে স্বয়ংক্রিয়ভাবে সম্পূর্ণ ফলাফল ফিল্টার করতে, দেশের কোড সেট করতে setCountries() কল করুন। তারপর, ফিল্টারটি একটি খণ্ড বা ইন্টেন্টে পাস করুন। দেশগুলিকে দুই-অক্ষরের, ISO 3166-1 Alpha-2 সামঞ্জস্যপূর্ণ দেশের কোড হিসাবে পাস করতে হবে।
নিচের কোড উদাহরণে একটি AutocompleteSupportFragment এ setCountries() কল করার পদ্ধতি দেখানো হয়েছে, যাতে একটি ফিল্টার সেট করা যায় যা শুধুমাত্র নির্দিষ্ট দেশগুলির মধ্যে ফলাফল প্রদান করে।
কোটলিন
autocompleteFragment.setCountries("AU", "NZ")
জাভা
autocompleteFragment.setCountries("AU", "NZ");
ব্যবহারের সীমা
Android এর জন্য Places SDK সহ Places API এর আপনার ব্যবহার আর প্রতিদিন সর্বাধিক সংখ্যক অনুরোধের (QPD) মধ্যে সীমাবদ্ধ নয়। তবে, নিম্নলিখিত ব্যবহারের সীমা এখনও প্রযোজ্য:
- হারের সীমা হল 6,000 QPM (প্রতি মিনিটে অনুরোধ)। এটি একই প্রকল্পের শংসাপত্র ব্যবহার করে সমস্ত অ্যাপ্লিকেশনের জন্য ক্লায়েন্ট-সাইড এবং সার্ভার-সাইড অনুরোধের যোগফল হিসাবে গণনা করা হয়।
আপনার অ্যাপে অ্যাট্রিবিউশন দেখান
- যদি আপনার অ্যাপটি স্বয়ংক্রিয়ভাবে সম্পূর্ণ পরিষেবাটি প্রোগ্রাম্যাটিকভাবে ব্যবহার করে, তাহলে আপনার UI-তে হয় 'Powered by Google' অ্যাট্রিবিউশন প্রদর্শন করতে হবে, অথবা একটি Google-ব্র্যান্ডেড মানচিত্রের মধ্যে উপস্থিত হতে হবে।
- যদি আপনার অ্যাপটি স্বয়ংক্রিয়ভাবে সম্পন্ন উইজেট ব্যবহার করে তবে কোনও অতিরিক্ত পদক্ষেপের প্রয়োজন নেই (প্রয়োজনীয় অ্যাট্রিবিউশন ডিফল্টরূপে প্রদর্শিত হয়)।
- আইডি অনুসারে স্থান পাওয়ার পর যদি আপনি অতিরিক্ত স্থানের তথ্য উদ্ধার করেন এবং প্রদর্শন করেন, তাহলে আপনাকে অবশ্যই তৃতীয় পক্ষের বৈশিষ্ট্যও প্রদর্শন করতে হবে।
আরও বিস্তারিত জানার জন্য, অ্যাট্রিবিউশনের ডকুমেন্টেশন দেখুন।
স্থান স্বয়ংসম্পূর্ণ (লিগ্যাসি) অপ্টিমাইজেশন
এই বিভাগটি প্লেস অটোকম্পলিট (লিগ্যাসি) পরিষেবার সর্বাধিক সুবিধা পেতে আপনাকে সাহায্য করার জন্য সেরা অনুশীলনগুলি বর্ণনা করে।
এখানে কিছু সাধারণ নির্দেশিকা দেওয়া হল:
- একটি কার্যকরী ইউজার ইন্টারফেস তৈরির দ্রুততম উপায় হল Maps JavaScript API Place Autocomplete (Legacy) উইজেট , Android Place Autocomplete (Legacy) উইজেটের জন্য Places SDK, অথবা iOS Place Autocomplete (Legacy) UI নিয়ন্ত্রণের জন্য Places SDK ব্যবহার করা।
- শুরু থেকেই অপরিহার্য প্লেস অটোকম্পলিট (লিগ্যাসি) ডেটা ফিল্ড সম্পর্কে ধারণা তৈরি করুন।
- লোকেশন বায়াসিং এবং লোকেশন সীমাবদ্ধতা ক্ষেত্রগুলি ঐচ্ছিক কিন্তু স্বয়ংক্রিয়ভাবে সম্পন্ন কর্মক্ষমতার উপর উল্লেখযোগ্য প্রভাব ফেলতে পারে।
- API যদি কোনও ত্রুটি ফেরত দেয় তবে আপনার অ্যাপটি সুন্দরভাবে অবনমিত হয় তা নিশ্চিত করতে ত্রুটি পরিচালনা ব্যবহার করুন।
- নিশ্চিত করুন যে আপনার অ্যাপটি কোনও নির্বাচন না থাকলে তা পরিচালনা করে এবং ব্যবহারকারীদের চালিয়ে যাওয়ার একটি উপায় প্রদান করে।
খরচ অপ্টিমাইজেশনের সেরা অনুশীলন
মৌলিক খরচ অপ্টিমাইজেশন
প্লেস অটোকম্পলিট (লিগ্যাসি) পরিষেবা ব্যবহারের খরচ অপ্টিমাইজ করতে, প্লেস ডিটেইলস (লিগ্যাসি) এবং প্লেস অটোকম্পলিট (লিগ্যাসি) উইজেটগুলিতে ফিল্ড মাস্ক ব্যবহার করুন যাতে আপনার প্রয়োজনীয় প্লেস ডেটা ফিল্ডগুলি ফেরত দেওয়া যায়।
উন্নত খরচ অপ্টিমাইজেশন
নির্বাচিত স্থান সম্পর্কে জিওকোডিং API ফলাফলের জন্য অনুরোধ করতে এবং স্থানের বিবরণ (উত্তরাধিকার) এর পরিবর্তে প্রতি অনুরোধ মূল্য নির্ধারণ অ্যাক্সেস করতে প্লেস অটোকম্পলিট (উত্তরাধিকার) এর প্রোগ্রাম্যাটিক বাস্তবায়ন বিবেচনা করুন। জিওকোডিং API এর সাথে যুক্ত প্রতি অনুরোধ মূল্য নির্ধারণ প্রতি অধিবেশন (সেশন-ভিত্তিক) মূল্য নির্ধারণের চেয়ে বেশি সাশ্রয়ী, যদি নিম্নলিখিত দুটি শর্ত পূরণ করা হয়:
- যদি আপনার শুধুমাত্র ব্যবহারকারীর নির্বাচিত স্থানের অক্ষাংশ/দ্রাঘিমাংশ বা ঠিকানার প্রয়োজন হয়, তাহলে জিওকোডিং API এই তথ্যটি একটি স্থানের বিবরণ (উত্তরাধিকার) কলের চেয়ে কম সময়ে সরবরাহ করে।
- যদি ব্যবহারকারীরা গড়ে চারটি স্থান স্বয়ংসম্পূর্ণ (লিগ্যাসি) পূর্বাভাস অনুরোধের মধ্যে একটি স্বয়ংসম্পূর্ণ পূর্বাভাস নির্বাচন করেন, তাহলে প্রতি অনুরোধ মূল্য নির্ধারণ প্রতি অধিবেশন মূল্য নির্ধারণের চেয়ে বেশি সাশ্রয়ী হতে পারে।
আপনার আবেদনপত্রে কি নির্বাচিত ভবিষ্যদ্বাণীর ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশ ছাড়া অন্য কোনও তথ্যের প্রয়োজন আছে?
হ্যাঁ, আরও বিস্তারিত জানার প্রয়োজন।
স্থানের বিবরণ (উত্তরাধিকার) সহ সেশন-ভিত্তিক স্থান স্বয়ংসম্পূর্ণ (উত্তরাধিকার) ব্যবহার করুন।
যেহেতু আপনার আবেদনের জন্য স্থানের বিবরণ (লিগ্যাসি) প্রয়োজন যেমন স্থানের নাম, ব্যবসার স্থিতি, অথবা খোলার সময়, তাই আপনার স্থান স্বয়ংসম্পূর্ণ (লিগ্যাসি) বাস্তবায়নের জন্য প্রতি সেশনে একটি সেশন টোকেন ( প্রোগ্রামগতভাবে বা জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড , অথবা iOS উইজেটে অন্তর্নির্মিত) ব্যবহার করা উচিত এবং প্রযোজ্য স্থান ডেটা SKU গুলি আপনার অনুরোধ করা স্থানের ডেটা ক্ষেত্রগুলির উপর নির্ভর করে। 1
উইজেট বাস্তবায়ন
সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড , অথবা iOS উইজেটগুলিতে তৈরি করা হয়। এর মধ্যে নির্বাচিত পূর্বাভাসে প্লেস অটোকম্পলিট (লিগ্যাসি) অনুরোধ এবং প্লেস ডিটেইলস (লিগ্যাসি) অনুরোধ উভয়ই অন্তর্ভুক্ত থাকে। আপনার প্রয়োজনীয় প্লেস ডেটা ফিল্ডগুলিই কেবল অনুরোধ করছেন তা নিশ্চিত করার জন্য fields প্যারামিটারটি নির্দিষ্ট করতে ভুলবেন না।
প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার স্থান স্বয়ংক্রিয়ভাবে সম্পন্ন (উত্তরাধিকার) অনুরোধের সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত পূর্বাভাস সম্পর্কে স্থানের বিবরণ (উত্তরাধিকার) অনুরোধ করার সময়, নিম্নলিখিত পরামিতিগুলি অন্তর্ভুক্ত করুন:
- প্লেস অটোকম্পলিট (লিগ্যাসি) প্রতিক্রিয়া থেকে প্লেস আইডি
- প্লেস অটোকম্পলিট (লিগ্যাসি) অনুরোধে ব্যবহৃত সেশন টোকেন
- আপনার প্রয়োজনীয় স্থান ডেটা ফিল্ড নির্দিষ্ট করে এমন
fieldsপ্যারামিটার
না, শুধুমাত্র ঠিকানা এবং অবস্থান প্রয়োজন।
আপনার অ্যাপ্লিকেশনের জন্য প্লেস ডিটেইলস (লিগ্যাসি) এর চেয়ে জিওকোডিং API বেশি সাশ্রয়ী বিকল্প হতে পারে, যা আপনার প্লেস অটোকম্পলিট (লিগ্যাসি) ব্যবহারের পারফরম্যান্সের উপর নির্ভর করে। প্রতিটি অ্যাপ্লিকেশনের প্লেস অটোকম্পলিট (লিগ্যাসি) দক্ষতা ব্যবহারকারীরা কী প্রবেশ করছেন, অ্যাপ্লিকেশনটি কোথায় ব্যবহার করা হচ্ছে এবং পারফরম্যান্স অপ্টিমাইজেশনের সেরা অনুশীলনগুলি বাস্তবায়িত হয়েছে কিনা তার উপর নির্ভর করে পরিবর্তিত হয়।
নিম্নলিখিত প্রশ্নের উত্তর দেওয়ার জন্য, আপনার অ্যাপ্লিকেশনে একটি প্লেস অটোকম্পলিট (লিগ্যাসি) ভবিষ্যদ্বাণী নির্বাচন করার আগে একজন ব্যবহারকারী গড়ে কতগুলি অক্ষর টাইপ করেন তা বিশ্লেষণ করুন।
আপনার ব্যবহারকারীরা কি গড়ে চার বা তার কম অনুরোধে একটি স্থান স্বয়ংসম্পূর্ণ (উত্তরাধিকার) পূর্বাভাস নির্বাচন করেন?
হাঁ
সেশন টোকেন ছাড়াই প্রোগ্রাম্যাটিকভাবে প্লেস অটোকম্পলিট (লিগ্যাসি) বাস্তবায়ন করুন এবং নির্বাচিত প্লেস প্রেডিকশনে জিওকোডিং API কল করুন।
জিওকোডিং এপিআই ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্ক সরবরাহ করে। চারটি স্থান স্বয়ংসম্পূর্ণ (উত্তরাধিকার) - প্রতি অনুরোধ অনুরোধ এবং নির্বাচিত স্থান পূর্বাভাস সম্পর্কে একটি জিওকোডিং এপিআই কল প্রতি সেশন স্থান স্বয়ংসম্পূর্ণ (উত্তরাধিকার) খরচের চেয়ে কম। ১
আপনার ব্যবহারকারীদের আরও কম অক্ষরের মাধ্যমে তাদের কাঙ্ক্ষিত ভবিষ্যদ্বাণী পেতে সাহায্য করার জন্য পারফর্ম্যান্সের সেরা অনুশীলনগুলি ব্যবহার করার কথা বিবেচনা করুন।
না
স্থানের বিবরণ (উত্তরাধিকার) সহ সেশন-ভিত্তিক স্থান স্বয়ংসম্পূর্ণ (উত্তরাধিকার) ব্যবহার করুন।
যেহেতু একজন ব্যবহারকারী প্লেস অটোকম্পলিট (লিগ্যাসি) পূর্বাভাস নির্বাচন করার আগে আপনার প্রত্যাশিত গড় অনুরোধের সংখ্যা প্রতি সেশন মূল্য নির্ধারণের খরচকে ছাড়িয়ে যায়, তাই আপনার প্লেস অটোকম্পলিট (লিগ্যাসি) বাস্তবায়নে প্লেস অটোকম্পলিট (লিগ্যাসি) অনুরোধ এবং প্রতি সেশনের সাথে সম্পর্কিত প্লেস বিবরণ (লিগ্যাসি) অনুরোধ উভয়ের জন্য একটি সেশন টোকেন ব্যবহার করা উচিত। 1
উইজেট বাস্তবায়ন
সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড , অথবা iOS উইজেটগুলিতে তৈরি করা হয়। এর মধ্যে নির্বাচিত পূর্বাভাসে প্লেস অটোকম্পলিট (লিগ্যাসি) অনুরোধ এবং প্লেস ডিটেইলস (লিগ্যাসি) অনুরোধ উভয়ই অন্তর্ভুক্ত থাকে। আপনি কেবল বেসিক ডেটা ফিল্ডগুলি অনুরোধ করছেন তা নিশ্চিত করার জন্য fields প্যারামিটারটি নির্দিষ্ট করতে ভুলবেন না।
প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার স্থান স্বয়ংক্রিয়ভাবে সম্পন্ন (উত্তরাধিকার) অনুরোধের সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত পূর্বাভাস সম্পর্কে স্থানের বিবরণ (উত্তরাধিকার) অনুরোধ করার সময়, নিম্নলিখিত পরামিতিগুলি অন্তর্ভুক্ত করুন:
- প্লেস অটোকম্পলিট (লিগ্যাসি) প্রতিক্রিয়া থেকে প্লেস আইডি
- প্লেস অটোকম্পলিট (লিগ্যাসি) অনুরোধে ব্যবহৃত সেশন টোকেন
- ঠিকানা এবং জ্যামিতির মতো মৌলিক ডেটা ক্ষেত্রগুলিকে নির্দিষ্ট করে এমন
fieldsপ্যারামিটার
প্লেস অটোকম্পলিট (লিগ্যাসি) অনুরোধগুলি বিলম্বিত করার কথা বিবেচনা করুন
আপনি কৌশল অবলম্বন করতে পারেন যেমন প্লেস অটোকম্পলিট (লিগ্যাসি) অনুরোধ বিলম্বিত করা যতক্ষণ না ব্যবহারকারী প্রথম তিন বা চারটি অক্ষর টাইপ করে যাতে আপনার অ্যাপ্লিকেশনটি কম অনুরোধ করে। উদাহরণস্বরূপ, ব্যবহারকারী তৃতীয় অক্ষর টাইপ করার পরে প্রতিটি অক্ষরের জন্য প্লেস অটোকম্পলিট (লিগ্যাসি) অনুরোধ করার অর্থ হল যে ব্যবহারকারী যদি সাতটি অক্ষর টাইপ করে এবং একটি পূর্বাভাস নির্বাচন করে যার জন্য আপনি একটি জিওকোডিং API অনুরোধ করেন, তাহলে মোট খরচ হবে প্রতি অনুরোধে 4টি প্লেস অটোকম্পলিট (লিগ্যাসি) + জিওকোডিংয়ের জন্য। 1
যদি বিলম্বিত অনুরোধের ফলে আপনার গড় প্রোগ্রাম্যাটিক অনুরোধ চারের নিচে পৌঁছাতে পারে, তাহলে আপনি জিওকোডিং API বাস্তবায়নের সাথে পারফর্ম্যান্ট প্লেস অটোকম্পলিট (লিগ্যাসি) এর নির্দেশিকা অনুসরণ করতে পারেন। মনে রাখবেন যে বিলম্বিত অনুরোধগুলি ব্যবহারকারীর দ্বারা বিলম্বিত হিসাবে অনুভূত হতে পারে যারা প্রতিটি নতুন কীস্ট্রোকের সাথে ভবিষ্যদ্বাণী দেখতে আশা করতে পারে।
আপনার ব্যবহারকারীদের কম অক্ষরের মাধ্যমে তাদের কাঙ্ক্ষিত ভবিষ্যদ্বাণী পেতে সাহায্য করার জন্য পারফর্ম্যান্সের সেরা অনুশীলনগুলি ব্যবহার করার কথা বিবেচনা করুন।
খরচের জন্য, Google Maps প্ল্যাটফর্মের মূল্য তালিকা দেখুন।
কর্মক্ষমতা সংক্রান্ত সর্বোত্তম অনুশীলন
নিম্নলিখিত নির্দেশিকাগুলি প্লেস অটোকম্পলিট (লিগ্যাসি) কর্মক্ষমতা অপ্টিমাইজ করার উপায়গুলি বর্ণনা করে:
- আপনার প্লেস অটোকম্পলিট (লিগ্যাসি) বাস্তবায়নে দেশের সীমাবদ্ধতা, অবস্থান বায়াসিং এবং (প্রোগ্রাম্যাটিক বাস্তবায়নের জন্য) ভাষা পছন্দ যোগ করুন। উইজেটগুলির সাথে ভাষা পছন্দের প্রয়োজন হয় না কারণ তারা ব্যবহারকারীর ব্রাউজার বা মোবাইল ডিভাইস থেকে ভাষা পছন্দগুলি বেছে নেয়।
- যদি প্লেস অটোকম্পলিট (লিগ্যাসি) এর সাথে একটি মানচিত্র থাকে, তাহলে আপনি মানচিত্র ভিউপোর্ট অনুসারে অবস্থানটি আলাদা করতে পারেন।
- যেসব পরিস্থিতিতে একজন ব্যবহারকারী প্লেস অটোকম্পলিট (লিগ্যাসি) ভবিষ্যদ্বাণীগুলির মধ্যে একটি বেছে নেন না, সাধারণত কারণ এই ভবিষ্যদ্বাণীগুলির কোনওটিই কাঙ্ক্ষিত ফলাফল-ঠিকানা নয়, আপনি আরও প্রাসঙ্গিক ফলাফল পেতে মূল ব্যবহারকারীর ইনপুট পুনরায় ব্যবহার করতে পারেন:
- যদি আপনি আশা করেন যে ব্যবহারকারী কেবল ঠিকানার তথ্য প্রবেশ করাবেন, তাহলে Geocoding API- তে কল করার সময় মূল ব্যবহারকারীর ইনপুটটি পুনরায় ব্যবহার করুন।
- যদি আপনি আশা করেন যে ব্যবহারকারী নাম বা ঠিকানা দিয়ে একটি নির্দিষ্ট স্থানের জন্য প্রশ্ন লিখবেন, তাহলে একটি Find Place (Legacy) অনুরোধ ব্যবহার করুন। যদি ফলাফল শুধুমাত্র একটি নির্দিষ্ট অঞ্চলে প্রত্যাশিত হয়, তাহলে location biasing ব্যবহার করুন।
- ব্যবহারকারীরা সাবপ্রিমাইজ ঠিকানা ইনপুট করছেন, যেমন একটি ভবনের মধ্যে নির্দিষ্ট ইউনিট বা অ্যাপার্টমেন্টের ঠিকানা। উদাহরণস্বরূপ, চেক ঠিকানা "Stroupežnického 3191/17, Praha" প্লেস অটোকম্পলিট (লিগ্যাসি) তে একটি আংশিক পূর্বাভাস দেয়।
- ব্যবহারকারীরা নিউ ইয়র্ক সিটিতে "23-30 29th St, Queens" অথবা হাওয়াইয়ের কাউই দ্বীপে "47-380 Kamehameha Hwy, Kaneohe" এর মতো রোড-সেগমেন্ট প্রিফিক্স সহ ঠিকানা ইনপুট করছেন।
সমস্যা সমাধান
যদিও বিভিন্ন ধরণের ত্রুটি ঘটতে পারে, আপনার অ্যাপে যে ত্রুটিগুলি দেখা দিতে পারে তার বেশিরভাগই সাধারণত কনফিগারেশন ত্রুটির কারণে হয় (উদাহরণস্বরূপ, ভুল API কী ব্যবহার করা হয়েছিল, অথবা API কী ভুলভাবে কনফিগার করা হয়েছিল), অথবা কোটা ত্রুটি (আপনার অ্যাপটি তার কোটা অতিক্রম করেছে)। কোটা সম্পর্কে আরও তথ্যের জন্য ব্যবহারের সীমা দেখুন।
স্বয়ংক্রিয় সম্পূর্ণ নিয়ন্ত্রণ ব্যবহারে যেসব ত্রুটি ঘটে তা onActivityResult() কলব্যাকে ফেরত পাঠানো হয়। ফলাফলের স্ট্যাটাস বার্তা পেতে Autocomplete.getStatus() এ কল করুন।