Android এর জন্য Places SDK-এ স্বয়ংসম্পূর্ণ পরিষেবা ব্যবহারকারীর অনুসন্ধান প্রশ্নের উত্তরে স্থানের পূর্বাভাস প্রদান করে। ব্যবহারকারীর ধরন হিসাবে, স্বয়ংসম্পূর্ণ পরিষেবাটি ব্যবসা, ঠিকানা, প্লাস কোড এবং আগ্রহের জায়গাগুলির মতো জায়গাগুলির জন্য পরামর্শ প্রদান করে৷
আপনি নিম্নলিখিত উপায়ে আপনার অ্যাপে স্বয়ংসম্পূর্ণ যোগ করতে পারেন:
- বিকাশের সময় বাঁচাতে এবং একটি সামঞ্জস্যপূর্ণ ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করতে একটি স্বয়ংসম্পূর্ণ উইজেট যোগ করুন ।
- একটি কাস্টমাইজড ব্যবহারকারীর অভিজ্ঞতা তৈরি করতে প্রোগ্রামগতভাবে স্থানের পূর্বাভাস পান ।
একটি স্বয়ংসম্পূর্ণ উইজেট যোগ করুন
স্বয়ংসম্পূর্ণ উইজেট হল অন্তর্নির্মিত স্বয়ংসম্পূর্ণ কার্যকারিতা সহ একটি অনুসন্ধান ডায়ালগ। একজন ব্যবহারকারী অনুসন্ধানের পদে প্রবেশ করার সাথে সাথে, উইজেটটি বেছে নেওয়ার জন্য পূর্বাভাসিত স্থানগুলির একটি তালিকা উপস্থাপন করে। যখন ব্যবহারকারী একটি নির্বাচন করে, একটি Place
উদাহরণ প্রদান করা হয়, যা আপনার অ্যাপটি নির্বাচিত স্থান সম্পর্কে বিশদ পেতে ব্যবহার করতে পারে।
আপনার অ্যাপে স্বয়ংসম্পূর্ণ উইজেট যোগ করার জন্য দুটি বিকল্প রয়েছে:
- বিকল্প 1: একটি
AutocompleteSupportFragment
ফ্র্যাগমেন্ট এম্বেড করুন । - বিকল্প 2: স্বয়ংসম্পূর্ণ কার্যকলাপ চালু করতে একটি অভিপ্রায় ব্যবহার করুন ৷
বিকল্প 1: একটি স্বয়ংসম্পূর্ণ সাপোর্ট ফ্র্যাগমেন্ট এম্বেড করুন
আপনার অ্যাপে একটি AutocompleteSupportFragment
যোগ করতে, নিম্নলিখিত পদক্ষেপগুলি নিন:
- আপনার কার্যকলাপের XML লেআউটে একটি খণ্ড যোগ করুন।
- আপনার কার্যকলাপ বা টুকরা একটি শ্রোতা যোগ করুন.
একটি কার্যকলাপে স্বয়ংসম্পূর্ণ সমর্থন ফ্র্যাগমেন্ট যোগ করুন
একটি কার্যকলাপে 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"
/>
- ডিফল্টরূপে, খণ্ডটির কোনো সীমানা বা পটভূমি নেই। একটি সামঞ্জস্যপূর্ণ চাক্ষুষ উপস্থিতি প্রদান করার জন্য, একটি কার্ডভিউ এর মতো অন্য লেআউট উপাদানের মধ্যে খণ্ডটিকে নেস্ট করুন।
- আপনি যদি স্বয়ংসম্পূর্ণ খণ্ডটি ব্যবহার করেন এবং
onActivityResult
ওভাররাইড করতে চান, তাহলে আপনাকে অবশ্যইsuper.onActivityResult
কল করতে হবে, অন্যথায় খণ্ডটি সঠিকভাবে কাজ করবে না।
একটি কার্যকলাপে একটি স্থান নির্বাচন শ্রোতা যোগ করুন
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.NAME)) // Set up a PlaceSelectionListener to handle the response. autocompleteFragment.setOnPlaceSelectedListener(object : PlaceSelectionListener { override fun onPlaceSelected(place: Place) { // TODO: Get info about the selected place. Log.i(TAG, "Place: ${place.name}, ${place.id}") } override fun onError(status: Status) { // TODO: Handle the error. 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. autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME)); // Set up a PlaceSelectionListener to handle the response. autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { @Override public void onPlaceSelected(@NonNull Place place) { // TODO: Get info about the selected place. Log.i(TAG, "Place: " + place.getName() + ", " + place.getId()); } @Override public void onError(@NonNull Status status) { // TODO: Handle the error. Log.i(TAG, "An error occurred: " + status); } });
বিকল্প 2: স্বয়ংসম্পূর্ণ কার্যকলাপ চালু করতে একটি অভিপ্রায় ব্যবহার করুন
আপনি যদি চান যে আপনার অ্যাপটি একটি ভিন্ন ন্যাভিগেশনাল ফ্লো ব্যবহার করুক (উদাহরণস্বরূপ, অনুসন্ধান ক্ষেত্রের পরিবর্তে একটি আইকন থেকে স্বয়ংসম্পূর্ণ অভিজ্ঞতা ট্রিগার করতে), আপনার অ্যাপটি একটি অভিপ্রায় ব্যবহার করে স্বয়ংসম্পূর্ণ চালু করতে পারে।
একটি অভিপ্রায় ব্যবহার করে স্বয়ংসম্পূর্ণ উইজেট চালু করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- পছন্দসই
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.NAME) // Start the autocomplete intent. val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .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.NAME); // Start the autocomplete intent. Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .build(this); startAutocomplete.launch(intent);
স্বয়ংসম্পূর্ণ উইজেট চালু করার জন্য একটি অভিপ্রায় ব্যবহার করার সময়, আপনি ওভারলে বা পূর্ণ-স্ক্রীন প্রদর্শন মোড থেকে চয়ন করতে পারেন৷ নিম্নলিখিত স্ক্রিনশটগুলি যথাক্রমে প্রতিটি প্রদর্শন মোড দেখায়:


অভিপ্রায় ফলাফলের জন্য একটি কলব্যাক নিবন্ধন করুন
ব্যবহারকারী একটি স্থান নির্বাচন করলে একটি বিজ্ঞপ্তি পেতে, একটি registerForActivityResult()
লঞ্চার সংজ্ঞায়িত করুন, যা কার্যকলাপটি চালু করে এবং নিম্নলিখিত উদাহরণে দেখানো ফলাফলটি পরিচালনা করে। ব্যবহারকারী একটি ভবিষ্যদ্বাণী নির্বাচন করলে, এটি ফলাফল বস্তুর মধ্যে থাকা অভিপ্রায়ে বিতরণ করা হবে। যেহেতু অভিপ্রায়টি Autocomplete.IntentBuilder
দ্বারা তৈরি করা হয়েছিল, পদ্ধতি Autocomplete.getPlaceFromIntent()
এটি থেকে স্থান বস্তুটি বের করতে পারে।
private val startAutocomplete = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> if (result.resultCode == Activity.RESULT_OK) { val intent = result.data if (intent != null) { val place = Autocomplete.getPlaceFromIntent(intent) Log.i( TAG, "Place: ${place.name}, ${place.id}" ) } } else if (result.resultCode == Activity.RESULT_CANCELED) { // The user canceled the operation. 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); Log.i(TAG, "Place: ${place.getName()}, ${place.getId()}"); } } else if (result.getResultCode() == Activity.RESULT_CANCELED) { // The user canceled the operation. Log.i(TAG, "User canceled autocomplete"); } });
প্রোগ্রামগতভাবে স্থানের পূর্বাভাস পাওয়া
স্বয়ংসম্পূর্ণ উইজেট দ্বারা প্রদত্ত UI-এর বিকল্প হিসাবে আপনি একটি কাস্টম অনুসন্ধান UI তৈরি করতে পারেন৷ এটি করার জন্য, আপনার অ্যাপকে প্রোগ্রামগতভাবে স্থানের পূর্বাভাস পেতে হবে। আপনার অ্যাপ PlacesClient.findAutocompletePredictions()
কল করে, নিম্নলিখিত প্যারামিটার সহ একটি FindAutocompletePredictionsRequest
অবজেক্ট পাস করে স্বয়ংসম্পূর্ণ API থেকে পূর্বাভাসিত স্থানের নাম এবং/অথবা ঠিকানাগুলির একটি তালিকা পেতে পারে:
- প্রয়োজনীয়: ব্যবহারকারীর দ্বারা টাইপ করা পাঠ্য ধারণকারী একটি
query
স্ট্রিং। - প্রস্তাবিত: একটি
AutocompleteSessionToken
, যা বিলিং উদ্দেশ্যে একটি পৃথক সেশনে ব্যবহারকারী অনুসন্ধানের প্রশ্ন এবং নির্বাচনের পর্যায়গুলিকে গোষ্ঠীভুক্ত করে। সেশন শুরু হয় যখন ব্যবহারকারী একটি ক্যোয়ারী টাইপ করা শুরু করে এবং যখন তারা একটি স্থান নির্বাচন করে তখন শেষ হয়। - প্রস্তাবিত: একটি
RectangularBounds
অবজেক্ট, যা অক্ষাংশ এবং দ্রাঘিমাংশের সীমা নির্দিষ্ট করে নির্দিষ্ট অঞ্চলের ফলাফলগুলিকে সীমাবদ্ধ করতে । - ঐচ্ছিক: এক বা একাধিক দুই-অক্ষরের দেশের কোড s (ISO 3166-1 Alpha-2), যে দেশ বা দেশগুলির ফলাফল সীমাবদ্ধ করা উচিত তা নির্দেশ করে৷
ঐচ্ছিক: একটি
TypeFilter
, যা আপনি নির্দিষ্ট স্থানের প্রকারের ফলাফলগুলিকে সীমাবদ্ধ করতে ব্যবহার করতে পারেন। নিম্নলিখিত স্থান প্রকারগুলি সমর্থিত:-
TypeFilter.GEOCODE
– ব্যবসার পরিবর্তে শুধুমাত্র জিওকোডিং ফলাফল প্রদান করে। যেখানে নির্দিষ্ট অবস্থান অনির্দিষ্ট হতে পারে সেখানে ফলাফলগুলিকে দ্ব্যর্থিত করতে এই অনুরোধটি ব্যবহার করুন৷ -
TypeFilter.ADDRESS
– একটি সুনির্দিষ্ট ঠিকানা সহ শুধুমাত্র স্বয়ংসম্পূর্ণ ফলাফল প্রদান করে। এই ধরনের ব্যবহার করুন যখন আপনি জানেন যে ব্যবহারকারী একটি সম্পূর্ণ নির্দিষ্ট ঠিকানা খুঁজছেন। -
TypeFilter.ESTABLISHMENT
- শুধুমাত্র ব্যবসায়িক স্থান ফেরত দেয়। TypeFilter.REGIONS
- শুধুমাত্র নিম্নলিখিত ধরনেরগুলির মধ্যে একটির সাথে মেলে এমন স্থানগুলি ফেরত দেয়:LOCALITY
SUBLOCALITY
POSTAL_CODE
COUNTRY
ADMINISTRATIVE_AREA_LEVEL_1
ADMINISTRATIVE_AREA_LEVEL_2
TypeFilter.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.ADDRESS)) .setSessionToken(token) .setQuery(query) .build() placesClient.findAutocompletePredictions(request) .addOnSuccessListener { response: FindAutocompletePredictionsResponse -> for (prediction in response.autocompletePredictions) { Log.i(TAG, prediction.placeId) Log.i(TAG, prediction.getPrimaryText(null).toString()) } }.addOnFailureListener { exception: Exception? -> if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.statusCode}") } }
// 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(Arrays.asList(PlaceTypes.ADDRESS)) .setSessionToken(token) .setQuery(query) .build(); placesClient.findAutocompletePredictions(request).addOnSuccessListener((response) -> { for (AutocompletePrediction prediction : response.getAutocompletePredictions()) { Log.i(TAG, prediction.getPlaceId()); Log.i(TAG, prediction.getPrimaryText(null).toString()); } }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } });
API একটি Task
একটি FindAutocompletePredictionsResponse
প্রদান করে। FindAutocompletePredictionsResponse
এ AutocompletePrediction
বস্তুর একটি তালিকা রয়েছে যা ভবিষ্যদ্বাণী করা স্থানগুলিকে প্রতিনিধিত্ব করে। ক্যোয়ারী এবং ফিল্টারের মানদণ্ডের সাথে সম্পর্কিত কোন পরিচিত স্থান না থাকলে তালিকাটি খালি হতে পারে।
প্রতিটি পূর্বাভাসিত স্থানের জন্য, আপনি স্থানের বিবরণ পুনরুদ্ধার করতে নিম্নলিখিত পদ্ধতিতে কল করতে পারেন:
-
getFullText(CharacterStyle)
একটি স্থানের বিবরণের সম্পূর্ণ টেক্সট প্রদান করে। এটি প্রাথমিক এবং মাধ্যমিক পাঠ্যের সংমিশ্রণ। উদাহরণ: " আইফেল টাওয়ার, অ্যাভিনিউ আনাতোল ফ্রান্স, প্যারিস, ফ্রান্স "। এছাড়াও, এই পদ্ধতিটি আপনাকে বর্ণনার বিভাগগুলিকে হাইলাইট করতে দেয় যা আপনার পছন্দের শৈলীর সাথে অনুসন্ধানের সাথে মেলে,CharacterStyle
ব্যবহার করে।CharacterStyle
প্যারামিটার ঐচ্ছিক। আপনি কোনো হাইলাইট করার প্রয়োজন না হলে এটি নাল সেট করুন। -
getPrimaryText(CharacterStyle)
একটি স্থানের বর্ণনা দিয়ে মূল পাঠ্য ফেরত দেয়। এটি সাধারণত জায়গার নাম। উদাহরণ: " আইফেল টাওয়ার ", এবং " 123 পিট স্ট্রিট "। -
getSecondaryText(CharacterStyle)
একটি স্থানের বিবরণের সহায়ক পাঠ্য প্রদান করে। এটি দরকারী, উদাহরণস্বরূপ, স্বয়ংসম্পূর্ণ পূর্বাভাস দেখানোর সময় একটি দ্বিতীয় লাইন হিসাবে। উদাহরণ: " এভিনিউ আনাতোল ফ্রান্স, প্যারিস, ফ্রান্স ", এবং " সিডনি, নিউ সাউথ ওয়েলস "। -
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 সামঞ্জস্যপূর্ণ দেশের কোড হিসেবে পাস করতে হবে।
একটি নির্দিষ্ট অঞ্চলে পক্ষপাতের ফলাফল
একটি নির্দিষ্ট ভৌগলিক অঞ্চলে স্বয়ংসম্পূর্ণ ফলাফলের পক্ষপাতিত্ব করতে, একটি RectangularBounds
পাস করে setLocationBias()
কল করুন। নিম্নলিখিত কোড উদাহরণটি অস্ট্রেলিয়ার সিডনির একটি অঞ্চলে স্বয়ংসম্পূর্ণ প্রস্তাবনাগুলিকে পক্ষপাতিত্ব করার জন্য একটি খণ্ডের উদাহরণে setLocationBias()
কল করা দেখায়৷
autocompleteFragment.setLocationBias( RectangularBounds.newInstance( LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596) ) )
autocompleteFragment.setLocationBias(RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596)));
একটি নির্দিষ্ট অঞ্চলে ফলাফল সীমাবদ্ধ করুন
একটি নির্দিষ্ট ভৌগলিক অঞ্চলে স্বয়ংসম্পূর্ণ ফলাফল সীমাবদ্ধ করতে, একটি RectangularBounds
পাস করে setLocationRestriction()
কল করুন। নিম্নলিখিত কোড উদাহরণটি অস্ট্রেলিয়ার সিডনির একটি অঞ্চলে স্বয়ংসম্পূর্ণ প্রস্তাবনাগুলিকে পক্ষপাতিত্ব করার জন্য একটি খণ্ডের উদাহরণে setLocationRestriction()
কল করা দেখায়৷
autocompleteFragment.setLocationRestriction( RectangularBounds.newInstance( LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596) ) )
autocompleteFragment.setLocationRestriction(RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596)));
দ্রষ্টব্য: এই বিধিনিষেধটি শুধুমাত্র সমগ্র রুটে প্রয়োগ করা হয়, আয়তক্ষেত্রাকার সীমানার বাইরে অবস্থিত সিন্থেটিক ফলাফলগুলি অবস্থানের সীমাবদ্ধতার সাথে ওভারল্যাপ করে এমন একটি রুটের উপর ভিত্তি করে ফেরত দেওয়া হতে পারে।
স্থানের ধরন বা টাইপ সংগ্রহ অনুসারে ফলাফল ফিল্টার করুন
আপনি একটি স্বয়ংসম্পূর্ণ অনুরোধ থেকে ফলাফল সীমাবদ্ধ করতে পারেন যাতে তারা শুধুমাত্র একটি নির্দিষ্ট স্থানের ধরন ফেরত দেয়। স্থানের ধরনগুলি ব্যবহার করে একটি ফিল্টার নির্দিষ্ট করুন বা স্থানের ধরণগুলিতে টেবিল 1, 2 এবং 3 এ তালিকাভুক্ত একটি প্রকার সংগ্রহ। কিছু নির্দিষ্ট না থাকলে, সব ধরনের ফেরত দেওয়া হয়.
স্বয়ংসম্পূর্ণ ফলাফল ফিল্টার করতে, ফিল্টার সেট করতে setTypesFilter()
কল করুন।
একটি প্রকার বা টাইপ সংগ্রহ ফিল্টার নির্দিষ্ট করতে:
setTypesFilter()
কে কল করুন এবং প্লেস টাইপসে দেখানো টেবিল 1 এবং টেবিল 2 থেকে পাঁচটি পর্যন্ত মান উল্লেখ করুন। টাইপ মানগুলি প্লেসটাইপসের ধ্রুবক দ্বারা সংজ্ঞায়িত করা হয়।setTypesFilter()
কে কল করুন এবং প্লেস টাইপসে দেখানো টেবিল 3 থেকে একটি টাইপ সংগ্রহ উল্লেখ করুন। সংগ্রহের মানগুলি PlaceTypes- এ ধ্রুবক দ্বারা সংজ্ঞায়িত করা হয়।অনুরোধে সারণি 3 থেকে শুধুমাত্র একটি একক প্রকার অনুমোদিত। আপনি যদি সারণি 3 থেকে একটি মান নির্দিষ্ট করেন, আপনি সারণি 1 বা সারণী 2 থেকে একটি মান নির্দিষ্ট করতে পারবেন না। যদি আপনি তা করেন, তাহলে একটি ত্রুটি ঘটে।
নিম্নলিখিত কোড উদাহরণ একটি AutocompleteSupportFragment
এ setTypesFilter()
কল করে এবং একাধিক ধরনের মান নির্দিষ্ট করে।
autocompleteFragment.setTypesFilter(listOf("landmark", "restaurant", "store"))
autocompleteFragment.setTypesFilter(Arrays.asList("landmark", "restaurant", "store"));
নিম্নলিখিত কোড উদাহরণটি একটি AutocompleteSupportFragment
সাপোর্টফ্র্যাগমেন্টে setTypesFilter()
কল করা দেখায় যাতে একটি ফিল্টার সেট করা হয় যা শুধুমাত্র একটি টাইপ সংগ্রহ নির্দিষ্ট করে একটি সুনির্দিষ্ট ঠিকানা সহ ফলাফল দেয়।
autocompleteFragment.setTypesFilter(listOf(PlaceTypes.ADDRESS))
autocompleteFragment.setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS, PlaceTypes.ESTABLISHMENT));
নিম্নলিখিত কোড উদাহরণ দেখায় যে একটি IntentBuilder
এ কল করা setTypesFilter()
একটি ফিল্টার সেট করার জন্য একটি টাইপ সংগ্রহ নির্দিষ্ট করে শুধুমাত্র একটি সুনির্দিষ্ট ঠিকানা সহ ফলাফল প্রদান করে৷
val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(listOf(PlaceTypes.ADDRESS)) .build(this)
Intent intent = new Autocomplete.IntentBuilder( AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS)) .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 অবশ্যই একটি 'Google দ্বারা চালিত' অ্যাট্রিবিউশন প্রদর্শন করতে হবে, অথবা একটি Google-ব্র্যান্ডেড মানচিত্রের মধ্যে উপস্থিত হতে হবে।
- যদি আপনার অ্যাপ স্বয়ংসম্পূর্ণ উইজেট ব্যবহার করে তাহলে কোনো অতিরিক্ত পদক্ষেপের প্রয়োজন নেই (প্রয়োজনীয় অ্যাট্রিবিউশন ডিফল্টরূপে প্রদর্শিত হয়)।
- আপনি যদি আইডি দ্বারা একটি স্থান পাওয়ার পরে অতিরিক্ত স্থানের তথ্য পুনরুদ্ধার করেন এবং প্রদর্শন করেন তবে আপনাকে অবশ্যই তৃতীয় পক্ষের বৈশিষ্ট্যগুলিও প্রদর্শন করতে হবে।
আরও বিশদ বিবরণের জন্য, বৈশিষ্ট্যের ডকুমেন্টেশন দেখুন।
স্বয়ংসম্পূর্ণ অপ্টিমাইজেশান রাখুন
এই বিভাগটি আপনাকে প্লেস স্বয়ংসম্পূর্ণ পরিষেবার সর্বাধিক ব্যবহার করতে সাহায্য করার জন্য সর্বোত্তম অনুশীলনগুলি বর্ণনা করে৷
এখানে কিছু সাধারণ নির্দেশিকা রয়েছে:
- একটি কার্যকরী ব্যবহারকারী ইন্টারফেস বিকাশের দ্রুততম উপায় হল মানচিত্র জাভাস্ক্রিপ্ট API স্বয়ংসম্পূর্ণ উইজেট , Android স্বয়ংসম্পূর্ণ উইজেটের জন্য স্থান SDK , অথবা iOS স্বয়ংসম্পূর্ণ UI নিয়ন্ত্রণের জন্য স্থান SDK ব্যবহার করা
- শুরু থেকেই অপরিহার্য স্থান স্বয়ংসম্পূর্ণ ডেটা ক্ষেত্রগুলির একটি বোঝার বিকাশ করুন।
- অবস্থানের পক্ষপাতিত্ব এবং অবস্থানের সীমাবদ্ধতা ক্ষেত্রগুলি ঐচ্ছিক কিন্তু স্বয়ংসম্পূর্ণ কর্মক্ষমতার উপর উল্লেখযোগ্য প্রভাব ফেলতে পারে৷
- যদি API একটি ত্রুটি ফেরত দেয় তবে আপনার অ্যাপটি সুন্দরভাবে হ্রাস পায় তা নিশ্চিত করতে ত্রুটি পরিচালনা ব্যবহার করুন।
- নিশ্চিত করুন যে কোনও নির্বাচন না থাকলে আপনার অ্যাপ পরিচালনা করে এবং ব্যবহারকারীদের চালিয়ে যাওয়ার একটি উপায় দেয়।
খরচ অপ্টিমাইজেশান সেরা অনুশীলন
মৌলিক খরচ অপ্টিমাইজেশান
প্লেস স্বয়ংসম্পূর্ণ পরিষেবা ব্যবহার করার খরচ অপ্টিমাইজ করতে, শুধুমাত্র আপনার প্রয়োজনীয় স্থানের ডেটা ক্ষেত্রগুলি ফেরাতে স্থানের বিবরণ এবং প্লেস স্বয়ংসম্পূর্ণ উইজেটগুলিতে ফিল্ড মাস্ক ব্যবহার করুন।
উন্নত খরচ অপ্টিমাইজেশান
প্রতি অনুরোধ মূল্য অ্যাক্সেস করতে এবং স্থানের বিবরণের পরিবর্তে নির্বাচিত স্থান সম্পর্কে জিওকোডিং এপিআই ফলাফলের জন্য অনুরোধ করার জন্য স্থান স্বয়ংসম্পূর্ণের প্রোগ্রাম্যাটিক বাস্তবায়ন বিবেচনা করুন। জিওকোডিং এপিআই-এর সাথে পেয়ার করা প্রতি অনুরোধ মূল্য প্রতি সেশন (সেশন-ভিত্তিক) মূল্যের চেয়ে বেশি সাশ্রয়ী হয় যদি নিম্নলিখিত দুটি শর্ত পূরণ করা হয়:
- আপনার যদি শুধুমাত্র ব্যবহারকারীর নির্বাচিত স্থানের অক্ষাংশ/দ্রাঘিমাংশ বা ঠিকানার প্রয়োজন হয়, তবে জিওকোডিং API এই তথ্যটি স্থানের বিবরণ কলের চেয়েও কম সময়ে সরবরাহ করে।
- ব্যবহারকারীরা যদি গড়ে চারটি স্বয়ংসম্পূর্ণ ভবিষ্যদ্বাণী অনুরোধের মধ্যে একটি স্বয়ংসম্পূর্ণ ভবিষ্যদ্বাণী নির্বাচন করে বা তার চেয়ে কম, প্রতি অনুরোধ মূল্য প্রতি সেশন মূল্যের চেয়ে বেশি সাশ্রয়ী হতে পারে।
আপনার আবেদনে কি নির্বাচিত ভবিষ্যদ্বাণীর ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশ ছাড়া অন্য কোনো তথ্যের প্রয়োজন আছে?
স্থানের বিবরণ সহ সেশন-ভিত্তিক স্থান স্বয়ংসম্পূর্ণ ব্যবহার করুন।
যেহেতু আপনার অ্যাপ্লিকেশনের জন্য স্থানের বিবরণ যেমন স্থানের নাম, ব্যবসার স্থিতি, বা খোলার সময় প্রয়োজন, তাই আপনার স্থান স্বয়ংসম্পূর্ণ বাস্তবায়নের জন্য একটি সেশন টোকেন ব্যবহার করা উচিত ( প্রোগ্রাম্যাটিকভাবে বা জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড বা iOS উইজেটগুলিতে তৈরি) মোট খরচের জন্য $0.017 প্রতি সেশন এবং প্রযোজ্য স্থান ডেটা SKUগুলি আপনি কোন স্থানের ডেটা ক্ষেত্রের অনুরোধ করছেন তার উপর নির্ভর করে। 1
উইজেট বাস্তবায়ন
সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড , বা আইওএস উইজেটে তৈরি হয়। এতে স্থানের স্বয়ংসম্পূর্ণ অনুরোধ এবং নির্বাচিত ভবিষ্যদ্বাণীতে স্থানের বিশদ বিবরণ উভয়ই অন্তর্ভুক্ত রয়েছে। আপনি শুধুমাত্র আপনার প্রয়োজনীয় স্থানের ডেটা ক্ষেত্রগুলির জন্য অনুরোধ করছেন তা নিশ্চিত করার জন্য fields
প্যারামিটারটি নির্দিষ্ট করতে ভুলবেন না।
প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার স্থান স্বয়ংসম্পূর্ণ অনুরোধের সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত ভবিষ্যদ্বাণী সম্পর্কে স্থানের বিবরণের অনুরোধ করার সময়, নিম্নলিখিত পরামিতিগুলি অন্তর্ভুক্ত করুন:
- স্থান স্বয়ংসম্পূর্ণ প্রতিক্রিয়া থেকে স্থান আইডি
- স্থান স্বয়ংসম্পূর্ণ অনুরোধে ব্যবহৃত সেশন টোকেন
-
fields
প্যারামিটার আপনার প্রয়োজনীয় স্থান ডেটা ক্ষেত্র নির্দিষ্ট করে
আপনার প্লেস স্বয়ংসম্পূর্ণ ব্যবহারের পারফরম্যান্সের উপর নির্ভর করে আপনার অ্যাপ্লিকেশনের জন্য স্থানের বিশদ বিবরণের চেয়ে জিওকোডিং API একটি আরও সাশ্রয়ী বিকল্প হতে পারে। প্রতিটি অ্যাপ্লিকেশনের স্বয়ংসম্পূর্ণ দক্ষতা ব্যবহারকারীরা কী প্রবেশ করছে, অ্যাপ্লিকেশনটি কোথায় ব্যবহার করা হচ্ছে এবং কর্মক্ষমতা অপ্টিমাইজেশনের সর্বোত্তম অনুশীলনগুলি বাস্তবায়িত হয়েছে কিনা তার উপর নির্ভর করে পরিবর্তিত হয়।
নিম্নলিখিত প্রশ্নের উত্তর দেওয়ার জন্য, আপনার অ্যাপ্লিকেশনে একটি স্থান স্বয়ংসম্পূর্ণ পূর্বাভাস নির্বাচন করার আগে একজন ব্যবহারকারী গড়ে কতগুলি অক্ষর টাইপ করে তা বিশ্লেষণ করুন।
আপনার ব্যবহারকারীরা কি গড়ে চার বা তার কম অনুরোধে একটি স্থান স্বয়ংসম্পূর্ণ পূর্বাভাস নির্বাচন করেন?
সেশন টোকেন ছাড়াই প্রোগ্রাম্যাটিকভাবে প্লেস স্বয়ংসম্পূর্ণ বাস্তবায়ন করুন এবং নির্বাচিত স্থানের পূর্বাভাসে জিওকোডিং API কল করুন।
জিওকোডিং API অনুরোধ প্রতি $0.005 এর জন্য ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্ক সরবরাহ করে। চারটি স্থান স্বয়ংসম্পূর্ণ করতে - প্রতি অনুরোধের জন্য $0.01132 খরচ হয় তাই চারটি অনুরোধের মোট খরচ এবং নির্বাচিত স্থানের পূর্বাভাস সম্পর্কে একটি জিওকোডিং API কল হবে $0.01632 যা প্রতি সেশন প্রতি সেশনের স্বয়ংসম্পূর্ণ মূল্য $0.017 থেকে কম৷ 1
আপনার ব্যবহারকারীদের আরও কম অক্ষরের মধ্যে তারা যে ভবিষ্যদ্বাণী খুঁজছেন তা পেতে সহায়তা করার জন্য কর্মক্ষমতার সর্বোত্তম অনুশীলনগুলিকে কাজে লাগানোর কথা বিবেচনা করুন৷
স্থানের বিবরণ সহ সেশন-ভিত্তিক স্থান স্বয়ংসম্পূর্ণ ব্যবহার করুন।
যেহেতু একজন ব্যবহারকারী একটি স্থান স্বয়ংসম্পূর্ণ ভবিষ্যদ্বাণী নির্বাচন করার আগে আপনি যে অনুরোধগুলি করতে আশা করেন তার গড় সংখ্যা প্রতি সেশন মূল্যের মূল্যকে ছাড়িয়ে যায়, তাই আপনার স্থান স্বয়ংসম্পূর্ণের বাস্তবায়নের জন্য একটি সেশন টোকেন ব্যবহার করা উচিত স্থান স্বয়ংসম্পূর্ণ অনুরোধ এবং সংশ্লিষ্ট স্থানের বিবরণ অনুরোধ উভয়ের জন্য প্রতি সেশনে মোট $0.017 খরচের জন্য। 1
উইজেট বাস্তবায়ন
সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড , বা আইওএস উইজেটে তৈরি হয়। এতে স্থানের স্বয়ংসম্পূর্ণ অনুরোধ এবং নির্বাচিত ভবিষ্যদ্বাণীতে স্থানের বিশদ বিবরণ উভয়ই অন্তর্ভুক্ত রয়েছে। আপনি শুধুমাত্র বেসিক ডেটা ফিল্ডের জন্য অনুরোধ করছেন তা নিশ্চিত করার জন্য fields
প্যারামিটার নির্দিষ্ট করতে ভুলবেন না।
প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার স্থান স্বয়ংসম্পূর্ণ অনুরোধের সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত ভবিষ্যদ্বাণী সম্পর্কে স্থানের বিবরণের অনুরোধ করার সময়, নিম্নলিখিত পরামিতিগুলি অন্তর্ভুক্ত করুন:
- স্থান স্বয়ংসম্পূর্ণ প্রতিক্রিয়া থেকে স্থান আইডি
- স্থান স্বয়ংসম্পূর্ণ অনুরোধে ব্যবহৃত সেশন টোকেন
-
fields
প্যারামিটার বেসিক ডেটা ক্ষেত্র যেমন ঠিকানা এবং জ্যামিতি নির্দিষ্ট করে
স্থান স্বয়ংসম্পূর্ণ অনুরোধ বিলম্ব বিবেচনা করুন
আপনি কৌশল প্রয়োগ করতে পারেন যেমন একটি স্থান স্বয়ংসম্পূর্ণ অনুরোধ বিলম্বিত করা যতক্ষণ না ব্যবহারকারী প্রথম তিন বা চারটি অক্ষর টাইপ করেন যাতে আপনার অ্যাপ্লিকেশনটি কম অনুরোধ করে। উদাহরণস্বরূপ, ব্যবহারকারী তৃতীয় অক্ষর টাইপ করার পরে প্রতিটি অক্ষরের জন্য স্থান স্বয়ংসম্পূর্ণ অনুরোধ করার অর্থ হল যে ব্যবহারকারী যদি সাতটি অক্ষর টাইপ করে তাহলে একটি ভবিষ্যদ্বাণী নির্বাচন করে যার জন্য আপনি একটি জিওকোডিং API অনুরোধ করেন, মোট খরচ হবে $0.01632 (4 * $0.00283 স্বয়ংসম্পূর্ণ প্রতি অনুরোধ + $0.005 জিওকোডিং)। 1
যদি বিলম্বিত অনুরোধগুলি আপনার গড় প্রোগ্রাম্যাটিক অনুরোধ চারটির নিচে পেতে পারে, আপনি জিওকোডিং API বাস্তবায়নের সাথে পারফরম্যান্ট প্লেস স্বয়ংসম্পূর্ণের জন্য নির্দেশিকা অনুসরণ করতে পারেন। নোট করুন যে অনুরোধ বিলম্বিত করা ব্যবহারকারীর দ্বারা লেটেন্সি হিসাবে অনুভূত হতে পারে যারা প্রতিটি নতুন কীস্ট্রোকের সাথে ভবিষ্যদ্বাণী দেখার আশা করতে পারে৷
আপনার ব্যবহারকারীদের তারা কম অক্ষরের মধ্যে যে ভবিষ্যদ্বাণী খুঁজছেন তা পেতে সহায়তা করার জন্য কর্মক্ষমতার সর্বোত্তম অনুশীলনগুলিকে কাজে লাগান।
এখানে তালিকাভুক্ত খরচ USD-এ। সম্পূর্ণ মূল্যের তথ্যের জন্য অনুগ্রহ করে Google মানচিত্র প্ল্যাটফর্ম বিলিং পৃষ্ঠাটি দেখুন।
কর্মক্ষমতা সেরা অনুশীলন
নিম্নলিখিত নির্দেশিকাগুলি স্থান স্বয়ংসম্পূর্ণ কর্মক্ষমতা অপ্টিমাইজ করার উপায় বর্ণনা করে:
- আপনার স্থান স্বয়ংসম্পূর্ণ বাস্তবায়নে দেশের সীমাবদ্ধতা, অবস্থানের পক্ষপাতিত্ব এবং (প্রোগ্রামাটিক বাস্তবায়নের জন্য) ভাষা পছন্দ যোগ করুন। উইজেটগুলির সাথে ভাষার পছন্দের প্রয়োজন নেই কারণ তারা ব্যবহারকারীর ব্রাউজার বা মোবাইল ডিভাইস থেকে ভাষা পছন্দগুলি বেছে নেয়।
- যদি স্থান স্বয়ংসম্পূর্ণ একটি মানচিত্র দ্বারা অনুষঙ্গী হয়, আপনি মানচিত্র ভিউপোর্ট দ্বারা অবস্থান পক্ষপাতিত্ব করতে পারেন.
- এমন পরিস্থিতিতে যখন একজন ব্যবহারকারী স্বয়ংসম্পূর্ণ ভবিষ্যদ্বাণীগুলির মধ্যে একটিকে বেছে নেয় না, সাধারণত যেহেতু এই ভবিষ্যদ্বাণীগুলির কোনওটিই পছন্দসই ফলাফল-ঠিকানা নয়, আপনি আরও প্রাসঙ্গিক ফলাফল পাওয়ার চেষ্টা করতে মূল ব্যবহারকারীর ইনপুটটি পুনরায় ব্যবহার করতে পারেন:
- আপনি যদি আশা করেন যে ব্যবহারকারী শুধুমাত্র ঠিকানার তথ্য লিখবেন, তাহলে জিওকোডিং API- এ একটি কলে আসল ব্যবহারকারীর ইনপুট পুনরায় ব্যবহার করুন।
- আপনি যদি আশা করেন যে ব্যবহারকারী একটি নির্দিষ্ট স্থানের জন্য নাম বা ঠিকানা দ্বারা প্রশ্ন লিখবেন, তাহলে একটি সন্ধান করুন স্থান অনুরোধ ব্যবহার করুন। ফলাফল শুধুমাত্র একটি নির্দিষ্ট অঞ্চলে প্রত্যাশিত হলে, অবস্থানের পক্ষপাতিত্ব ব্যবহার করুন৷
- ব্যবহারকারীরা সাবপ্রিমাইজ অ্যাড্রেস ইনপুট করছেন, যেমন একটি বিল্ডিংয়ের মধ্যে নির্দিষ্ট ইউনিট বা অ্যাপার্টমেন্টের ঠিকানা। উদাহরণস্বরূপ, চেক ঠিকানা "Stroupežnického 3191/17, Praha" Place Autocomplete-এ একটি আংশিক ভবিষ্যদ্বাণী দেয়।
- নিউইয়র্ক সিটিতে "23-30 29th St, Queens" বা হাওয়াইয়ের কাউই দ্বীপে "47-380 Kamehameha Hwy, Kaneohe" এর মতো রাস্তা-সেগমেন্টের উপসর্গ সহ ঠিকানা ইনপুট করছেন ব্যবহারকারীরা৷
সমস্যা সমাধান
যদিও বিভিন্ন ধরণের ত্রুটি ঘটতে পারে, আপনার অ্যাপের বেশিরভাগ ত্রুটিগুলি সাধারণত কনফিগারেশন ত্রুটির কারণে হয় (উদাহরণস্বরূপ, ভুল API কী ব্যবহার করা হয়েছিল, বা API কীটি ভুলভাবে কনফিগার করা হয়েছিল), বা কোটা ত্রুটি (আপনার অ্যাপটি তার কোটা অতিক্রম করেছে)। কোটা সম্পর্কে আরও তথ্যের জন্য ব্যবহারের সীমা দেখুন।
স্বয়ংসম্পূর্ণ নিয়ন্ত্রণের ব্যবহারে যে ত্রুটিগুলি ঘটে তা onActivityResult()
কলব্যাকে ফেরত দেওয়া হয়। ফলাফলের স্ট্যাটাস মেসেজ পেতে Autocomplete.getStatus()
এ কল করুন।
Android এর জন্য Places SDK-এ স্বয়ংসম্পূর্ণ পরিষেবা ব্যবহারকারীর অনুসন্ধান প্রশ্নের উত্তরে স্থানের পূর্বাভাস প্রদান করে। ব্যবহারকারীর ধরন হিসাবে, স্বয়ংসম্পূর্ণ পরিষেবাটি ব্যবসা, ঠিকানা, প্লাস কোড এবং আগ্রহের জায়গাগুলির মতো জায়গাগুলির জন্য পরামর্শ প্রদান করে৷
আপনি নিম্নলিখিত উপায়ে আপনার অ্যাপে স্বয়ংসম্পূর্ণ যোগ করতে পারেন:
- বিকাশের সময় বাঁচাতে এবং একটি সামঞ্জস্যপূর্ণ ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করতে একটি স্বয়ংসম্পূর্ণ উইজেট যোগ করুন ।
- একটি কাস্টমাইজড ব্যবহারকারীর অভিজ্ঞতা তৈরি করতে প্রোগ্রামগতভাবে স্থানের পূর্বাভাস পান ।
একটি স্বয়ংসম্পূর্ণ উইজেট যোগ করুন
স্বয়ংসম্পূর্ণ উইজেট হল অন্তর্নির্মিত স্বয়ংসম্পূর্ণ কার্যকারিতা সহ একটি অনুসন্ধান ডায়ালগ। একজন ব্যবহারকারী অনুসন্ধানের পদে প্রবেশ করার সাথে সাথে, উইজেটটি বেছে নেওয়ার জন্য পূর্বাভাসিত স্থানগুলির একটি তালিকা উপস্থাপন করে। যখন ব্যবহারকারী একটি নির্বাচন করে, একটি Place
উদাহরণ প্রদান করা হয়, যা আপনার অ্যাপটি নির্বাচিত স্থান সম্পর্কে বিশদ পেতে ব্যবহার করতে পারে।
আপনার অ্যাপে স্বয়ংসম্পূর্ণ উইজেট যোগ করার জন্য দুটি বিকল্প রয়েছে:
- বিকল্প 1: একটি
AutocompleteSupportFragment
ফ্র্যাগমেন্ট এম্বেড করুন । - বিকল্প 2: স্বয়ংসম্পূর্ণ কার্যকলাপ চালু করতে একটি অভিপ্রায় ব্যবহার করুন ৷
বিকল্প 1: একটি স্বয়ংসম্পূর্ণ সাপোর্ট ফ্র্যাগমেন্ট এম্বেড করুন
আপনার অ্যাপে একটি AutocompleteSupportFragment
যোগ করতে, নিম্নলিখিত পদক্ষেপগুলি নিন:
- আপনার কার্যকলাপের XML লেআউটে একটি খণ্ড যোগ করুন।
- আপনার কার্যকলাপ বা টুকরা একটি শ্রোতা যোগ করুন.
একটি কার্যকলাপে স্বয়ংসম্পূর্ণ সমর্থন ফ্র্যাগমেন্ট যোগ করুন
একটি কার্যকলাপে 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"
/>
- ডিফল্টরূপে, খণ্ডটির কোনো সীমানা বা পটভূমি নেই। একটি সামঞ্জস্যপূর্ণ চাক্ষুষ উপস্থিতি প্রদান করার জন্য, একটি কার্ডভিউ এর মতো অন্য লেআউট উপাদানের মধ্যে খণ্ডটিকে নেস্ট করুন।
- আপনি যদি স্বয়ংসম্পূর্ণ খণ্ডটি ব্যবহার করেন এবং
onActivityResult
ওভাররাইড করতে চান, তাহলে আপনাকে অবশ্যইsuper.onActivityResult
কল করতে হবে, অন্যথায় খণ্ডটি সঠিকভাবে কাজ করবে না।
একটি কার্যকলাপে একটি স্থান নির্বাচন শ্রোতা যোগ করুন
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.NAME)) // Set up a PlaceSelectionListener to handle the response. autocompleteFragment.setOnPlaceSelectedListener(object : PlaceSelectionListener { override fun onPlaceSelected(place: Place) { // TODO: Get info about the selected place. Log.i(TAG, "Place: ${place.name}, ${place.id}") } override fun onError(status: Status) { // TODO: Handle the error. 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. autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME)); // Set up a PlaceSelectionListener to handle the response. autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { @Override public void onPlaceSelected(@NonNull Place place) { // TODO: Get info about the selected place. Log.i(TAG, "Place: " + place.getName() + ", " + place.getId()); } @Override public void onError(@NonNull Status status) { // TODO: Handle the error. Log.i(TAG, "An error occurred: " + status); } });
বিকল্প 2: স্বয়ংসম্পূর্ণ কার্যকলাপ চালু করতে একটি অভিপ্রায় ব্যবহার করুন
আপনি যদি চান যে আপনার অ্যাপটি একটি ভিন্ন ন্যাভিগেশনাল ফ্লো ব্যবহার করুক (উদাহরণস্বরূপ, অনুসন্ধান ক্ষেত্রের পরিবর্তে একটি আইকন থেকে স্বয়ংসম্পূর্ণ অভিজ্ঞতা ট্রিগার করতে), আপনার অ্যাপটি একটি অভিপ্রায় ব্যবহার করে স্বয়ংসম্পূর্ণ চালু করতে পারে।
একটি অভিপ্রায় ব্যবহার করে স্বয়ংসম্পূর্ণ উইজেট চালু করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
- পছন্দসই
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.NAME) // Start the autocomplete intent. val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .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.NAME); // Start the autocomplete intent. Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .build(this); startAutocomplete.launch(intent);
স্বয়ংসম্পূর্ণ উইজেট চালু করার জন্য একটি অভিপ্রায় ব্যবহার করার সময়, আপনি ওভারলে বা পূর্ণ-স্ক্রীন প্রদর্শন মোড থেকে চয়ন করতে পারেন৷ নিম্নলিখিত স্ক্রিনশটগুলি যথাক্রমে প্রতিটি প্রদর্শন মোড দেখায়:


অভিপ্রায় ফলাফলের জন্য একটি কলব্যাক নিবন্ধন করুন
ব্যবহারকারী একটি স্থান নির্বাচন করলে একটি বিজ্ঞপ্তি পেতে, একটি registerForActivityResult()
লঞ্চার সংজ্ঞায়িত করুন, যা কার্যকলাপটি চালু করে এবং নিম্নলিখিত উদাহরণে দেখানো ফলাফলটি পরিচালনা করে। ব্যবহারকারী একটি ভবিষ্যদ্বাণী নির্বাচন করলে, এটি ফলাফল বস্তুর মধ্যে থাকা অভিপ্রায়ে বিতরণ করা হবে। যেহেতু অভিপ্রায়টি Autocomplete.IntentBuilder
দ্বারা তৈরি করা হয়েছিল, পদ্ধতি Autocomplete.getPlaceFromIntent()
এটি থেকে স্থান বস্তুটি বের করতে পারে।
private val startAutocomplete = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> if (result.resultCode == Activity.RESULT_OK) { val intent = result.data if (intent != null) { val place = Autocomplete.getPlaceFromIntent(intent) Log.i( TAG, "Place: ${place.name}, ${place.id}" ) } } else if (result.resultCode == Activity.RESULT_CANCELED) { // The user canceled the operation. 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); Log.i(TAG, "Place: ${place.getName()}, ${place.getId()}"); } } else if (result.getResultCode() == Activity.RESULT_CANCELED) { // The user canceled the operation. Log.i(TAG, "User canceled autocomplete"); } });
প্রোগ্রামগতভাবে স্থানের পূর্বাভাস পাওয়া
স্বয়ংসম্পূর্ণ উইজেট দ্বারা প্রদত্ত UI-এর বিকল্প হিসাবে আপনি একটি কাস্টম অনুসন্ধান UI তৈরি করতে পারেন৷ এটি করার জন্য, আপনার অ্যাপকে প্রোগ্রামগতভাবে স্থানের পূর্বাভাস পেতে হবে। আপনার অ্যাপ PlacesClient.findAutocompletePredictions()
কল করে, নিম্নলিখিত প্যারামিটার সহ একটি FindAutocompletePredictionsRequest
অবজেক্ট পাস করে স্বয়ংসম্পূর্ণ API থেকে পূর্বাভাসিত স্থানের নাম এবং/অথবা ঠিকানাগুলির একটি তালিকা পেতে পারে:
- প্রয়োজনীয়: ব্যবহারকারীর দ্বারা টাইপ করা পাঠ্য ধারণকারী একটি
query
স্ট্রিং। - প্রস্তাবিত: একটি
AutocompleteSessionToken
, যা বিলিং উদ্দেশ্যে একটি পৃথক সেশনে ব্যবহারকারী অনুসন্ধানের প্রশ্ন এবং নির্বাচনের পর্যায়গুলিকে গোষ্ঠীভুক্ত করে। সেশন শুরু হয় যখন ব্যবহারকারী একটি ক্যোয়ারী টাইপ করা শুরু করে এবং যখন তারা একটি স্থান নির্বাচন করে তখন শেষ হয়। - প্রস্তাবিত: একটি
RectangularBounds
অবজেক্ট, যা অক্ষাংশ এবং দ্রাঘিমাংশের সীমা নির্দিষ্ট করে নির্দিষ্ট অঞ্চলের ফলাফলগুলিকে সীমাবদ্ধ করতে । - ঐচ্ছিক: এক বা একাধিক দুই-অক্ষরের দেশের কোড s (ISO 3166-1 Alpha-2), যে দেশ বা দেশগুলির ফলাফল সীমাবদ্ধ করা উচিত তা নির্দেশ করে৷
ঐচ্ছিক: একটি
TypeFilter
, যা আপনি নির্দিষ্ট স্থানের প্রকারের ফলাফলগুলিকে সীমাবদ্ধ করতে ব্যবহার করতে পারেন। নিম্নলিখিত স্থান প্রকারগুলি সমর্থিত:-
TypeFilter.GEOCODE
– ব্যবসার পরিবর্তে শুধুমাত্র জিওকোডিং ফলাফল প্রদান করে। যেখানে নির্দিষ্ট অবস্থান অনির্দিষ্ট হতে পারে সেখানে ফলাফলগুলিকে দ্ব্যর্থিত করতে এই অনুরোধটি ব্যবহার করুন৷ -
TypeFilter.ADDRESS
– একটি সুনির্দিষ্ট ঠিকানা সহ শুধুমাত্র স্বয়ংসম্পূর্ণ ফলাফল প্রদান করে। এই ধরনের ব্যবহার করুন যখন আপনি জানেন যে ব্যবহারকারী একটি সম্পূর্ণ নির্দিষ্ট ঠিকানা খুঁজছেন। -
TypeFilter.ESTABLISHMENT
- শুধুমাত্র ব্যবসায়িক স্থান ফেরত দেয়। TypeFilter.REGIONS
- শুধুমাত্র নিম্নলিখিত ধরনেরগুলির মধ্যে একটির সাথে মেলে এমন স্থানগুলি ফেরত দেয়:LOCALITY
SUBLOCALITY
POSTAL_CODE
COUNTRY
ADMINISTRATIVE_AREA_LEVEL_1
ADMINISTRATIVE_AREA_LEVEL_2
TypeFilter.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.ADDRESS)) .setSessionToken(token) .setQuery(query) .build() placesClient.findAutocompletePredictions(request) .addOnSuccessListener { response: FindAutocompletePredictionsResponse -> for (prediction in response.autocompletePredictions) { Log.i(TAG, prediction.placeId) Log.i(TAG, prediction.getPrimaryText(null).toString()) } }.addOnFailureListener { exception: Exception? -> if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.statusCode}") } }
// 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(Arrays.asList(PlaceTypes.ADDRESS)) .setSessionToken(token) .setQuery(query) .build(); placesClient.findAutocompletePredictions(request).addOnSuccessListener((response) -> { for (AutocompletePrediction prediction : response.getAutocompletePredictions()) { Log.i(TAG, prediction.getPlaceId()); Log.i(TAG, prediction.getPrimaryText(null).toString()); } }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } });
API একটি Task
একটি FindAutocompletePredictionsResponse
প্রদান করে। FindAutocompletePredictionsResponse
এ AutocompletePrediction
বস্তুর একটি তালিকা রয়েছে যা ভবিষ্যদ্বাণী করা স্থানগুলিকে প্রতিনিধিত্ব করে। ক্যোয়ারী এবং ফিল্টারের মানদণ্ডের সাথে সম্পর্কিত কোন পরিচিত স্থান না থাকলে তালিকাটি খালি হতে পারে।
প্রতিটি পূর্বাভাসিত স্থানের জন্য, আপনি স্থানের বিবরণ পুনরুদ্ধার করতে নিম্নলিখিত পদ্ধতিতে কল করতে পারেন:
-
getFullText(CharacterStyle)
একটি স্থানের বিবরণের সম্পূর্ণ টেক্সট প্রদান করে। এটি প্রাথমিক এবং মাধ্যমিক পাঠ্যের সংমিশ্রণ। উদাহরণ: " আইফেল টাওয়ার, অ্যাভিনিউ আনাতোল ফ্রান্স, প্যারিস, ফ্রান্স "। এছাড়াও, এই পদ্ধতিটি আপনাকে বর্ণনার বিভাগগুলিকে হাইলাইট করতে দেয় যা আপনার পছন্দের শৈলীর সাথে অনুসন্ধানের সাথে মেলে,CharacterStyle
ব্যবহার করে।CharacterStyle
প্যারামিটার ঐচ্ছিক। আপনি কোনো হাইলাইট করার প্রয়োজন না হলে এটি নাল সেট করুন। -
getPrimaryText(CharacterStyle)
একটি স্থানের বর্ণনা দিয়ে মূল পাঠ্য ফেরত দেয়। এটি সাধারণত জায়গার নাম। উদাহরণ: " আইফেল টাওয়ার ", এবং " 123 পিট স্ট্রিট "। -
getSecondaryText(CharacterStyle)
একটি স্থানের বিবরণের সহায়ক পাঠ্য প্রদান করে। এটি দরকারী, উদাহরণস্বরূপ, স্বয়ংসম্পূর্ণ পূর্বাভাস দেখানোর সময় একটি দ্বিতীয় লাইন হিসাবে। উদাহরণ: " এভিনিউ আনাতোল ফ্রান্স, প্যারিস, ফ্রান্স ", এবং " সিডনি, নিউ সাউথ ওয়েলস "। -
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 সামঞ্জস্যপূর্ণ দেশের কোড হিসেবে পাস করতে হবে।
একটি নির্দিষ্ট অঞ্চলে পক্ষপাতের ফলাফল
একটি নির্দিষ্ট ভৌগলিক অঞ্চলে স্বয়ংসম্পূর্ণ ফলাফলের পক্ষপাতিত্ব করতে, একটি RectangularBounds
পাস করে setLocationBias()
কল করুন। নিম্নলিখিত কোড উদাহরণটি অস্ট্রেলিয়ার সিডনির একটি অঞ্চলে স্বয়ংসম্পূর্ণ প্রস্তাবনাগুলিকে পক্ষপাতিত্ব করার জন্য একটি খণ্ডের উদাহরণে setLocationBias()
কল করা দেখায়৷
autocompleteFragment.setLocationBias( RectangularBounds.newInstance( LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596) ) )
autocompleteFragment.setLocationBias(RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596)));
একটি নির্দিষ্ট অঞ্চলে ফলাফল সীমাবদ্ধ করুন
একটি নির্দিষ্ট ভৌগলিক অঞ্চলে স্বয়ংসম্পূর্ণ ফলাফল সীমাবদ্ধ করতে, একটি RectangularBounds
পাস করে setLocationRestriction()
কল করুন। নিম্নলিখিত কোড উদাহরণটি অস্ট্রেলিয়ার সিডনি অঞ্চলে স্বতঃপূর্ব পরামর্শগুলিকে পক্ষপাতদুষ্ট করার জন্য একটি খণ্ড উদাহরণে setLocationRestriction()
কল করা দেখায়।
autocompleteFragment.setLocationRestriction( RectangularBounds.newInstance( LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596) ) )
autocompleteFragment.setLocationRestriction(RectangularBounds.newInstance( new LatLng(-33.880490, 151.184363), new LatLng(-33.858754, 151.229596)));
দ্রষ্টব্য: এই বিধিনিষেধটি কেবল পুরো রুটে প্রয়োগ করা হয়, আয়তক্ষেত্রাকার সীমানার বাইরে অবস্থিত সিন্থেটিক ফলাফলগুলি এমন একটি রুটের ভিত্তিতে ফিরে আসতে পারে যা অবস্থান সীমাবদ্ধতার সাথে ওভারল্যাপ করে।
স্থান প্রকার বা প্রকার সংগ্রহ দ্বারা ফিল্টার ফলাফল
আপনি একটি স্বতঃপূর্ব অনুরোধ থেকে ফলাফল সীমাবদ্ধ করতে পারেন যাতে তারা কেবল একটি নির্দিষ্ট স্থানের প্রকারটি ফিরিয়ে দেয়। স্থানের ধরণগুলি বা স্থানের ধরণের টেবিল 1, 2 এবং 3 এ তালিকাভুক্ত একটি টাইপ সংগ্রহ ব্যবহার করে একটি ফিল্টার নির্দিষ্ট করুন। যদি কিছু নির্দিষ্ট না করা হয় তবে সমস্ত প্রকার ফিরে আসে।
স্বতঃপোষক ফলাফলগুলি ফিল্টার করতে, ফিল্টারটি সেট করতে setTypesFilter()
কল করুন।
কোনও প্রকার বা প্রকার সংগ্রহ ফিল্টার নির্দিষ্ট করতে:
setTypesFilter()
কল করুন এবং টেবিল 1 থেকে পাঁচটি ধরণের মান এবং স্থানের প্রকারগুলিতে প্রদর্শিত সারণী 2 নির্দিষ্ট করুন। ধরণের মানগুলি প্লেসেটাইপগুলিতে ধ্রুবক দ্বারা সংজ্ঞায়িত করা হয়।setTypesFilter()
কল করুন এবং স্থানের প্রকারে প্রদর্শিত সারণী 3 থেকে একটি প্রকার সংগ্রহ নির্দিষ্ট করুন। সংগ্রহের মানগুলি প্লেসেটাইপগুলিতে ধ্রুবক দ্বারা সংজ্ঞায়িত করা হয়।অনুরোধে টেবিল 3 থেকে কেবলমাত্র একটি ধরণের অনুমতি দেওয়া হয়েছে। আপনি যদি সারণী 3 থেকে কোনও মান নির্দিষ্ট করেন তবে আপনি সারণী 1 বা সারণী 2 থেকে কোনও মান নির্দিষ্ট করতে পারবেন না। আপনি যদি তা করেন তবে একটি ত্রুটি ঘটে।
নিম্নলিখিত কোড উদাহরণটি একটি AutocompleteSupportFragment
setTypesFilter()
কল করে এবং একাধিক ধরণের মান নির্দিষ্ট করে।
autocompleteFragment.setTypesFilter(listOf("landmark", "restaurant", "store"))
autocompleteFragment.setTypesFilter(Arrays.asList("landmark", "restaurant", "store"));
নিম্নলিখিত কোড উদাহরণটি একটি টাইপ সংগ্রহ নির্দিষ্ট করে একটি নির্দিষ্ট ঠিকানা সহ কেবলমাত্র ফলাফলের ফলাফল হিসাবে একটি ফিল্টার সেট করতে একটি AutocompleteSupportFragment
setTypesFilter()
কল করা দেখায়।
autocompleteFragment.setTypesFilter(listOf(PlaceTypes.ADDRESS))
autocompleteFragment.setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS, PlaceTypes.ESTABLISHMENT));
নিম্নলিখিত কোড উদাহরণটি একটি IntentBuilder
setTypesFilter()
কল করা দেখায় যে কোনও টাইপ সংগ্রহ নির্দিষ্ট করে একটি নির্দিষ্ট ঠিকানার সাথে কেবলমাত্র ফলাফলের ফলাফল দেয় এমন একটি ফিল্টার সেট করতে।
val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(listOf(PlaceTypes.ADDRESS)) .build(this)
Intent intent = new Autocomplete.IntentBuilder( AutocompleteActivityMode.FULLSCREEN, fields) .setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS)) .build(this);
দেশ দ্বারা ফিল্টার ফলাফল
পাঁচটি দেশ পর্যন্ত স্বতঃপূর্ব ফলাফল ফিল্টার করতে, দেশের কোড সেট করতে setCountries()
কল করুন। তারপরে, ফিল্টারটি একটি খণ্ড বা অভিপ্রায় পাস করুন। দেশগুলিকে অবশ্যই দ্বি-চরিত্র হিসাবে পাস করতে হবে, আইএসও 3166-1 আলফা -2 সামঞ্জস্যপূর্ণ দেশ কোড ।
নিম্নলিখিত কোড উদাহরণটি নির্দিষ্ট দেশগুলির মধ্যে কেবলমাত্র ফলাফলগুলি ফিরিয়ে দেওয়ার জন্য একটি ফিল্টার সেট করতে একটি AutocompleteSupportFragment
setCountries()
কল করা দেখায়।
autocompleteFragment.setCountries("AU", "NZ")
autocompleteFragment.setCountries("AU", "NZ");
ব্যবহারের সীমা
অ্যান্ড্রয়েডের জন্য এসডিকে স্থানগুলি সহ এপিআই স্থানগুলির আপনার ব্যবহার এখন আর প্রতিদিন সর্বাধিক সংখ্যক অনুরোধের মধ্যে সীমাবদ্ধ নয় (কিউপিডি)। তবে নিম্নলিখিত ব্যবহারের সীমা এখনও প্রযোজ্য:
- হারের সীমা 6,000 কিউপিএম (প্রতি মিনিটে অনুরোধ)। এটি একই প্রকল্পের শংসাপত্রগুলি ব্যবহার করে সমস্ত অ্যাপ্লিকেশনগুলির জন্য ক্লায়েন্ট-সাইড এবং সার্ভার-সাইড অনুরোধগুলির যোগফল হিসাবে গণনা করা হয়।
আপনার অ্যাপে বৈশিষ্ট্য প্রদর্শন করুন
- যদি আপনার অ্যাপ্লিকেশনটি স্বতঃপূরিত পরিষেবাটি প্রোগ্রামিকভাবে ব্যবহার করে তবে আপনার ইউআইকে অবশ্যই একটি 'গুগল দ্বারা চালিত' অ্যাট্রিবিউশন প্রদর্শন করতে হবে বা গুগল-ব্র্যান্ডযুক্ত মানচিত্রের মধ্যে উপস্থিত হতে হবে।
- যদি আপনার অ্যাপ্লিকেশনটি অটো কমপ্লিট উইজেট ব্যবহার করে তবে কোনও অতিরিক্ত ক্রিয়াকলাপের প্রয়োজন নেই (প্রয়োজনীয় অ্যাট্রিবিউশনটি ডিফল্টরূপে প্রদর্শিত হয়)।
- আপনি যদি আইডি দ্বারা স্থান পাওয়ার পরে অতিরিক্ত স্থানের তথ্য পুনরুদ্ধার করে এবং প্রদর্শন করেন তবে আপনাকে অবশ্যই তৃতীয় পক্ষের বৈশিষ্ট্যগুলিও প্রদর্শন করতে হবে।
আরও তথ্যের জন্য, বৈশিষ্ট্যগুলিতে ডকুমেন্টেশন দেখুন।
অটো কমপ্লিট অপ্টিমাইজেশন রাখুন
এই বিভাগটি আপনাকে স্থানটির সর্বাধিক স্বতঃস্ফূর্ত পরিষেবা তৈরি করতে সহায়তা করার জন্য সেরা অনুশীলনগুলি বর্ণনা করে।
এখানে কিছু সাধারণ নির্দেশিকা রয়েছে:
- একটি কার্যকরী ব্যবহারকারী ইন্টারফেস বিকাশের দ্রুততম উপায় হ'ল মানচিত্র জাভাস্ক্রিপ্ট এপিআই অটো কমপ্লিট উইজেট ব্যবহার করা, অ্যান্ড্রয়েড অটো কমপ্লিট উইজেটের জন্য এসডিকে রাখে, বা আইওএস অটো কমপ্লিট ইউআই নিয়ন্ত্রণের জন্য এসডিকে রাখে
- শুরু থেকেই প্রয়োজনীয় স্থানের স্বতঃপ্রবাহের ডেটা ক্ষেত্রগুলির একটি বোঝার বিকাশ করুন।
- অবস্থান বায়াসিং এবং অবস্থানের সীমাবদ্ধতা ক্ষেত্রগুলি al চ্ছিক তবে স্বতঃপূর্বক পারফরম্যান্সে উল্লেখযোগ্য প্রভাব ফেলতে পারে।
- যদি এপিআই কোনও ত্রুটি ফিরিয়ে দেয় তবে আপনার অ্যাপ্লিকেশনটি কৃপণভাবে হ্রাস পেয়েছে তা নিশ্চিত করতে ত্রুটি হ্যান্ডলিং ব্যবহার করুন।
- কোনও নির্বাচন না থাকলে আপনার অ্যাপ্লিকেশনটি পরিচালনা করে তা নিশ্চিত করুন এবং ব্যবহারকারীদের চালিয়ে যাওয়ার উপায় সরবরাহ করে।
ব্যয় অপ্টিমাইজেশন সেরা অনুশীলন
বেসিক ব্যয় অপ্টিমাইজেশন
জায়গাটি স্বতঃপূরিত পরিষেবাটি ব্যবহারের ব্যয়টি অনুকূল করতে, ক্ষেত্রের মুখোশগুলি স্থানের বিশদগুলিতে ব্যবহার করুন এবং আপনার প্রয়োজনীয় স্থানটি কেবলমাত্র ডেটা ক্ষেত্রগুলি ফিরিয়ে দিতে স্বতঃপূর্বক উইজেটগুলি রাখুন।
উন্নত ব্যয় অপ্টিমাইজেশন
অনুরোধের মূল্য নির্ধারণের জন্য এবং স্থানের বিশদগুলির পরিবর্তে নির্বাচিত স্থান সম্পর্কে জিওকোডিং এপিআই ফলাফলের জন্য অনুরোধের জন্য অনুরোধের জন্য প্লেস অটো কমপ্লিটের প্রোগ্রাম্যাটিক বাস্তবায়ন বিবেচনা করুন। জিওকোডিং এপিআইয়ের সাথে জুটিবদ্ধ অনুরোধের মূল্য প্রতি সেশন (সেশন-ভিত্তিক) মূল্য নির্ধারণের চেয়ে বেশি ব্যয়বহুল যদি নিম্নলিখিত উভয় শর্ত পূরণ হয়:
- আপনার যদি কেবল ব্যবহারকারীর নির্বাচিত জায়গার অক্ষাংশ/দ্রাঘিমাংশ বা ঠিকানা প্রয়োজন হয় তবে জিওকোডিং এপিআই এই তথ্যটি কোনও জায়গার বিশদ কলের চেয়ে কমের জন্য সরবরাহ করে।
- যদি ব্যবহারকারীরা গড়ে চারটি স্বতঃপূরী পূর্বাভাসের অনুরোধ বা তার চেয়ে কম সময়ে একটি স্বতঃ সম্পূর্ণ ভবিষ্যদ্বাণী নির্বাচন করেন তবে প্রতি অনুরোধের মূল্য নির্ধারণের জন্য সেশন মূল্য নির্ধারণের চেয়ে বেশি ব্যয়বহুল হতে পারে।
আপনার আবেদনের জন্য নির্বাচিত পূর্বাভাসের ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশ ব্যতীত অন্য কোনও তথ্যের প্রয়োজন?
স্থানের বিশদ সহ সেশন-ভিত্তিক স্থানটি স্বয়ংক্রিয় সম্পূর্ণ ব্যবহার করুন।
যেহেতু আপনার অ্যাপ্লিকেশনটির জন্য জায়গার নাম, ব্যবসায়ের স্থিতি বা খোলার সময়গুলির মতো স্থানের বিশদ প্রয়োজন, তাই আপনার স্থানের অটো কমপ্লিটের বাস্তবায়নের একটি সেশন টোকেন ব্যবহার করা উচিত ( প্রোগ্রামিকভাবে বা জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড , বা আইওএস উইজেটগুলিতে নির্মিত) প্রতি সেশনের মোট $ 0.017 ডলার ব্যয় করার জন্য ডেটা স্কুগুলির উপর নির্ভর করে ডেটা ফিল্ডগুলির উপর নির্ভর করে। 1
উইজেট বাস্তবায়ন
সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড বা আইওএস উইজেটগুলিতে নির্মিত হয়। এর মধ্যে নির্বাচিত পূর্বাভাসে জায়গা স্বতঃপূর্ব অনুরোধ এবং স্থানের বিশদ অনুরোধ উভয়ই অন্তর্ভুক্ত রয়েছে। আপনি কেবলমাত্র আপনার প্রয়োজনীয় স্থান ডেটা ক্ষেত্রগুলির জন্য অনুরোধ করছেন তা নিশ্চিত করার জন্য fields
প্যারামিটারটি নির্দিষ্ট করে নিশ্চিত করুন।
প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার স্থানের স্বতঃপ্রকাশের অনুরোধগুলির সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত পূর্বাভাস সম্পর্কে স্থানের বিশদ অনুরোধ করার সময়, নিম্নলিখিত পরামিতিগুলি অন্তর্ভুক্ত করুন:
- জায়গাটি স্বতঃপূরী প্রতিক্রিয়া থেকে স্থান আইডি
- সেশন টোকেনটি জায়গায় স্বতঃপ্রকাশের অনুরোধে ব্যবহৃত হয়েছে
-
fields
প্যারামিটার আপনার প্রয়োজনীয় স্থান ডেটা ক্ষেত্রগুলি নির্দিষ্ট করে
জিওকোডিং এপিআই আপনার স্থানের স্বতঃপূর্বক ব্যবহারের পারফরম্যান্সের উপর নির্ভর করে আপনার আবেদনের জন্য স্থানের বিশদগুলির চেয়ে আরও বেশি সাশ্রয়ী বিকল্প হতে পারে। ব্যবহারকারীরা কী প্রবেশ করছেন, কোথায় অ্যাপ্লিকেশনটি ব্যবহার করা হচ্ছে এবং পারফরম্যান্স অপ্টিমাইজেশনের সেরা অনুশীলনগুলি প্রয়োগ করা হয়েছে কিনা তার উপর নির্ভর করে প্রতিটি অ্যাপ্লিকেশনটির স্বতঃপূরী দক্ষতা পরিবর্তিত হয়।
নিম্নলিখিত প্রশ্নের উত্তর দেওয়ার জন্য, আপনার অ্যাপ্লিকেশনটিতে কোনও স্থান স্বতঃপ্রকাশের পূর্বাভাস নির্বাচন করার আগে একজন ব্যবহারকারী গড়ে কতগুলি অক্ষর প্রকারের বিশ্লেষণ করুন।
আপনার ব্যবহারকারীরা কি গড়ে চার বা তার চেয়ে কম অনুরোধে কোনও স্থান স্বতঃপূরী ভবিষ্যদ্বাণী নির্বাচন করেন?
সেশন টোকেন ছাড়াই প্লেসটি স্বতঃপ্রকাশের প্রোগ্রামে প্রয়োগ করুন এবং নির্বাচিত স্থানের পূর্বাভাসে জিওকোডিং এপিআইকে কল করুন।
জিওকোডিং এপিআই অনুরোধ অনুযায়ী $ 0.005 এর জন্য ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্ক সরবরাহ করে। চারটি স্থান স্বতঃপূরিত করা - প্রতি অনুরোধের অনুরোধগুলির জন্য $ 0.01132 খরচ হয় তাই নির্বাচিত স্থানের পূর্বাভাস সম্পর্কে চারটি অনুরোধের মোট ব্যয় এবং একটি জিওকোডিং এপিআই কল হবে $ 0.01632 যা প্রতি সেশনে প্রতি সেশনের স্বতঃপ্রতিষ্ঠিত দামের চেয়ে কম। 1
আপনার ব্যবহারকারীদের আরও কম অক্ষরে যে ভবিষ্যদ্বাণী খুঁজছেন তা পেতে সহায়তা করার জন্য পারফরম্যান্স সেরা অনুশীলনগুলি নিয়োগের বিষয়টি বিবেচনা করুন।
স্থানের বিশদ সহ সেশন-ভিত্তিক স্থানটি স্বয়ংক্রিয় সম্পূর্ণ ব্যবহার করুন।
যেহেতু কোনও ব্যবহারকারী কোনও জায়গা অটো কমপ্লিট ভবিষ্যদ্বাণী নির্বাচন করার আগে আপনি যে অনুরোধগুলি প্রত্যাশা করছেন তার গড় সংখ্যাটি প্রতি সেশনের মূল্য নির্ধারণের ব্যয়কে ছাড়িয়ে গেছে, তাই আপনার স্থানের স্বতঃপথে বাস্তবায়নের জন্য স্থানের স্বতঃপূরণ অনুরোধগুলি এবং সম্পর্কিত স্থানের বিশদ বিবরণ অনুরোধের জন্য প্রতি সেশনে মোট $ 0.017 ডলার ব্যবহার করা উচিত। 1
উইজেট বাস্তবায়ন
সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড বা আইওএস উইজেটগুলিতে নির্মিত হয়। এর মধ্যে নির্বাচিত পূর্বাভাসে জায়গা স্বতঃপূর্ব অনুরোধ এবং স্থানের বিশদ অনুরোধ উভয়ই অন্তর্ভুক্ত রয়েছে। আপনি কেবল বেসিক ডেটা ক্ষেত্রগুলির জন্য অনুরোধ করছেন তা নিশ্চিত করার জন্য fields
প্যারামিটারটি নির্দিষ্ট করে নিশ্চিত করুন।
প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার স্থানের স্বতঃপ্রকাশের অনুরোধগুলির সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত পূর্বাভাস সম্পর্কে স্থানের বিশদ অনুরোধ করার সময়, নিম্নলিখিত পরামিতিগুলি অন্তর্ভুক্ত করুন:
- জায়গাটি স্বতঃপূরী প্রতিক্রিয়া থেকে স্থান আইডি
- সেশন টোকেনটি জায়গায় স্বতঃপ্রকাশের অনুরোধে ব্যবহৃত হয়েছে
-
fields
প্যারামিটারগুলি ঠিকানা এবং জ্যামিতির মতো বেসিক ডেটা ক্ষেত্রগুলি নির্দিষ্ট করে
স্থানের স্বতঃ সম্পূর্ণ অনুরোধগুলি বিলম্ব করার বিষয়টি বিবেচনা করুন
ব্যবহারকারী প্রথম তিন বা চারটি অক্ষরে টাইপ না করা পর্যন্ত আপনি কোনও জায়গা স্বতঃপূরী অনুরোধ বিলম্বিত করার মতো কৌশলগুলি নিয়োগ করতে পারেন যাতে আপনার অ্যাপ্লিকেশনটি কম অনুরোধ করে। উদাহরণস্বরূপ, ব্যবহারকারী তৃতীয় চরিত্রটি টাইপ করার পরে প্রতিটি চরিত্রের জন্য স্থান স্বতঃপ্রকাশের অনুরোধগুলি তৈরি করার অর্থ হ'ল যদি ব্যবহারকারী সাতটি অক্ষর টাইপ করেন তবে আপনি একটি পূর্বাভাস নির্বাচন করেন যার জন্য আপনি একটি জিওকোডিং এপিআই অনুরোধ করেন, মোট ব্যয় হবে $ 0.01632 (4 * $ 0.00283 প্রতি অনুরোধ + $ 0.005 জিওকোডিং)। 1
যদি বিলম্বিত অনুরোধগুলি আপনার গড় প্রোগ্রামেটিক অনুরোধটি চারটির নীচে পেতে পারে তবে আপনি জিওকোডিং এপিআই বাস্তবায়নের সাথে পারফরম্যান্ট প্লেসটি স্বতঃস্ফূর্ততার জন্য গাইডেন্সটি অনুসরণ করতে পারেন। নোট করুন যে বিলম্বিত অনুরোধগুলি ব্যবহারকারীর দ্বারা বিলম্ব হিসাবে বিবেচিত হতে পারে যারা প্রতিটি নতুন কীস্ট্রোকের সাথে ভবিষ্যদ্বাণীগুলি দেখতে পারে বলে আশা করে।
আপনার ব্যবহারকারীদের কম অক্ষরে যে ভবিষ্যদ্বাণী খুঁজছেন তা পেতে সহায়তা করার জন্য পারফরম্যান্স সেরা অনুশীলনগুলি নিয়োগের বিষয়টি বিবেচনা করুন।
এখানে তালিকাভুক্ত ব্যয় মার্কিন ডলারে রয়েছে। সম্পূর্ণ মূল্যের তথ্যের জন্য দয়া করে গুগল ম্যাপস প্ল্যাটফর্ম বিলিং পৃষ্ঠাটি দেখুন।
কর্মক্ষমতা সেরা অনুশীলন
নিম্নলিখিত নির্দেশিকাগুলি স্থান স্বতঃপথে পারফরম্যান্সকে অনুকূল করার উপায়গুলি বর্ণনা করে:
- দেশের সীমাবদ্ধতা, অবস্থানের পক্ষপাতিত্ব এবং (প্রোগ্রাম্যাটিক বাস্তবায়নের জন্য) আপনার জায়গায় স্বতঃপূর্বক বাস্তবায়নে ভাষা পছন্দ যুক্ত করুন। উইজেটগুলির সাথে ভাষার পছন্দগুলির প্রয়োজন নেই যেহেতু তারা ব্যবহারকারীর ব্রাউজার বা মোবাইল ডিভাইস থেকে ভাষার পছন্দগুলি বেছে নেয়।
- যদি প্লেস অটো কমপ্লিট কোনও মানচিত্রের সাথে থাকে তবে আপনি মানচিত্রের ভিউপোর্টের মাধ্যমে অবস্থানকে পক্ষপাত করতে পারেন।
- এমন পরিস্থিতিতে যখন কোনও ব্যবহারকারী স্বতঃপূরী ভবিষ্যদ্বাণীগুলির মধ্যে একটি বেছে নেন না, সাধারণত কারণ এই ভবিষ্যদ্বাণীগুলির কোনওটিই কাঙ্ক্ষিত ফলাফল-ঠিকানা নয়, আপনি আরও প্রাসঙ্গিক ফলাফল পাওয়ার চেষ্টা করার জন্য মূল ব্যবহারকারী ইনপুটটি পুনরায় ব্যবহার করতে পারেন:
- আপনি যদি আশা করেন যে ব্যবহারকারী কেবলমাত্র ঠিকানা তথ্য প্রবেশ করবে, তবে জিওকোডিং এপিআই -তে একটি কলটিতে মূল ব্যবহারকারী ইনপুটটি পুনরায় ব্যবহার করুন।
- আপনি যদি আশা করেন যে ব্যবহারকারী নাম বা ঠিকানা অনুসারে কোনও নির্দিষ্ট জায়গার জন্য ক্যোয়ারীগুলিতে প্রবেশ করবেন তবে একটি সন্ধান স্থানের অনুরোধটি ব্যবহার করুন। যদি ফলাফলগুলি কেবলমাত্র একটি নির্দিষ্ট অঞ্চলে প্রত্যাশিত হয় তবে লোকেশন বায়াসিং ব্যবহার করুন।
- ব্যবহারকারীরা সাবপ্রেম ঠিকানাগুলি ইনপুট করা, যেমন কোনও বিল্ডিংয়ের মধ্যে নির্দিষ্ট ইউনিট বা অ্যাপার্টমেন্টগুলির ঠিকানা। উদাহরণস্বরূপ, চেক ঠিকানা "স্ট্রুপইনিকহো 3191/17, প্রাহা" জায়গায় স্বতঃপ্রবাহে একটি আংশিক পূর্বাভাস দেয়।
- ব্যবহারকারীরা নিউইয়র্ক সিটির "23-30 29 তম এসটি, কুইন্স" বা হাওয়াইয়ের কাউই দ্বীপে "47-380 কামহামেহা হুই, কেনোহে" এর মতো রোড-সেগমেন্টের উপসর্গগুলির সাথে ঠিকানাগুলি ইনপুট করছেন।
সমস্যা সমাধান
যদিও বিভিন্ন ধরণের ত্রুটি দেখা দিতে পারে, তবে আপনার অ্যাপ্লিকেশনটির বেশিরভাগ ত্রুটিগুলি সম্ভবত কনফিগারেশন ত্রুটির কারণে ঘটে (উদাহরণস্বরূপ, ভুল এপিআই কীটি ব্যবহার করা হয়েছিল, বা এপিআই কীটি ভুলভাবে কনফিগার করা হয়েছিল), বা কোটা ত্রুটিগুলি (আপনার অ্যাপ্লিকেশনটি এর কোটা ছাড়িয়ে গেছে)। কোটা সম্পর্কে আরও তথ্যের জন্য ব্যবহারের সীমা দেখুন।
অটো কমপ্লিট নিয়ন্ত্রণগুলি ব্যবহারে ঘটে যাওয়া ত্রুটিগুলি onActivityResult()
কলব্যাকে ফিরে আসে। ফলাফলের জন্য স্থিতি বার্তা পেতে Autocomplete.getStatus()
কল করুন।