অটোকমপ্লিট (নতুন) একটি টেক্সট সার্চ স্ট্রিং এবং সার্চ এলাকা নিয়ন্ত্রণকারী ভৌগোলিক সীমানা সম্বলিত অনুরোধের জবাবে স্থানের পূর্বাভাস প্রদান করে। অটোকমপ্লিট ইনপুটের সম্পূর্ণ শব্দ এবং সাবস্ট্রিং মিলিয়ে স্থানের নাম, ঠিকানা এবং প্লাস কোড শনাক্ত করতে পারে। আপনার অ্যাপ্লিকেশনটি ব্যবহারকারীর টাইপ করার সাথে সাথেই কোয়েরি পাঠাতে পারে, যা তাৎক্ষণিকভাবে স্থান এবং কোয়েরির পূর্বাভাস প্রদান করে।
উদাহরণস্বরূপ, আপনি অটোকমপ্লিটকে ইনপুট হিসেবে একটি স্ট্রিং ব্যবহার করে কল করলেন, যাতে ব্যবহারকারীর আংশিক ইনপুট হিসেবে "Sicilian piz" লেখা আছে এবং সার্চ এলাকাটি সান ফ্রান্সিসকো, CA-তে সীমাবদ্ধ রাখা হয়েছে। এরপর রেসপন্সে সার্চ স্ট্রিং এবং সার্চ এলাকার সাথে মিলে যাওয়া সম্ভাব্য স্থানগুলোর একটি তালিকা থাকে, যেমন "Sicilian Pizza Kitchen" নামের রেস্তোরাঁটি। ফেরত আসা সম্ভাব্য স্থানগুলোর তালিকা ব্যবহারকারীকে তার পছন্দের জায়গাটি বেছে নিতে সাহায্য করার জন্য দেখানো হয়। ফেরত আসা সম্ভাব্য স্থানগুলোর যেকোনোটি সম্পর্কে আরও তথ্য পেতে আপনি একটি Place Details (New) রিকোয়েস্ট করতে পারেন।
আপনি দুটি প্রধান উপায়ে আপনার অ্যাপে অটোকমপ্লিট (নতুন) কার্যকারিতা যুক্ত করতে পারেন:
- Place Autocomplete উইজেটটি যোগ করুন : এটি
PlaceAutocompleteক্লাসের মাধ্যমে একটি ব্যবহারযোগ্য সার্চ অটোকমপ্লিট অভিজ্ঞতা প্রদান করে, যা ব্যবহারকারীর টাইপ করার সাথে সাথে পূর্বাভাস প্রদর্শন করে। - প্রোগ্রামের মাধ্যমে স্থানের পূর্বাভাস পান : পূর্বাভাস সংগ্রহ করতে এবং একটি কাস্টম ইউজার ইন্টারফেসে তা প্রদর্শন করতে সরাসরি API কল করুন।
স্থান স্বয়ংসম্পূর্ণ উইজেট যোগ করুন
একটি সামঞ্জস্যপূর্ণ স্থান স্বয়ংসম্পূর্ণ অভিজ্ঞতা আরও সহজে প্রদান করার জন্য, আপনি আপনার অ্যাপে প্লেস অটোকমপ্লিট উইজেটটি যোগ করতে পারেন। এই উইজেটটি একটি বিশেষ, পূর্ণ-স্ক্রিন ইন্টারফেস প্রদান করে যা ব্যবহারকারীর ইনপুট গ্রহণ করে এবং ব্যবহারকারীকে স্থানের পূর্বাভাসগুলো প্রদর্শন করার পাশাপাশি অ্যাপে AutocompletePrediction অবজেক্ট ফেরত পাঠায়। এরপর আপনি যেকোনো স্থানের পূর্বাভাস সম্পর্কে অতিরিক্ত তথ্য পেতে একটি প্লেস ডিটেইলস (নিউ) অনুরোধ করতে পারেন।

প্রোগ্রাম্যাটিকভাবে স্থানের পূর্বাভাস পাওয়ার মতোই, প্লেস অটোকমপ্লিট উইজেটটি আপনাকে বিলিংয়ের উদ্দেশ্যে অটোকমপ্লিট অনুরোধগুলোকে সেশনে একত্রিত করতে সেশন টোকেন ব্যবহার করার সুযোগ দেয়। উইজেটটির জন্য ইন্টেন্ট তৈরি করার সময় আপনি setAutocompleteSessionToken() কল করে একটি সেশন টোকেন পাস করতে পারেন। আপনি যদি কোনো সেশন টোকেন প্রদান না করেন, তাহলে উইজেটটি আপনার জন্য একটি তৈরি করে দেবে, যা আপনি getSessionTokenFromIntent() কল করে অ্যাক্সেস করতে পারবেন। সেশন টোকেন ব্যবহার সম্পর্কে আরও তথ্যের জন্য, ‘সেশন টোকেন সম্পর্কে’ দেখুন।
আপনার অ্যাপে প্লেস অটোকমপ্লিট উইজেটটি যোগ করতে:
(ঐচ্ছিক) একটি সেশন টোকেন নির্ধারণ করুন। আপনি যদি সেশন টোকেন প্রদান না করেন, তাহলে উইজেটটি আপনার জন্য একটি তৈরি করে দেবে।
পছন্দসই প্যারামিটার এবং আপনার সেশন টোকেন দিয়ে একটি
autocompleteIntentনির্ধারণ করুন।StartActivityForResultজন্য একটিActivityResultLauncherসংজ্ঞায়িত করুন। এই লঞ্চারটি অটোকমপ্লিট অ্যাক্টিভিটি থেকে প্রাপ্ত ফলাফল পরিচালনা করবে।ActivityResultLauncherএর কলব্যাকে ফলাফলটি পরিচালনা করুন। এর মধ্যে রয়েছেAutocompletePredictionএবংAutocompleteSessionTokenবের করা (যদি আপনি নিজেরগুলো না দিয়ে থাকেন), ত্রুটিগুলো সামলানো, এবং ঐচ্ছিকভাবে কোনো স্থান সম্পর্কে অতিরিক্ত বিবরণ পেতে একটিfetchPlace()অনুরোধ পাঠানো।placeAutocompleteActivityResultLauncherব্যবহার করে ইন্টেন্টটি চালু করুন।
নিম্নলিখিত নমুনাগুলিতে দেখানো হয়েছে কিভাবে কোটলিন এবং জাভা উভয় ব্যবহার করে প্লেস অটোকমপ্লিট উইজেট যোগ করতে হয়:
কোটলিন
// Provide the API key that has enabled "Places API (New)" in the Google Cloud Console. Places.initializeWithNewPlacesApiEnabled(/* Context= */ context, /* API Key= */ key) // Optional, create a session token for Autocomplete request and the followup FetchPlace request. val sessionToken: AutocompleteSessionToken = AutocompleteSessionToken.newInstance() val autocompleteIntent: Intent = PlaceAutocomplete.createIntent(this) { // ... provide input params for origin, countries, types filter ... setAutocompleteSessionToken(sessionToken) } val placeAutocompleteActivityResultLauncher: ActivityResultLauncher<Intent> = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> val intent = result.data if (intent != null && result.resultCode == PlaceAutocompleteActivity.RESULT_OK) { // get prediction object val prediction: AutocompletePrediction? = PlaceAutocomplete.getPredictionFromIntent(intent!!) // get session token val sessionToken: AutocompleteSessionToken? = PlaceAutocomplete.getSessionTokenFromIntent(intent!!) // create PlacesClient to make FetchPlace request (optional) val placesClient: PlacesClient = Places.createClient(this) val response = placesClient.awaitFetchPlace(prediction.placeId, Field.DISPLAY_NAME) { sessionToken = sessionToken // optional } } } // Launch Activity placeAutocompleteActivityResultLauncher.launch(autocompleteIntent)
জাভা
// Provide the API key that has enabled "Places API (New)" in the Google Cloud Console. Places.initializeWithNewPlacesApiEnabled(/* Context= */ context, /* API Key= */ key); // Optional, create a session token for Autocomplete request and the followup FetchPlace request AutocompleteSessionToken sessionToken = AutocompleteSessionToken.newInstance(); Intent autocompleteIntent = new PlaceAutocomplete.IntentBuilder() // ... set input params for origin, countries, types filter ... .setSessionToken(sessionToken) // optional .build(this); ActivityResultLauncher<Intent> placeAutocompleteActivityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { Intent intent = result.getData(); if (result.getResultCode() == PlaceAutocompleteActivity.RESULT_OK) { // get prediction object AutocompletePrediction prediction = PlaceAutocomplete.getPredictionFromIntent( Preconditions.checkNotNull(intent)); // get session token AutocompleteSessionToken sessionToken = PlaceAutocomplete.getSessionTokenFromIntent( Preconditions.checkNotNull(intent)); // create PlacesClient to make FetchPlace request (optional) PlacesClient placesClient = Places.createClient(this); FetchPlaceRequest request = FetchPlaceRequest.builder(prediction.getPlaceId(), Arrays.asList(Field.DISPLAY_NAME)) .setSessionToken(sessionToken).build(); Task<FetchPlaceResponse> task = placesClient.fetchPlace(request); } } } ); // Launch Activity placeAutocompleteActivityResultLauncher.launch(autocompleteIntent);
থিমটি কাস্টমাইজ করুন
একটি অটোকমপ্লিট এক্সপেরিয়েন্স ইনস্ট্যানশিয়েট করার সময়, আপনি এমন একটি থিম নির্দিষ্ট করতে পারেন যা যেকোনো ডিফল্ট স্টাইল অ্যাট্রিবিউটকে ওভাররাইড করে। আপনি আপনার প্লেস অটোকমপ্লিট কম্পোনেন্টের রং, টাইপোগ্রাফি, স্পেসিং, বর্ডার এবং কর্নার কাস্টমাইজ করতে পারেন। ডিফল্ট থিম হলো PlacesMaterialTheme । যে থিম অ্যাট্রিবিউটগুলো ওভাররাইড করা হয় না, সেগুলো ডিফল্ট স্টাইল ব্যবহার করে।
আপনি …/res/values/themes.xml ফাইলে থিম ওভাররাইড নির্ধারণ করতে পারেন। উদাহরণস্বরূপ:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="BrandedTheme" parent="PlacesMaterialTheme"> <!-- Color tokens. --> <item name="placesColorOnNeutralContainer">#5300e8</item> <item name="placesColorOnNeutralContainerVariant">#ee6002</item> ... <!-- Typography tokens. --> <item name="placesTextAppearanceTitleLarge">@style/PlacesTextAppearance</item> <item name="placesTextAppearanceBodyMedium">@style/PlacesTextAppearance</item> ... <!-- Spacing tokens. --> <item name="placesSpacingSmall">6dp</item> <item name="placesSpacingMedium">12dp</item> ... <!-- Attribution tokens. --> <item name="placesColorAttributionLightTheme">white</item> <item name="placesColorAttributionDarkTheme">black</item> </style> </resources>
এরপর আপনি setAutocompleteUiCustomization কল করে ওভাররাইড স্টাইলগুলো রেফারেন্স করতে পারেন:
ActivityResultLauncher<Intent> placeAutocompleteActivityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { Intent intent = result.getData(); if (intent != null) { AutocompletePrediction prediction = PlaceAutocomplete.getPredictionFromIntent(intent); AutocompleteSessionToken sessionToken = PlaceAutocomplete.getSessionTokenFromIntent(intent); Status status = PlaceAutocomplete.getResultStatusFromIntent(intent); ... } } } ); Intent placeAutocompleteIntent = new PlaceAutocomplete.IntentBuilder() .setInitialQuery("INSERT_QUERY_TEXT") .setOrigin(new LatLng(10.0, 10.0)) ... .setAutocompleteUiCustomization( AutocompleteUiCustomization.builder() .listItemIcon(AutocompleteUiIcon.noIcon()) .listDensity(AutocompleteListDensity.MULTI_LINE) .theme(R.style.BrandedTheme) .build()) .build(this); placeAutocompleteActivityResultLauncher.launch(placeAutocompleteIntent);
প্রোগ্রামের মাধ্যমে স্থানের পূর্বাভাস পান
আপনার অ্যাপ একটি FindAutocompletePredictionsRequest অবজেক্ট পাস করে PlacesClient.findAutocompletePredictions() কল করার মাধ্যমে অটোকমপ্লিট এপিআই থেকে সম্ভাব্য স্থানের নাম এবং/অথবা ঠিকানার একটি তালিকা পেতে পারে। নিচের উদাহরণটিতে PlacesClient.findAutocompletePredictions() -এর একটি সম্পূর্ণ কল দেখানো হয়েছে।
Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();
LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);
final FindAutocompletePredictionsRequest autocompletePlacesRequest =
FindAutocompletePredictionsRequest.builder()
.setQuery("Sicilian piz")
.setRegionCode("ES")
.setLocationRestriction(circle)
.build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
.addOnSuccessListener(
(response) -> {
List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
}
).addOnFailureListener(
exception -> {
Log.e(TAG, "some exception happened" + exception.getMessage());
})
);স্বয়ংক্রিয় সম্পূর্ণ (নতুন) প্রতিক্রিয়া
এপিআইটি একটি Task মধ্যে FindAutocompletePredictionsResponse রিটার্ন করে। FindAutocompletePredictionsResponse টিতে পূর্বাভাসিত স্থানগুলির প্রতিনিধিত্বকারী সর্বোচ্চ পাঁচটি AutocompletePrediction অবজেক্টের একটি তালিকা থাকে। যদি কোয়েরি এবং ফিল্টার শর্তের সাথে সঙ্গতিপূর্ণ কোনো পরিচিত স্থান না থাকে, তাহলে তালিকাটি খালি থাকতে পারে।
প্রতিটি পূর্বাভাসিত স্থানের জন্য, আপনি স্থানের বিবরণ পুনরুদ্ধার করতে নিম্নলিখিত পদ্ধতিগুলি কল করতে পারেন:
-
getFullText(CharacterStyle)একটি স্থানের বিবরণের সম্পূর্ণ টেক্সট ফেরত দেয়। এটি মূল এবং দ্বিতীয় টেক্সটের একটি সংমিশ্রণ। উদাহরণ: " Eiffel Tower, Avenue Anatole France, Paris, France "। এছাড়াও, এই মেথডটি আপনাকেCharacterStyleব্যবহার করে আপনার পছন্দের স্টাইল দিয়ে, সার্চের সাথে মিলে যাওয়া বিবরণের অংশগুলোকে হাইলাইট করার সুযোগ দেয়।CharacterStyleপ্যারামিটারটি ঐচ্ছিক। যদি আপনার কোনো হাইলাইটিংয়ের প্রয়োজন না হয়, তবে এটিকে null সেট করুন। -
getPrimaryText(CharacterStyle)কোনো স্থানের মূল বর্ণনা প্রদান করে। এটি সাধারণত স্থানটির নাম হয়ে থাকে। উদাহরণ: " আইফেল টাওয়ার ", এবং " ১২৩ পিট স্ট্রিট "। -
getSecondaryText(CharacterStyle)কোনো স্থানের বিবরণের সহায়ক লেখাটি ফেরত দেয়। উদাহরণস্বরূপ, অটোকমপ্লিট প্রেডিকশন দেখানোর সময় দ্বিতীয় লাইন হিসেবে এটি বেশ উপযোগী। উদাহরণ: " Avenue Anatole France, Paris, France ", এবং " Sydney, New South Wales "। -
getPlaceId()ফাংশনটি পূর্বাভাসিত স্থানের প্লেস আইডি ফেরত দেয়। প্লেস আইডি হলো একটি টেক্সচুয়াল আইডেন্টিফায়ার যা একটি স্থানকে অনন্যভাবে শনাক্ত করে, এবং যা ব্যবহার করে আপনি পরবর্তীতেPlaceঅবজেক্টটি আবার পুনরুদ্ধার করতে পারেন। অটোকমপ্লিটে প্লেস আইডি সম্পর্কে আরও তথ্যের জন্য, প্লেস ডিটেইলস (নতুন) দেখুন। প্লেস আইডি সম্পর্কে সাধারণ তথ্যের জন্য, প্লেস আইডি ওভারভিউ দেখুন। -
getTypes()এই স্থানের সাথে সংশ্লিষ্ট স্থানের প্রকারগুলোর তালিকা ফেরত দেয়। -
getDistanceMeters()এই স্থান এবং অনুরোধে উল্লেখিত মূলবিন্দুর মধ্যেকার সরলরৈখিক দূরত্ব মিটারে ফেরত দেয়।
প্রয়োজনীয় প্যারামিটার
প্রশ্ন
যে টেক্সট স্ট্রিংটির উপর অনুসন্ধান করা হবে। সম্পূর্ণ শব্দ ও উপ-স্ট্রিং, স্থানের নাম, ঠিকানা এবং প্লাস কোড উল্লেখ করুন। অটোকমপ্লিট (নতুন) পরিষেবাটি এই স্ট্রিংটির উপর ভিত্তি করে সম্ভাব্য মিলগুলো ফেরত দেয় এবং ফলাফলগুলোকে তাদের অনুভূত প্রাসঙ্গিকতা অনুসারে সাজায়।
কোয়েরি প্যারামিটার সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setQuery()মেথডটি কল করুন।
ঐচ্ছিক পরামিতি
প্রাথমিক প্রকার
রেসপন্সে ফেরত আসা স্থানগুলো ফিল্টার করার জন্য টাইপস টেবিল A বা টেবিল B থেকে সর্বোচ্চ পাঁচটি টাইপ ভ্যালুর একটি তালিকা ব্যবহার করা হয়। রেসপন্সে অন্তর্ভুক্ত হওয়ার জন্য একটি স্থানকে অবশ্যই নির্দিষ্ট প্রাইমারি টাইপ ভ্যালুগুলোর মধ্যে একটির সাথে মিলতে হবে।
একটি স্থানের সাথে টেবিল A বা টেবিল B থেকে শুধুমাত্র একটি প্রাথমিক ধরন যুক্ত থাকতে পারে। উদাহরণস্বরূপ, প্রাথমিক ধরনটি হতে পারে
"mexican_restaurant"বা"steak_house"।নিম্নলিখিত ক্ষেত্রে অনুরোধটি
INVALID_REQUESTত্রুটির সাথে প্রত্যাখ্যাত হয়:- পাঁচটিরও বেশি প্রকার নির্দিষ্ট করা হয়েছে।
- যেকোনো অচেনা প্রকার নির্দিষ্ট করা হয়।
প্রাথমিক টাইপস প্যারামিটার সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setTypesFilter()মেথডটি কল করুন।দেশগুলি
শুধুমাত্র নির্দিষ্ট দেশগুলোর তালিকা থেকে ফলাফল অন্তর্ভুক্ত করুন, যা সর্বোচ্চ ১৫টি ccTLD ("টপ-লেভেল ডোমেইন") দুই-অক্ষরের মানের একটি তালিকা হিসাবে নির্দিষ্ট করা হয়েছে। যদি এটি বাদ দেওয়া হয়, তাহলে প্রতিক্রিয়ার উপর কোনো বিধিনিষেধ প্রয়োগ করা হবে না। উদাহরণস্বরূপ, অঞ্চলগুলিকে জার্মানি এবং ফ্রান্সে সীমাবদ্ধ করতে:
আপনি যদি
locationRestrictionএবংincludedRegionCodesউভয়ই নির্দিষ্ট করেন, তাহলে ফলাফল দুটি সেটিংয়ের ছেদবিন্দুতে অবস্থিত হবে।countries প্যারামিটারটি সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setCountries()মেথডটি কল করুন।ইনপুট অফসেট
শূন্য-ভিত্তিক ইউনিকোড ক্যারেক্টার অফসেট, যা কোয়েরিতে কার্সরের অবস্থান নির্দেশ করে। কার্সরের অবস্থান কী ধরনের প্রেডিকশন ফেরত আসবে তা প্রভাবিত করতে পারে। এটি খালি থাকলে, ডিফল্টভাবে কোয়েরির দৈর্ঘ্যের সমান হয়।
ইনপুট অফসেট প্যারামিটার সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setInputOffset()মেথডটি কল করুন।অবস্থানগত পক্ষপাত বা অবস্থানগত সীমাবদ্ধতা
অনুসন্ধানের এলাকা নির্ধারণ করতে আপনি লোকেশন বায়াস বা লোকেশন রেস্ট্রিকশন নির্দিষ্ট করতে পারেন, কিন্তু উভয়ই একসাথে নয়। লোকেশন রেস্ট্রিকশনকে এমন একটি অঞ্চল নির্দিষ্ট করা হিসেবে ভাবুন যার মধ্যে ফলাফল অবশ্যই থাকতে হবে, এবং লোকেশন বায়াসকে এমন একটি অঞ্চল নির্দিষ্ট করা হিসেবে ভাবুন যার কাছাকাছি ফলাফল অবশ্যই থাকতে হবে। মূল পার্থক্যটি হলো, লোকেশন বায়াস চালু থাকলে নির্দিষ্ট অঞ্চলের বাইরের ফলাফলও দেখানো হতে পারে।
অবস্থানগত পক্ষপাত
অনুসন্ধানের জন্য একটি এলাকা নির্দিষ্ট করে। এই অবস্থানটি একটি সীমাবদ্ধতা নয়, বরং একটি নির্দেশক হিসেবে কাজ করে, তাই নির্দিষ্ট এলাকার বাইরের ফলাফলও প্রদর্শিত হতে পারে।
লোকেশন বায়াস প্যারামিটার সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setLocationBias()মেথডটি কল করুন।অবস্থান সীমাবদ্ধতা
অনুসন্ধানের জন্য একটি এলাকা নির্দিষ্ট করে। নির্দিষ্ট এলাকার বাইরের ফলাফল দেখানো হয় না।
অবস্থান সীমাবদ্ধতার প্যারামিটার সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setLocationRestriction()মেথডটি কল করুন।
অবস্থান পক্ষপাত বা অবস্থান সীমাবদ্ধকরণ অঞ্চলটিকে একটি আয়তক্ষেত্রাকার ভিউপোর্ট বা একটি বৃত্ত হিসাবে নির্দিষ্ট করুন।
একটি বৃত্তকে তার কেন্দ্রবিন্দু এবং মিটারে পরিমাপ করা ব্যাসার্ধ দ্বারা সংজ্ঞায়িত করা হয়। ব্যাসার্ধটি অবশ্যই ০.০ থেকে ৫০০০০.০-এর মধ্যে হতে হবে। এর ডিফল্ট মান হলো ০.০। অবস্থান সীমাবদ্ধ করার জন্য, আপনাকে অবশ্যই ব্যাসার্ধের মান ০.০-এর চেয়ে বেশি নির্ধারণ করতে হবে। অন্যথায়, অনুরোধটি কোনো ফলাফল প্রদান করবে না।
একটি আয়তক্ষেত্র হলো একটি অক্ষাংশ-দ্রাঘিমাংশ ভিউপোর্ট, যা দুটি তির্যকভাবে বিপরীত
lowওhighবিন্দু দ্বারা উপস্থাপিত হয়। একটি ভিউপোর্টকে একটি বদ্ধ অঞ্চল হিসেবে বিবেচনা করা হয়, যার অর্থ এটি তার সীমানাকে অন্তর্ভুক্ত করে। অক্ষাংশের সীমা অবশ্যই -৯০ থেকে ৯০ ডিগ্রির মধ্যে এবং দ্রাঘিমাংশের সীমা অবশ্যই -১৮০ থেকে ১৮০ ডিগ্রির মধ্যে হতে হবে।- যদি
low=high, তাহলে ভিউপোর্টটি সেই একক বিন্দুটি নিয়ে গঠিত হয়। - যদি
low.longitude>high.longitude, তাহলে দ্রাঘিমাংশের পরিসরটি উল্টে যায় (ভিউপোর্টটি ১৮০ ডিগ্রি দ্রাঘিমা রেখা অতিক্রম করে)। - যদি
low.longitude= -180 ডিগ্রি এবংhigh.longitude= 180 ডিগ্রি হয়, তাহলে ভিউপোর্টে সমস্ত দ্রাঘিমাংশ অন্তর্ভুক্ত থাকবে। - যদি
low.longitude= 180 ডিগ্রি এবংhigh.longitude= -180 ডিগ্রি হয়, তাহলে দ্রাঘিমাংশের পরিসরটি খালি থাকে।
lowএবংhighউভয়ই অবশ্যই পূরণ করতে হবে এবং প্রদর্শিত বক্সটি খালি থাকতে পারবে না। একটি খালি ভিউপোর্টের ফলে ত্রুটি দেখা দেয়।- যদি
উৎপত্তি
যে মূলবিন্দু থেকে গন্তব্যে সরলরৈখিক দূরত্ব গণনা করা হবে (
getDistanceMeters()ব্যবহার করে এটি পাওয়া যায়)। এই মানটি বাদ দিলে, সরলরৈখিক দূরত্ব ফেরত দেওয়া হবে না। এটি অবশ্যই অক্ষাংশ এবং দ্রাঘিমাংশের স্থানাঙ্ক হিসাবে উল্লেখ করতে হবে:অরিজিন প্যারামিটার সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setOrigin()মেথডটি কল করুন।অঞ্চল কোড
ঠিকানার বিন্যাস সহ প্রতিক্রিয়াটি ফরম্যাট করতে ব্যবহৃত অঞ্চল কোডটি একটি ccTLD ("টপ-লেভেল ডোমেইন") দুই-অক্ষরের মান হিসাবে নির্দিষ্ট করা হয়। কিছু উল্লেখযোগ্য ব্যতিক্রম ছাড়া, বেশিরভাগ ccTLD কোড ISO 3166-1 কোডের অনুরূপ। উদাহরণস্বরূপ, যুক্তরাজ্যের ccTLD হলো "uk" (.co.uk) এবং এর ISO 3166-1 কোড হলো "gb" (যা প্রযুক্তিগতভাবে "দ্য ইউনাইটেড কিংডম অফ গ্রেট ব্রিটেন অ্যান্ড নর্দার্ন আয়ারল্যান্ড" সত্তাটিকে বোঝায়)।
আপনি যদি একটি অবৈধ অঞ্চল কোড উল্লেখ করেন, তাহলে API একটি
INVALID_ARGUMENTত্রুটি ফেরত দেয়। প্রযোজ্য আইন অনুসারে এই প্যারামিটারটি ফলাফলের উপর প্রভাব ফেলতে পারে।রিজিওন কোড প্যারামিটার সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setRegionCode()মেথডটি কল করুন।সেশন টোকেন
সেশন টোকেন হলো ব্যবহারকারী-সৃষ্ট স্ট্রিং যা অটোকমপ্লিট (নিউ) কলগুলোকে—উইজেটের মাধ্যমে করা কল এবং প্রোগ্রাম্যাটিক কল উভয়কেই—"সেশন" হিসেবে ট্র্যাক করে। বিলিংয়ের উদ্দেশ্যে, অটোকমপ্লিট ব্যবহারকারীর অটোকমপ্লিট সার্চের কোয়েরি এবং সিলেকশন পর্যায়গুলোকে একটি পৃথক সেশনে একত্রিত করতে সেশন টোকেন ব্যবহার করে। ব্যবহারকারী যখন একটি কোয়েরি টাইপ করা শুরু করেন, তখন সেশনটি শুরু হয় এবং যখন তিনি একটি স্থান নির্বাচন করেন, তখন তা শেষ হয়। প্রতিটি সেশনে একাধিক কোয়েরি থাকতে পারে, যার পরে একটি স্থান নির্বাচন করতে হয়। একটি সেশন শেষ হয়ে গেলে, টোকেনটি আর বৈধ থাকে না; আপনার অ্যাপকে প্রতিটি সেশনের জন্য একটি নতুন টোকেন তৈরি করতে হবে। আমরা সমস্ত প্রোগ্রাম্যাটিক অটোকমপ্লিট সেশনের জন্য সেশন টোকেন ব্যবহার করার পরামর্শ দিই (যখন আপনি একটি ফ্র্যাগমেন্ট এমবেড করেন, বা একটি ইন্টেন্ট ব্যবহার করে অটোকমপ্লিট চালু করেন, তখন এপিআই স্বয়ংক্রিয়ভাবে এর যত্ন নেয়)।
অটোকমপ্লিট প্রতিটি সেশন শনাক্ত করতে একটি
AutocompleteSessionTokenব্যবহার করে। আপনার অ্যাপের উচিত প্রতিটি নতুন সেশন শুরু করার সময় একটি নতুন সেশন টোকেন পাঠানো, এবং তারপর ব্যবহারকারীর নির্বাচিত স্থানের বিবরণ আনার জন্যfetchPlace()ফাংশনে পরবর্তী কলে সেই একই টোকেন ও একটি Place ID পাঠানো।সেশন টোকেন প্যারামিটার সেট করতে,
FindAutocompletePredictionsRequestঅবজেক্টটি তৈরি করার সময়setSessionToken()মেথডটি কল করুন।আরও তথ্যের জন্য, সেশন টোকেন দেখুন।
স্বয়ংক্রিয় সম্পূর্ণতা (নতুন) উদাহরণ
ব্যবহারের অবস্থান সীমাবদ্ধতা এবং অবস্থান পক্ষপাত
অটোকমপ্লিট (নতুন) ডিফল্টরূপে সার্চ এলাকা নিয়ন্ত্রণের জন্য আইপি বায়াসিং ব্যবহার করে। আইপি বায়াসিং চালু থাকলে, এপিআই ফলাফলকে প্রভাবিত করার জন্য ডিভাইসের আইপি অ্যাড্রেস ব্যবহার করে। আপনি ঐচ্ছিকভাবে সার্চ করার জন্য একটি এলাকা নির্দিষ্ট করতে লোকেশন রেস্ট্রিকশন অথবা লোকেশন বায়াস ব্যবহার করতে পারেন, কিন্তু উভয়ই একসাথে নয়।
অবস্থান সীমাবদ্ধতা অনুসন্ধানের জন্য এলাকা নির্দিষ্ট করে। নির্দিষ্ট এলাকার বাইরের ফলাফল ফেরত দেওয়া হয় না। নিম্নলিখিত উদাহরণটি সান ফ্রান্সিসকোকে কেন্দ্র করে ৫০০০-মিটার ব্যাসার্ধের একটি বৃত্তাকার অবস্থান সীমাবদ্ধতা ব্যবহার করে অনুরোধটিকে সীমাবদ্ধ করে:
Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();
LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);
final FindAutocompletePredictionsRequest autocompletePlacesRequest =
FindAutocompletePredictionsRequest.builder()
.setQuery("Amoeba")
.setLocationRestriction(circle)
.build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
.addOnSuccessListener(
(response) -> {
List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
}
).addOnFailureListener(
exception -> {
Log.e(TAG, "some exception happened" + exception.getMessage());
})
);লোকেশন বায়াসের ক্ষেত্রে, অবস্থানটি একটি বায়াস হিসেবে কাজ করে, যার অর্থ হলো নির্দিষ্ট এলাকার বাইরের ফলাফলসহ নির্দিষ্ট অবস্থানের আশেপাশের ফলাফলগুলোও ফেরত দেওয়া যেতে পারে। পরবর্তী উদাহরণটি লোকেশন বায়াস ব্যবহার করার জন্য পূর্ববর্তী অনুরোধটিকে পরিবর্তন করে:
Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();
LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);
final FindAutocompletePredictionsRequest autocompletePlacesRequest =
FindAutocompletePredictionsRequest.builder()
.setQuery("Amoeba")
.setLocationBias(circle)
.build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
.addOnSuccessListener(
(response) -> {
List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
}
).addOnFailureListener(
exception -> {
Log.e(TAG, "some exception happened" + exception.getMessage());
})
);প্রাথমিক প্রকার ব্যবহার করুন
টেবিল A এবং টেবিল B- তে তালিকাভুক্ত একটি নির্দিষ্ট ধরনের ফলাফলের মধ্যে অনুরোধের ফলাফল সীমাবদ্ধ করতে প্রাইমারি টাইপস প্যারামিটারটি ব্যবহার করুন। আপনি সর্বোচ্চ পাঁচটি মানের একটি অ্যারে নির্দিষ্ট করতে পারেন। এটি বাদ দিলে, সব ধরনের ফলাফলই ফেরত দেওয়া হবে।
নিম্নলিখিত উদাহরণটিতে 'Soccer' কোয়েরি স্ট্রিং নির্দিষ্ট করা হয়েছে এবং ফলাফলকে "sporting_goods_store" ধরনের প্রতিষ্ঠানে সীমাবদ্ধ করতে প্রাইমারি টাইপস প্যারামিটার ব্যবহার করা হয়েছে:
Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();
final List<Place.Field> primaryTypes = Arrays.asList("sporting_goods_store");
LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);
final FindAutocompletePredictionsRequest autocompletePlacesRequest =
FindAutocompletePredictionsRequest.builder()
.setQuery("Soccer")
.setIncludedPrimaryTypes(primaryTypes)
.setLocationBias(circle)
.build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
.addOnSuccessListener(
(response) -> {
List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
}
).addOnFailureListener(
exception -> {
Log.e(TAG, "some exception happened" + exception.getMessage());
})
); আপনি যদি প্রাথমিক প্রকারের প্যারামিটারটি বাদ দেন, তাহলে ফলাফলে এমন ধরনের প্রতিষ্ঠানও অন্তর্ভুক্ত হতে পারে যা আপনি চান না, যেমন "athletic_field" ।
উৎস ব্যবহার করুন
যখন আপনি অনুরোধে অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক হিসাবে নির্দিষ্ট ' origin' প্যারামিটারটি অন্তর্ভুক্ত করেন, তখন API প্রতিক্রিয়াতে মূলবিন্দু থেকে গন্তব্য পর্যন্ত সরলরেখার দূরত্ব অন্তর্ভুক্ত করে ( getDistanceMeters() ব্যবহার করে অ্যাক্সেস করা যায়)। এই উদাহরণে মূলবিন্দুটি সান ফ্রান্সিসকোর কেন্দ্রে সেট করা হয়েছে:
Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();
LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);
final FindAutocompletePredictionsRequest autocompletePlacesRequest =
FindAutocompletePredictionsRequest.builder()
.setQuery("Amoeba")
.setOrigin(center)
.setLocationRestriction(circle)
.build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
.addOnSuccessListener(
(response) -> {
List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
}
).addOnFailureListener(
exception -> {
Log.e(TAG, "some exception happened" + exception.getMessage());
})
);অটোকমপ্লিট (নতুন) অপ্টিমাইজেশন
এই বিভাগে অটোকমপ্লিট (নতুন) পরিষেবাটির সর্বোত্তম ব্যবহার নিশ্চিত করার জন্য সেরা পদ্ধতিগুলো বর্ণনা করা হয়েছে।
এখানে কিছু সাধারণ নির্দেশিকা দেওয়া হলো:
- একটি কার্যকরী ইউজার ইন্টারফেস তৈরি করার সবচেয়ে দ্রুত উপায় হলো Maps JavaScript API Autocomplete (New) উইজেট , Places SDK for Android Autocomplete (New) উইজেট , অথবা Places SDK for iOS Autocomplete (New) উইজেট ব্যবহার করা।
- শুরু থেকেই অটোকমপ্লিট (নতুন) এর অপরিহার্য ডেটা ফিল্ডগুলো বুঝে নিন।
- অবস্থান পক্ষপাত এবং অবস্থান সীমাবদ্ধতা ক্ষেত্রগুলি ঐচ্ছিক, কিন্তু অটোকমপ্লিট পারফরম্যান্সের উপর এগুলির উল্লেখযোগ্য প্রভাব থাকতে পারে।
- এপিআই কোনো ত্রুটি ফেরত দিলে আপনার অ্যাপটি যেন সুষ্ঠুভাবে তার কার্যক্ষমতা হারায়, তা নিশ্চিত করতে এরর হ্যান্ডলিং ব্যবহার করুন।
- নিশ্চিত করুন যে, কোনো বিকল্প না থাকলে আপনার অ্যাপটি তা সামলে নেয় এবং ব্যবহারকারীদের চালিয়ে যাওয়ার একটি উপায় প্রদান করে।
ব্যয় অপ্টিমাইজেশনের সর্বোত্তম অনুশীলন
মৌলিক ব্যয় অপ্টিমাইজেশন
Autocomplete (New) পরিষেবা ব্যবহারের খরচ অপ্টিমাইজ করতে, Place Details (New) এবং Autocomplete (New) উইজেটগুলিতে ফিল্ড মাস্ক ব্যবহার করুন, যাতে শুধুমাত্র আপনার প্রয়োজনীয় Autocomplete (New) ডেটা ফিল্ডগুলিই ফেরত আসে।
উন্নত ব্যয় অপ্টিমাইজেশন
প্লেস ডিটেইলস (নিউ)-এর পরিবর্তে নির্বাচিত স্থান সম্পর্কে SKU: অটোকমপ্লিট রিকোয়েস্ট প্রাইসিং অ্যাক্সেস করতে এবং জিওকোডিং এপিআই ফলাফল অনুরোধ করতে অটোকমপ্লিট (নিউ)-এর প্রোগ্রাম্যাটিক বাস্তবায়ন বিবেচনা করুন। যদি নিম্নলিখিত উভয় শর্ত পূরণ হয়, তবে জিওকোডিং এপিআই সহ প্রতি-অনুরোধ প্রাইসিং প্রতি-সেশন (সেশন-ভিত্তিক) প্রাইসিং-এর চেয়ে বেশি সাশ্রয়ী হবে:
- ব্যবহারকারীর নির্বাচিত স্থানের শুধু অক্ষাংশ/দ্রাঘিমাংশ বা ঠিকানার প্রয়োজন হলে, জিওকোডিং এপিআই একটি 'প্লেস ডিটেইলস (নিউ)' কলের চেয়ে কম খরচে এই তথ্য সরবরাহ করে।
- যদি ব্যবহারকারীরা গড়ে চারটি বা তার কম 'অটোকমপ্লিট (নতুন) প্রেডিকশন' অনুরোধের মধ্যে একটি প্রেডিকশন নির্বাচন করেন, তাহলে প্রতি-সেশন মূল্যের চেয়ে প্রতি-অনুরোধ মূল্য নির্ধারণ বেশি সাশ্রয়ী হতে পারে।
আপনার অ্যাপ্লিকেশনের জন্য কি নির্বাচিত পূর্বাভাসের ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশ ছাড়া অন্য কোনো তথ্যের প্রয়োজন আছে?
হ্যাঁ, আরও বিস্তারিত তথ্যের প্রয়োজন।
স্থানের বিবরণের (নতুন) সাথে সেশন-ভিত্তিক অটোকমপ্লিট (নতুন) ব্যবহার করুন।
যেহেতু আপনার অ্যাপ্লিকেশনে স্থানের বিবরণ (নতুন), যেমন স্থানের নাম, ব্যবসার অবস্থা, বা খোলার সময় প্রয়োজন, তাই আপনার অটোকমপ্লিট (নতুন) বাস্তবায়নে প্রতি সেশনের জন্য একটি সেশন টোকেন (প্রোগ্রাম্যাটিকভাবে অথবা জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড বা আইওএস উইজেটে অন্তর্নির্মিত) এবং আপনি কোন স্থানের ডেটা ফিল্ড অনুরোধ করছেন তার উপর নির্ভর করে প্রযোজ্য প্লেসেস এসকিউইউ (Places SKUs) ব্যবহার করা উচিত ।
Widget implementation
জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড বা আইওএস উইজেটগুলিতে সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত থাকে। এর মধ্যে নির্বাচিত প্রেডিকশনের অটোকমপ্লিট (নতুন) রিকোয়েস্ট এবং প্লেস ডিটেইলস (নতুন) রিকোয়েস্ট উভয়ই অন্তর্ভুক্ত। আপনি যেন শুধুমাত্র আপনার প্রয়োজনীয় অটোকমপ্লিট (নতুন) ডেটা ফিল্ডগুলির জন্যই রিকোয়েস্ট করেন, তা নিশ্চিত করতে fields প্যারামিটারটি নির্দিষ্ট করে দিন।
প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার অটোকমপ্লিট (নতুন) অনুরোধের সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত প্রেডিকশন সম্পর্কে স্থানের বিবরণ (নতুন) অনুরোধ করার সময়, নিম্নলিখিত প্যারামিটারগুলি অন্তর্ভুক্ত করুন:
- অটোকমপ্লিট (নতুন) প্রতিক্রিয়া থেকে স্থানের আইডি
- অটোকমপ্লিট (নতুন) অনুরোধে ব্যবহৃত সেশন টোকেন
-
fieldsপ্যারামিটারটি আপনার প্রয়োজনীয় অটোকমপ্লিট (নতুন) ডেটা ফিল্ডগুলি নির্দিষ্ট করে।
No, needs only address and location
আপনার অটোকমপ্লিট (নতুন) ব্যবহারের পারফরম্যান্সের উপর নির্ভর করে, আপনার অ্যাপ্লিকেশনের জন্য প্লেস ডিটেইলস (নতুন)-এর চেয়ে জিওকোডিং এপিআই একটি বেশি সাশ্রয়ী বিকল্প হতে পারে। প্রতিটি অ্যাপ্লিকেশনের অটোকমপ্লিট (নতুন)-এর কার্যকারিতা নির্ভর করে ব্যবহারকারীরা কী প্রবেশ করাচ্ছেন, অ্যাপ্লিকেশনটি কোথায় ব্যবহার করা হচ্ছে এবং পারফরম্যান্স অপ্টিমাইজেশনের সেরা অনুশীলনগুলি প্রয়োগ করা হয়েছে কিনা তার উপর।
নিম্নলিখিত প্রশ্নের উত্তর দেওয়ার জন্য, আপনার অ্যাপ্লিকেশনে একটি অটোকমপ্লিট (নতুন) প্রেডিকশন নির্বাচন করার আগে একজন ব্যবহারকারী গড়ে কতগুলি অক্ষর টাইপ করেন তা বিশ্লেষণ করুন।
আপনার ব্যবহারকারীরা কি গড়ে চার বা তার কম অনুরোধে একটি অটোকমপ্লিট (নতুন) প্রেডিকশন নির্বাচন করেন?
হ্যাঁ
সেশন টোকেন ছাড়াই প্রোগ্রাম্যাটিকভাবে অটোকমপ্লিট (নতুন) প্রয়োগ করুন এবং নির্বাচিত স্থানের পূর্বাভাসের জন্য জিওকোডিং এপিআই কল করুন।
জিওকোডিং এপিআই ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশের স্থানাঙ্ক সরবরাহ করে। চারটি অটোকমপ্লিট রিকোয়েস্ট এবং নির্বাচিত স্থানের পূর্বাভাস সম্পর্কে একটি জিওকোডিং এপিআই কল করার খরচ , প্রতি সেশনের অটোকমপ্লিট (নতুন) খরচের চেয়ে কম।¹
আপনার ব্যবহারকারীদের আরও কম অক্ষরের মধ্যে তাদের কাঙ্ক্ষিত পূর্বাভাস পেতে সাহায্য করার জন্য পারফরম্যান্সের সেরা অনুশীলনগুলো প্রয়োগ করার কথা বিবেচনা করুন।
না
স্থানের বিবরণের (নতুন) সাথে সেশন-ভিত্তিক অটোকমপ্লিট (নতুন) ব্যবহার করুন।
যেহেতু একজন ব্যবহারকারী একটি অটোকমপ্লিট (নতুন) প্রেডিকশন নির্বাচন করার আগে আপনার প্রত্যাশিত গড় অনুরোধের সংখ্যা প্রতি-সেশন মূল্যের খরচকে ছাড়িয়ে যায়, তাই আপনার অটোকমপ্লিট (নতুন) বাস্তবায়নে প্রতি সেশনে অটোকমপ্লিট (নতুন) অনুরোধ এবং এর সাথে সম্পর্কিত প্লেস ডিটেইলস (নতুন) অনুরোধ উভয়ের জন্যই একটি সেশন টোকেন ব্যবহার করা উচিত ।
উইজেট বাস্তবায়ন
জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড বা আইওএস উইজেটগুলিতে সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত থাকে। এর মধ্যে নির্বাচিত প্রেডিকশনের অটোকমপ্লিট (নতুন) অনুরোধ এবং প্লেস ডিটেইলস (নতুন) অনুরোধ উভয়ই অন্তর্ভুক্ত। আপনি যেন শুধুমাত্র আপনার প্রয়োজনীয় ফিল্ডগুলোর জন্যই অনুরোধ করেন, তা নিশ্চিত করতে fields প্যারামিটারটি নির্দিষ্ট করে দিন।
প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার অটোকমপ্লিট (নতুন) অনুরোধের সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত প্রেডিকশন সম্পর্কে স্থানের বিবরণ (নতুন) অনুরোধ করার সময়, নিম্নলিখিত প্যারামিটারগুলি অন্তর্ভুক্ত করুন:
- অটোকমপ্লিট (নতুন) প্রতিক্রিয়া থেকে স্থানের আইডি
- অটোকমপ্লিট (নতুন) অনুরোধে ব্যবহৃত সেশন টোকেন
-
fieldsপ্যারামিটারটি ঠিকানা এবং জ্যামিতির মতো ক্ষেত্রগুলি নির্দিষ্ট করে।
অটোকমপ্লিট (নতুন) অনুরোধগুলি বিলম্বিত করার কথা বিবেচনা করুন।
আপনি এমন কৌশল অবলম্বন করতে পারেন, যেমন ব্যবহারকারী প্রথম তিন বা চারটি অক্ষর টাইপ না করা পর্যন্ত একটি অটোকমপ্লিট (নতুন) অনুরোধ বিলম্বিত করা, যাতে আপনার অ্যাপ্লিকেশনটি কম অনুরোধ করে। উদাহরণস্বরূপ, ব্যবহারকারী তৃতীয় অক্ষরটি টাইপ করার পর প্রতিটি অক্ষরের জন্য অটোকমপ্লিট (নতুন) অনুরোধ করার অর্থ হলো, যদি ব্যবহারকারী সাতটি অক্ষর টাইপ করার পর এমন একটি প্রেডিকশন নির্বাচন করে যার জন্য আপনি একটি জিওকোডিং এপিআই অনুরোধ করেন, তাহলে মোট খরচ হবে প্রতি অনুরোধে ৪টি অটোকমপ্লিট (নতুন) + জিওকোডিং ।
যদি অনুরোধে বিলম্ব ঘটিয়ে আপনার গড় প্রোগ্রাম্যাটিক অনুরোধের সংখ্যা চারের নিচে নামিয়ে আনা যায়, তাহলে আপনি জিওকোডিং এপিআই ইমপ্লিমেন্টেশন সহ পারফরম্যান্ট অটোকমপ্লিট (নতুন) -এর নির্দেশিকা অনুসরণ করতে পারেন। মনে রাখবেন যে, অনুরোধে বিলম্ব ব্যবহারকারীর কাছে লেটেন্সি হিসাবে অনুভূত হতে পারে, যিনি প্রতিটি নতুন কীস্ট্রোকের সাথে প্রেডিকশন দেখার আশা করতে পারেন।
আপনার ব্যবহারকারীরা যাতে কম অক্ষরের মধ্যে তাদের কাঙ্ক্ষিত পূর্বাভাস পেতে পারেন, সেজন্য পারফরম্যান্সের সর্বোত্তম অনুশীলনগুলো প্রয়োগ করার কথা বিবেচনা করুন।
খরচের জন্য, গুগল ম্যাপস প্ল্যাটফর্মের মূল্য তালিকা দেখুন।
কর্মক্ষমতা সংক্রান্ত সর্বোত্তম অনুশীলন
নিম্নলিখিত নির্দেশিকাগুলি অটোকমপ্লিট (নতুন)-এর পারফরম্যান্স অপ্টিমাইজ করার উপায় বর্ণনা করে:
- আপনার অটোকমপ্লিট (নতুন) ইমপ্লিমেন্টেশনে দেশভিত্তিক সীমাবদ্ধতা, অবস্থানভিত্তিক পক্ষপাত এবং (প্রোগ্রামভিত্তিক বাস্তবায়নের জন্য) ভাষার পছন্দ যোগ করুন। উইজেটগুলোর ক্ষেত্রে ভাষার পছন্দের প্রয়োজন নেই, কারণ সেগুলো ব্যবহারকারীর ব্রাউজার বা মোবাইল ডিভাইস থেকে ভাষার পছন্দ বেছে নেয়।
- যদি অটোকমপ্লিট (নতুন)-এর সাথে একটি মানচিত্র থাকে, তাহলে আপনি মানচিত্র ভিউপোর্ট অনুযায়ী অবস্থান নির্ধারণ করতে পারেন।
- যখন কোনো ব্যবহারকারী অটোকমপ্লিট (নতুন) প্রেডিকশনগুলোর মধ্যে থেকে কোনো একটি বেছে নেন না—সাধারণত কারণ সেই প্রেডিকশনগুলোর কোনোটিই কাঙ্ক্ষিত ফলাফল-ঠিকানা নয়—তখন আপনি আরও প্রাসঙ্গিক ফলাফল পাওয়ার চেষ্টা করার জন্য ব্যবহারকারীর মূল ইনপুটটি পুনরায় ব্যবহার করতে পারেন:
- যদি আপনি আশা করেন যে ব্যবহারকারী শুধুমাত্র ঠিকানার তথ্য প্রবেশ করাবেন, তাহলে জিওকোডিং এপিআই (Geocoding API) -কে কল করার সময় ব্যবহারকারীর মূল ইনপুটটি পুনরায় ব্যবহার করুন।
- যদি ব্যবহারকারী নাম বা ঠিকানা দিয়ে কোনো নির্দিষ্ট স্থানের জন্য অনুসন্ধান করবেন বলে আশা করা হয়, তাহলে একটি ‘স্থানের বিবরণ (নতুন)’ অনুরোধ ব্যবহার করুন। যদি শুধুমাত্র একটি নির্দিষ্ট অঞ্চলে ফলাফল প্রত্যাশিত হয়, তাহলে ‘অবস্থান পক্ষপাত’ ব্যবহার করুন।
- ব্যবহারকারীরা কোনো ভবনের নির্দিষ্ট ইউনিট বা অ্যাপার্টমেন্টের মতো উপ-ঠিকানা ইনপুট করেন। উদাহরণস্বরূপ, চেক ঠিকানা "Stroupežnického 3191/17, Praha" ইনপুট করলে অটোকমপ্লিট (নতুন)-এ একটি আংশিক পূর্বাভাস পাওয়া যায়।
- ব্যবহারকারীরা নিউ ইয়র্ক সিটির "23-30 29th St, Queens" বা হাওয়াই দ্বীপপুঞ্জের কাওয়াই দ্বীপের "47-380 Kamehameha Hwy, Kaneohe"-এর মতো রোড-সেগমেন্ট প্রিফিক্স সহ ঠিকানা ইনপুট করছেন।
অবস্থান পক্ষপাত
একটি location প্যারামিটার এবং একটি radius প্যারামিটার পাস করে ফলাফলকে একটি নির্দিষ্ট এলাকার দিকে পক্ষপাতদুষ্ট করুন। এটি অটোকমপ্লিট (নতুন)-কে সংজ্ঞায়িত এলাকার মধ্যে ফলাফল দেখাতে অগ্রাধিকার দিতে নির্দেশ দেয়। সংজ্ঞায়িত এলাকার বাইরের ফলাফলও প্রদর্শিত হতে পারে। আপনি অন্তর্ভুক্ত অঞ্চল কোড includedRegionCodes প্যারামিটার ব্যবহার করে ফলাফল ফিল্টার করে শুধুমাত্র একটি নির্দিষ্ট দেশের মধ্যে থাকা স্থানগুলো দেখাতে পারেন।
অবস্থান সীমাবদ্ধ করা
locationRestriction প্যারামিটারটি দিয়ে ফলাফল একটি নির্দিষ্ট এলাকায় সীমাবদ্ধ করুন।
আপনি locationRestriction প্যারামিটারটি যোগ করে location এবং একটি radius প্যারামিটার দ্বারা সংজ্ঞায়িত অঞ্চলে ফলাফল সীমাবদ্ধ করতে পারেন। এটি Autocomplete (New)-কে শুধুমাত্র সেই অঞ্চলের মধ্যে থাকা ফলাফলগুলি ফেরত দিতে নির্দেশ দেয়।