স্থান স্বয়ংসম্পূর্ণ (নতুন)

ইউরোপীয় অর্থনৈতিক অঞ্চল (EEA) ডেভেলপাররা

অটোকমপ্লিট (নতুন) পরিষেবাটি একটি iOS API যা একটি অনুরোধের জবাবে স্থানের পরামর্শ প্রদান করে। অনুরোধে, একটি টেক্সট সার্চ স্ট্রিং এবং ভৌগোলিক সীমানা উল্লেখ করুন যা অনুসন্ধানের এলাকা নিয়ন্ত্রণ করে।

অটোকমপ্লিট (নতুন) পরিষেবাটি ইনপুটের সম্পূর্ণ শব্দ এবং সাবস্ট্রিং মিলিয়ে স্থানের নাম, ঠিকানা এবং প্লাস কোড শনাক্ত করতে পারে। ফলে, ব্যবহারকারী টাইপ করার সাথে সাথেই অ্যাপ্লিকেশনগুলো কোয়েরি পাঠিয়ে তাৎক্ষণিক স্থানের পরামর্শ দিতে পারে।

স্থানের পরামর্শ হলো নির্দিষ্ট ইনপুট টেক্সট স্ট্রিং এবং অনুসন্ধান এলাকার উপর ভিত্তি করে দেওয়া বিভিন্ন স্থান, যেমন ব্যবসা প্রতিষ্ঠান, ঠিকানা এবং দর্শনীয় স্থান।

উদাহরণস্বরূপ, আপনি ইনপুট হিসাবে "Spagh" এর মতো একটি আংশিক ইউজার ইনপুট স্ট্রিং ব্যবহার করে এপিআই কল করলেন, এবং সার্চ এলাকাটি নিউ ইয়র্ক সিটিতে সীমাবদ্ধ রাখলেন। এরপর রেসপন্সে সার্চ স্ট্রিং এবং সার্চ এলাকার সাথে মিলে যাওয়া জায়গার সাজেশনের একটি তালিকা থাকে, যেমন "Cafe Spaghetti" নামের রেস্তোরাঁটি, এবং সাথে সেই জায়গাটি সম্পর্কে বিস্তারিত তথ্যও থাকে।

ফেরত আসা স্থানের পরামর্শগুলো ব্যবহারকারীর সামনে উপস্থাপন করার জন্য ডিজাইন করা হয়েছে, যাতে তিনি তার পছন্দের স্থানটি বেছে নিতে পারেন। ফেরত আসা স্থানের পরামর্শগুলোর যেকোনোটি সম্পর্কে আরও তথ্য পেতে আপনি একটি ‘স্থানের বিবরণ (নতুন)’ অনুরোধ করতে পারেন।

আপনি দুটি প্রধান উপায়ে আপনার অ্যাপে অটোকমপ্লিট (নতুন) কার্যকারিতা যুক্ত করতে পারেন:

প্রোগ্রামের মাধ্যমে স্থানের পূর্বাভাস পান

স্বয়ংক্রিয় সম্পূর্ণতা (নতুন) অনুরোধ

GMSPlacesClient এর একটি মেথড কল করে একটি অটোকমপ্লিট রিকোয়েস্ট তৈরি করুন। আপনি GMSAutocompleteRequest অবজেক্টে প্যারামিটার পাস করতে পারেন। রেসপন্সটি একটি GMSAutocompletePlaceSuggestion অবজেক্টের মধ্যে অটোকমপ্লিট সাজেশন প্রদান করে।

এপিআই কী এবং query প্যারামিটার আবশ্যক। অনুরোধগুলোকে একটি বিলিং সেশনের সাথে যুক্ত করতে আপনি GMSAutocompleteSessionToken এবং ফলাফলের উপর প্রয়োগ করার জন্য GMSAutocompleteFilter ও অন্তর্ভুক্ত করতে পারেন।

প্লেসেস সুইফট এসডিকে সংস্করণ

PlacesClient এর একটি মেথড কল করে একটি অটোকমপ্লিট রিকোয়েস্ট তৈরি করুন। আপনি AutocompleteRequest অবজেক্টে প্যারামিটার পাস করতে পারেন। রেসপন্সটি একটি AutocompletePlaceSuggestion অবজেক্টের মধ্যে অটোকমপ্লিট সাজেশন প্রদান করে।

এপিআই কী এবং query প্যারামিটার আবশ্যক। অনুরোধগুলোকে একটি বিলিং সেশনের সাথে যুক্ত করতে আপনি AutocompleteSessionToken এবং ফলাফলের উপর প্রয়োগ করার জন্য AutocompleteFilter অন্তর্ভুক্ত করতে পারেন।

প্রয়োজনীয় ও ঐচ্ছিক প্যারামিটার সম্পর্কে আরও তথ্যের জন্য, এই নথির প্যারামিটার বিভাগটি দেখুন।

প্লেসেস সুইফট এসডিকে

let center = (37.3913916, -122.0879074)
let northEast = (37.388162, -122.088137)
let southWest = (37.395804, -122.077023)

let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest)
let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias)

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  // Handle suggestions.
case .failure(let placesError):
  // Handle error.
}

সুইফট

let token = GMSAutocompleteSessionToken()

let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051)
let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.types = [kGMSPlaceTypeRestaurant]
filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds)

let request = GMSAutocompleteRequest(query:"Spagh")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

উদ্দেশ্য-সি

CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137);
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ kGMSPlaceTypeRestaurant ];
filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

স্বয়ংক্রিয় সম্পূর্ণ (নতুন) প্রতিক্রিয়া

অটোকমপ্লিট সর্বোচ্চ পাঁচটি GMSAutocompleteSuggestion ইনস্ট্যান্সের একটি অ্যারে রিটার্ন করে। অ্যারেটিতে থাকে:

  • placeID
  • types : এই স্থানের জন্য প্রযোজ্য প্রকারভেদসমূহ।
  • distanceMeters : মূলবিন্দু থেকে দূরত্ব।
  • attributedFullText : কোনো পরামর্শের সম্পূর্ণ পাঠযোগ্য পাঠ্য।
  • attributedPrimaryText : কোনো পরামর্শের পাঠযোগ্য মূল পাঠ্য।
  • attributedSecondaryText : কোনো পরামর্শের পাঠযোগ্য দ্বিতীয় পাঠ্য।
  • structuredFormat : নির্দিষ্ট নাম এবং দ্ব্যর্থতা নিরসনকারী লেখা, যেমন শহর বা অঞ্চল।

প্রয়োজনীয় প্যারামিটার

প্রশ্ন

যে টেক্সট স্ট্রিংটির উপর অনুসন্ধান করা হবে। সম্পূর্ণ শব্দ ও উপ-স্ট্রিং, স্থানের নাম, ঠিকানা এবং প্লাস কোড উল্লেখ করুন। অটোকমপ্লিট (নতুন) পরিষেবাটি এই স্ট্রিংটির উপর ভিত্তি করে সম্ভাব্য মিলগুলো ফেরত দেয় এবং ফলাফলগুলোকে তাদের অনুভূত প্রাসঙ্গিকতা অনুসারে সাজায়।

ঐচ্ছিক পরামিতি

সেশন টোকেন

সেশন টোকেন হলো ব্যবহারকারী-সৃষ্ট স্ট্রিং যা অটোকমপ্লিট (নিউ) কলগুলোকে—উইজেটের মাধ্যমে করা কল এবং প্রোগ্রাম্যাটিক কল উভয়কেই—'সেশন' হিসেবে ট্র্যাক করে। বিলিংয়ের উদ্দেশ্যে, অটোকমপ্লিট (নিউ) একটি ব্যবহারকারীর অটোকমপ্লিট সার্চের কোয়েরি এবং সিলেকশন পর্যায়গুলোকে একটি পৃথক সেশনে একত্রিত করতে সেশন টোকেন ব্যবহার করে।

আপনি আপনার Places Autocomplete সেশন টোকেনটি প্রকাশ করতে পারেন, যাতে এটিকে iOS-এর জন্য Places SDK-এর অংশ নয় এমন অন্যান্য পরিষেবাগুলিতে পাঠানো যায়, যেমন ঠিকানা যাচাইকরণের (Address Validation) জন্য।

প্লেসেস সুইফট এসডিকে

let token = AutocompleteSessionToken()
let filter = AutocompleteFilter(origin: CLLocationCoordinate2DMake(39.7, -94.5))
let request = AutocompleteRequest(query: "Piz", sessionToken: token, filter: filter)

PlacesClient.shared.fetchAutocompleteSuggestions(request: request) {
    case .success(let suggestions):
      ...
    case .failure(let placesError):
      print(placesError) 
}

// pass token's string format to use with a service that is not a part of iOS SDK.
print("token: \(token)")

উদ্দেশ্য-সি

GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Piz"];
GMSAutocompleteSessionToken *token = [[GMSAutocompleteSessionToken alloc] init];
request.sessionToken = token;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.origin = [[CLLocation alloc] initWithLatitude:39.7 longitude:-94.5];
filter.locationBias = GMSPlaceRectangularLocationOption(topLocation, bottomLocation);

request.filter = filter;
 [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request
                     callback:^(NSArray<GMSAutocompleteSuggestion *> *_Nullable results,
                                NSError *_Nullable error) {
  ...
}];

// pass token's string format to use with a service that is not a part of iOS SDK.
NSLog(@"%@", token.description);

আরও তথ্যের জন্য সেশন টোকেন দেখুন।

ঐচ্ছিক অটোকমপ্লিটফিল্টার প্যারামিটার

প্রকার

একটি স্থানের সাথে টেবিল A ​​বা টেবিল B থেকে শুধুমাত্র একটি প্রাথমিক প্রকার যুক্ত থাকতে পারে। উদাহরণস্বরূপ, প্রাথমিক প্রকারটি হতে পারে mexican_restaurant বা steak_house

ডিফল্টরূপে, এপিআইটি কোনো স্থানের সাথে যুক্ত প্রাথমিক প্রকারের মান নির্বিশেষে, input প্যারামিটারের উপর ভিত্তি করে সমস্ত স্থান ফেরত দেয়। types প্যারামিটারটি পাস করে ফলাফলকে একটি নির্দিষ্ট প্রাথমিক প্রকার বা প্রকারগুলোর মধ্যে সীমাবদ্ধ করুন।

টেবিল A ​​বা টেবিল B থেকে সর্বোচ্চ পাঁচটি টাইপ ভ্যালু নির্দিষ্ট করতে এই প্যারামিটারটি ব্যবহার করুন। রেসপন্সে অন্তর্ভুক্ত হওয়ার জন্য একটি স্থানকে অবশ্যই নির্দিষ্ট প্রাইমারি টাইপ ভ্যালুগুলোর মধ্যে একটির সাথে মিলতে হবে।

নিম্নলিখিত ক্ষেত্রে অনুরোধটি INVALID_REQUEST ত্রুটির সাথে প্রত্যাখ্যাত হয়:

  • পাঁচটিরও বেশি প্রকার নির্দিষ্ট করা হয়েছে।
  • যেকোনো অচেনা প্রকার নির্দিষ্ট করা হয়।

উদাহরণস্বরূপ, ফলাফল শুধু ক্রীড়া সামগ্রীর দোকানে সীমাবদ্ধ করতে, আপনার AutocompleteFilter এ সেই ধরণটি নির্দিষ্ট করে দিন:

প্লেসেস সুইফট এসডিকে

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
  

সুইফট

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]
  

উদ্দেশ্য-সি

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];

দেশগুলি

শুধুমাত্র নির্দিষ্ট অঞ্চলের তালিকা থেকে ফলাফল অন্তর্ভুক্ত করুন, যা সর্বোচ্চ ১৫টি ccTLD ("টপ-লেভেল ডোমেইন") দুই-অক্ষরের মানের একটি অ্যারে হিসাবে নির্দিষ্ট করা হয়েছে। এটি বাদ দিলে, প্রতিক্রিয়ার উপর কোনো বিধিনিষেধ প্রয়োগ করা হয় না। উদাহরণস্বরূপ, অঞ্চলগুলিকে জার্মানি এবং ফ্রান্সে সীমাবদ্ধ করতে:

প্লেসেস সুইফট এসডিকে

let filter = AutocompleteFilter(countries: ["DE", "FR"])
  

সুইফট

let filter = GMSAutocompleteFilter()
filter.countries = ["DE", "FR"]

উদ্দেশ্য-সি

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.countries = @[ @"DE", @"FR" ];

আপনি যদি locationRestriction এবং countries উভয়ই নির্দিষ্ট করেন, তাহলে ফলাফল দুটি সেটিংয়ের ছেদবিন্দুতে অবস্থিত হবে।

ইনপুট অফসেট

শূন্য-ভিত্তিক ইউনিকোড ক্যারেক্টার অফসেট যা input কার্সরের অবস্থান নির্দেশ করে। কার্সরের অবস্থান ফেরত আসা প্রেডিকশনগুলোকে প্রভাবিত করতে পারে। এটি খালি থাকলে, ডিফল্টভাবে input দৈর্ঘ্যের সমান হয়।

অবস্থান পক্ষপাত বা অবস্থান সীমাবদ্ধতা

অনুসন্ধানের এলাকা নির্ধারণ করতে আপনি locationBias অথবা locationRestriction নির্দিষ্ট করতে পারেন, কিন্তু উভয়ই নয়। locationRestriction কে এমন একটি অঞ্চল হিসেবে ভাবুন যার মধ্যে ফলাফল অবশ্যই থাকতে হবে, এবং locationBias এমন একটি অঞ্চল হিসেবে ভাবুন যার কাছাকাছি ফলাফল থাকতে হবে কিন্তু তা ওই এলাকার বাইরেও হতে পারে।

  • locationBias অনুসন্ধানের জন্য একটি এলাকা নির্দিষ্ট করে। এই অবস্থানটি একটি বায়াস (bias) হিসেবে কাজ করে, যার অর্থ হলো নির্দিষ্ট এলাকার বাইরের ফলাফলসহ, নির্দিষ্ট অবস্থানের আশেপাশের ফলাফলগুলোও ফেরত দেওয়া হতে পারে।

  • locationRestriction অনুসন্ধানের জন্য একটি এলাকা নির্দিষ্ট করে। নির্দিষ্ট এলাকার বাইরের ফলাফল ফেরত দেওয়া হয় না।

locationBias বা locationRestriction অঞ্চলটিকে একটি আয়তক্ষেত্রাকার ভিউপোর্ট বা একটি বৃত্ত হিসাবে নির্দিষ্ট করুন।

একটি বৃত্তকে তার কেন্দ্রবিন্দু এবং মিটারে পরিমাপ করা ব্যাসার্ধ দ্বারা সংজ্ঞায়িত করা হয়। ব্যাসার্ধটি অবশ্যই ০.০ থেকে ৫০০০০.০-এর মধ্যে হতে হবে। এর ডিফল্ট মান হলো ০.০। locationRestriction জন্য, আপনাকে অবশ্যই ব্যাসার্ধের মান ০.০-এর চেয়ে বেশি নির্ধারণ করতে হবে। অন্যথায়, অনুরোধটি কোনো ফলাফল প্রদান করবে না।

উদাহরণস্বরূপ:

প্লেসেস সুইফট এসডিকে

let center = CLLocationCoordinate2DMake(40.477398, -74.259087)

let bias = CircularCoordinateRegion(center: center, radius: 1000.0)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

সুইফট

let center = CLLocationCoordinate2DMake(40.730610, -73.935242)
let radius = 1000.0

filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

উদ্দেশ্য-সি

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242);
radius = 1000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);

একটি আয়তক্ষেত্র হলো একটি অক্ষাংশ-দ্রাঘিমাংশ ভিউপোর্ট, যা দুটি তির্যকভাবে বিপরীত lowhigh বিন্দু দ্বারা উপস্থাপিত হয়। একটি ভিউপোর্টকে একটি বদ্ধ অঞ্চল হিসেবে বিবেচনা করা হয়, যার অর্থ এটি তার সীমানাকে অন্তর্ভুক্ত করে। অক্ষাংশের সীমা অবশ্যই -৯০ থেকে ৯০ ডিগ্রির মধ্যে এবং দ্রাঘিমাংশের সীমা অবশ্যই -১৮০ থেকে ১৮০ ডিগ্রির মধ্যে হতে হবে।

  • যদি low = high , তাহলে ভিউপোর্টটি সেই একক বিন্দুটি নিয়ে গঠিত হয়।
  • যদি low.longitude > high.longitude , তাহলে দ্রাঘিমাংশের পরিসরটি উল্টে যায় (ভিউপোর্টটি ১৮০ ডিগ্রি দ্রাঘিমা রেখা অতিক্রম করে)।
  • যদি low.longitude = -180 ডিগ্রি এবং high.longitude = 180 ডিগ্রি হয়, তাহলে ভিউপোর্টে সমস্ত দ্রাঘিমাংশ অন্তর্ভুক্ত থাকবে।
  • যদি low.longitude = 180 ডিগ্রি এবং high.longitude = -180 ডিগ্রি হয়, তাহলে দ্রাঘিমাংশের পরিসরটি খালি থাকে।

low এবং high উভয়ই অবশ্যই পূরণ করতে হবে এবং প্রদর্শিত বক্সটি খালি থাকতে পারবে না। একটি খালি ভিউপোর্টের ফলে ত্রুটি দেখা দেয়।

উদাহরণস্বরূপ, এই ভিউপোর্টটি নিউ ইয়র্ক শহরকে সম্পূর্ণরূপে ঘিরে রেখেছে:

প্লেসেস সুইফট এসডিকে

let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087)
let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

সুইফট

let high = CLLocationCoordinate2DMake(40.921628, -73.700051)
let low = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceRectangularLocationOption(high, low)

উদ্দেশ্য-সি

CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087);
CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceRectangularLocationOption(high, low);

উৎপত্তি

যে মূলবিন্দু থেকে গন্তব্যে সরলরৈখিক দূরত্ব গণনা করা হবে (যা distanceMeters হিসাবে ফেরত দেওয়া হয়)। এই মানটি বাদ দিলে, সরলরৈখিক দূরত্ব ফেরত দেওয়া হবে না। এটি অবশ্যই অক্ষাংশ এবং দ্রাঘিমাংশের স্থানাঙ্ক হিসাবে উল্লেখ করতে হবে:

প্লেসেস সুইফট এসডিকে

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
  

সুইফট

let filter = GMSAutocompleteFilter()
filter.origin =  CLLocation(latitude: 37.395804, longitude: -122.077023)
 

উদ্দেশ্য-সি

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];

filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];

অঞ্চল কোড

প্রতিক্রিয়া বিন্যাস করার জন্য ব্যবহৃত অঞ্চল কোডটি একটি ccTLD ("টপ-লেভেল ডোমেইন") দুই-অক্ষরের মান হিসাবে নির্দিষ্ট করা হয়। কিছু উল্লেখযোগ্য ব্যতিক্রম ছাড়া, বেশিরভাগ ccTLD কোড ISO 3166-1 কোডের অনুরূপ। উদাহরণস্বরূপ, যুক্তরাজ্যের ccTLD হলো "uk" (.co.uk) এবং এর ISO 3166-1 কোড হলো "gb" (যা প্রযুক্তিগতভাবে "The United Kingdom of Great Britain and Northern Ireland" সত্তাটিকে বোঝায়)।

আপনি যদি একটি অবৈধ অঞ্চল কোড উল্লেখ করেন, তাহলে API একটি INVALID_ARGUMENT ত্রুটি ফেরত দেয়। প্রযোজ্য আইন অনুসারে এই প্যারামিটারটি ফলাফলের উপর প্রভাব ফেলতে পারে।

বিশুদ্ধ পরিষেবা এলাকার ব্যবসাগুলিকে অন্তর্ভুক্ত করা উচিত

যদি true , তাহলে রেসপন্স অ্যারেতে পিওর সার্ভিস এরিয়া বিজনেসগুলো ফেরত দেওয়া হয়। পিওর সার্ভিস এরিয়া বিজনেস হলো এমন একটি ব্যবসা যা সরাসরি গ্রাহকদের কাছে যায় বা পণ্য সরবরাহ করে, কিন্তু গ্রাহকদের ব্যবসায়িক ঠিকানায় পরিষেবা দেয় না।

উদাহরণস্বরূপ:

প্লেসেস সুইফট এসডিকে

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

সুইফট

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

উদ্দেশ্য-সি

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.shouldIncludePureServiceAreaBusinesses = YES;

স্থান স্বয়ংসম্পূর্ণ উইজেট যোগ করুন

একটি সামঞ্জস্যপূর্ণ স্থান স্বয়ংসম্পূর্ণ অভিজ্ঞতা আরও সহজে প্রদান করার জন্য, আপনি আপনার অ্যাপে প্লেস অটোকমপ্লিট উইজেটটি যোগ করতে পারেন। এই উইজেটটি একটি বিশেষ, পূর্ণ-স্ক্রিন ইন্টারফেস প্রদান করে যা ব্যবহারকারীর ইনপুট গ্রহণ করে এবং ব্যবহারকারীকে স্থানের পূর্বাভাসগুলো প্রদর্শন করার পাশাপাশি অ্যাপে AutocompletePlaceSuggestion অবজেক্ট ফেরত পাঠায়। এরপর আপনি যেকোনো স্থানের পূর্বাভাস সম্পর্কে অতিরিক্ত তথ্য পেতে একটি প্লেস ডিটেইলস (নিউ) অনুরোধ করতে পারেন।

স্থান স্বয়ংসম্পূর্ণ উইজেট

প্রোগ্রাম্যাটিকভাবে স্থানের পূর্বাভাস পাওয়ার মতোই, প্লেস অটোকমপ্লিট উইজেটটি আপনাকে বিলিংয়ের উদ্দেশ্যে অটোকমপ্লিট অনুরোধগুলোকে সেশনে একত্রিত করতে সেশন টোকেন ব্যবহার করার সুযোগ দেয়। আপনি AutocompleteSessionToken() কল করে একটি সেশন টোকেন পাস করতে পারেন।

আপনি যদি কোনো সেশন টোকেন প্রদান না করেন, তাহলে উইজেটটি আপনার জন্য একটি অটোকমপ্লিট সেশন টোকেন তৈরি করবে, যা পরবর্তীতে onSelection কলব্যাক থেকে পাওয়া যাবে। সেশন টোকেন ব্যবহার সম্পর্কে আরও তথ্যের জন্য, ‘সেশন টোকেন সম্পর্কে’ দেখুন।

যখন ' show ' বাইন্ডিং ভ্যালুটি ' true সেট করা হয়, তখন ব্যবহারকারীকে একটি পূর্ণ-স্ক্রিন ভিউতে নিয়ে যাওয়া হবে যেখানে তিনি একটি স্থান নির্বাচন করতে পারবেন। ব্যবহারকারী টাইপ করার সাথে সাথে, উইজেটটি ব্যবসা প্রতিষ্ঠান, ঠিকানা এবং দর্শনীয় স্থানের মতো জায়গার সাজেশন দেখায়। ব্যবহারকারী যখন একটি স্থান নির্বাচন করেন, তখন উইজেটটি নির্বাচিত স্থানটি সহ onSelection হ্যান্ডলারকে কল করে এবং পূর্ণ-স্ক্রিন ভিউটি বন্ধ করে দেয়।

অটোকমপ্লিট উইজেটের প্যারামিটার স্থাপন করুন

প্রোগ্রামগতভাবে উপলব্ধ প্যারামিটারগুলো ছাড়াও, প্লেস অটোকমপ্লিট উইজেটটি নিম্নলিখিত প্যারামিটারগুলোও প্রদান করে।

দেখান

show নির্দিষ্ট করে যে উইজেটটি দেখানো হবে কি না।

নির্বাচন

একটি স্থান নির্বাচন করা হলে এটি বন্ধ হয়ে যাবে।

onError

ত্রুটি ঘটলে যে ক্লোজারটি রান হবে। ত্রুটি ঘটলে একটি PlacesError পাস করা হবে।

বিষয়বস্তু এবং থিম কাস্টমাইজেশন

AutocompleteUICustomization প্যারামিটারগুলো উইজেটে প্রয়োগ করার জন্য UI কাস্টমাইজেশনগুলো নির্দিষ্ট করে। কাস্টমাইজেশন অপশনগুলো হলো:

  • AutocompleteListDensity . এই প্যারামিটারটি আপনাকে সাজেশন লিস্টের ঘনত্ব বেছে নিতে দেয়, যা multiLine ) অথবা twoLine ) হতে পারে।
  • AutocompleteUIIcon . এই প্যারামিটারটি আপনাকে প্রতিটি তালিকা আইটেমের জন্য ডিফল্ট আইকন দেখানো হবে কিনা তা বেছে নিতে দেয়।
  • theme । এই প্যারামিটারটি একটি কাস্টম থিম নির্দিষ্ট করে যা যেকোনো ডিফল্ট স্টাইল অ্যাট্রিবিউটকে ওভাররাইড করে। আপনি আপনার প্লেস অটোকমপ্লিট কম্পোনেন্টের রং, টাইপোগ্রাফি, স্পেসিং, বর্ডার এবং কর্নার কাস্টমাইজ করতে পারেন। ডিফল্ট হলো PlacesMaterialTheme । যে থিম অ্যাট্রিবিউটগুলো ওভাররাইড করা হয় না, সেগুলো ডিফল্ট স্টাইল ব্যবহার করে।

সম্পূর্ণ কোড উদাহরণটি দেখুন

স্বয়ংক্রিয় সম্পূর্ণতা (নতুন) উদাহরণ

অবস্থান সীমাবদ্ধতা এবং অবস্থান পক্ষপাত ব্যবহার করুন

অটোকমপ্লিট (নতুন) ডিফল্টরূপে সার্চ এলাকা নিয়ন্ত্রণের জন্য আইপি বায়াসিং ব্যবহার করে। আইপি বায়াসিং চালু থাকলে, এপিআই ফলাফলকে প্রভাবিত করার জন্য ডিভাইসের আইপি অ্যাড্রেস ব্যবহার করে। আপনি ঐচ্ছিকভাবে অনুসন্ধানের জন্য একটি এলাকা নির্দিষ্ট করতে locationRestriction অথবা locationBias ব্যবহার করতে পারেন, কিন্তু উভয়ই একসাথে নয়।

অবস্থান সীমাবদ্ধতা অনুসন্ধানের জন্য এলাকা নির্দিষ্ট করে। নির্দিষ্ট এলাকার বাইরের ফলাফল ফেরত দেওয়া হয় না। নিম্নলিখিত উদাহরণটি সান ফ্রান্সিসকোকে কেন্দ্র করে ৫০০০-মিটার ব্যাসার্ধের একটি বৃত্তাকার অবস্থান সীমাবদ্ধতা ব্যবহার করে অনুরোধটিকে সীমাবদ্ধ করে:

প্লেসেস সুইফট এসডিকে

let center = (37.775061, -122.419400)
let radius = 5000.0
let restriction = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionRestriction: restriction)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

সুইফট

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

উদ্দেশ্য-সি

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

লোকেশন বায়াসের ক্ষেত্রে, অবস্থানটি একটি বায়াস হিসেবে কাজ করে, যার অর্থ হলো নির্দিষ্ট এলাকার বাইরের ফলাফলসহ, নির্দিষ্ট অবস্থানের আশেপাশের ফলাফলগুলোও ফেরত দেওয়া যেতে পারে। পরবর্তী উদাহরণটি লোকেশন বায়াস ব্যবহার করার জন্য পূর্ববর্তী অনুরোধটিকে পরিবর্তন করে:

প্লেসেস সুইফট এসডিকে

let center = (37.775061, -122.419400)
let radius = 5000.0
let bias = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionBias: bias)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

সুইফট

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

উদ্দেশ্য-সি

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

ব্যবহারের ধরণ

টেবিল A ​​এবং টেবিল B- তে তালিকাভুক্ত একটি নির্দিষ্ট ধরনের ফলাফলের মধ্যে অনুরোধের ফলাফল সীমাবদ্ধ করতে types প্যারামিটারটি ব্যবহার করুন। আপনি সর্বোচ্চ পাঁচটি মানের একটি অ্যারে নির্দিষ্ট করতে পারেন। এটি বাদ দিলে, সব ধরনের ফলাফলই ফেরত দেওয়া হবে।

নিম্নলিখিত উদাহরণটিতে 'Soccer' কোয়েরি স্ট্রিং নির্দিষ্ট করা হয়েছে এবং "sporting_goods_store" ধরনের প্রতিষ্ঠানে ফলাফল সীমাবদ্ধ করতে 'types' প্যারামিটারটি ব্যবহার করা হয়েছে:

প্লেসেস সুইফট এসডিকে

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
    

সুইফট

let token = GMSAutocompleteSessionToken()

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]

let request = GMSAutocompleteRequest(query:"Soccer")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

উদ্দেশ্য-সি

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

উৎস ব্যবহার করুন

যখন আপনি অনুরোধে অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক হিসাবে নির্দিষ্ট origin প্যারামিটারটি অন্তর্ভুক্ত করেন, তখন API প্রতিক্রিয়াতে উৎস থেকে গন্তব্য পর্যন্ত সরলরেখার দূরত্ব অন্তর্ভুক্ত করে। প্রতিক্রিয়াটি দূরত্বটিকে distanceMeters হিসাবে ফেরত দেয়।

এই উদাহরণে মূলবিন্দুকে সান ফ্রান্সিসকোর কেন্দ্রে স্থাপন করা হয়েছে:

প্লেসেস সুইফট এসডিকে

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194))
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

সুইফট

let token = GMSAutocompleteSessionToken()

let origin = CLLocation(latitude: 37.7749, longitude: -122.4194)

let filter = GMSAutocompleteFilter()

filter.origin =  origin

let request = GMSAutocompleteRequest(query:"Amoeba")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))")
        }
      }
    })

উদ্দেশ্য-সি

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
      }
    }
}];

বিষয়বস্তু এবং থিম কাস্টমাইজ করুন

সুইফট

let uiCustomization = AutocompleteUICustomization(
    listDensity: .multiLine,
    listItemIcon: .noIcon,
    theme: PlacesMaterialTheme()
)

একটি স্থান স্বয়ংসম্পূর্ণ উইজেট যোগ করুন (সম্পূর্ণ কোড)

প্লেসেস সুইফট এসডিকে

struct PlaceAutocompleteDemoView: View {

  @State private var fetchedPlace: Place?
  @State private var placesError: PlacesError?
  @State private var showWidget = false

  public var body: some View {
    VStack {
      Button("Search for a place") {
        showWidget.toggle()
      }
      .placeAutocomplete(
        show: $showWidget,
        onSelection: { (autocompletePlaceSuggestion, autocompleteSessionToken) in
          Task {
            let placesClient = await PlacesClient.shared
            let fetchPlaceRequest = FetchPlaceRequest(
              placeID: autocompletePlaceSuggestion.placeID,
              placeProperties: [.displayName, .formattedAddress],
              sessionToken: autocompleteSessionToken
            )

            switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
            case .success(let place):
              print("Fetched place: \(place)")
              self.fetchedPlace = place
            case .failure(let placesError):
              print("Failed to fetch place: \(placesError)")
              self.placesError = placesError
            }
          }
        },
        onError: { placesError in
          self.placesError = placesError
        }
      )
    }
  }
}

অটোকমপ্লিট (নতুন) অপ্টিমাইজেশন

এই বিভাগে অটোকমপ্লিট (নতুন) পরিষেবাটির সর্বোত্তম ব্যবহার নিশ্চিত করার জন্য সেরা পদ্ধতিগুলো বর্ণনা করা হয়েছে।

এখানে কিছু সাধারণ নির্দেশিকা দেওয়া হলো:

  • একটি কার্যকরী ইউজার ইন্টারফেস তৈরি করার সবচেয়ে দ্রুত উপায় হলো 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) ব্যবহার করা উচিত

উইজেট বাস্তবায়ন
জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড বা আইওএস উইজেটগুলিতে সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত থাকে। এর মধ্যে নির্বাচিত প্রেডিকশনের অটোকমপ্লিট (নতুন) রিকোয়েস্ট এবং প্লেস ডিটেইলস (নতুন) রিকোয়েস্ট উভয়ই অন্তর্ভুক্ত। আপনি যেন শুধুমাত্র আপনার প্রয়োজনীয় অটোকমপ্লিট (নতুন) ডেটা ফিল্ডগুলির জন্যই রিকোয়েস্ট করেন, তা নিশ্চিত করতে fields প্যারামিটারটি নির্দিষ্ট করে দিন।

প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার অটোকমপ্লিট (নতুন) অনুরোধের সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত প্রেডিকশন সম্পর্কে স্থানের বিবরণ (নতুন) অনুরোধ করার সময়, নিম্নলিখিত প্যারামিটারগুলি অন্তর্ভুক্ত করুন:

  1. অটোকমপ্লিট (নতুন) প্রতিক্রিয়া থেকে স্থানের আইডি
  2. অটোকমপ্লিট (নতুন) অনুরোধে ব্যবহৃত সেশন টোকেন
  3. fields প্যারামিটারটি আপনার প্রয়োজনীয় অটোকমপ্লিট (নতুন) ডেটা ফিল্ডগুলি নির্দিষ্ট করে।

না, শুধু ঠিকানা ও অবস্থান প্রয়োজন।

আপনার অটোকমপ্লিট (নতুন) ব্যবহারের পারফরম্যান্সের উপর নির্ভর করে, আপনার অ্যাপ্লিকেশনের জন্য প্লেস ডিটেইলস (নতুন)-এর চেয়ে জিওকোডিং এপিআই একটি বেশি সাশ্রয়ী বিকল্প হতে পারে। প্রতিটি অ্যাপ্লিকেশনের অটোকমপ্লিট (নতুন)-এর কার্যকারিতা নির্ভর করে ব্যবহারকারীরা কী প্রবেশ করাচ্ছেন, অ্যাপ্লিকেশনটি কোথায় ব্যবহার করা হচ্ছে এবং পারফরম্যান্স অপ্টিমাইজেশনের সেরা অনুশীলনগুলি প্রয়োগ করা হয়েছে কিনা তার উপর।

নিম্নলিখিত প্রশ্নের উত্তর দেওয়ার জন্য, আপনার অ্যাপ্লিকেশনে একটি অটোকমপ্লিট (নতুন) প্রেডিকশন নির্বাচন করার আগে একজন ব্যবহারকারী গড়ে কতগুলি অক্ষর টাইপ করেন তা বিশ্লেষণ করুন।

আপনার ব্যবহারকারীরা কি গড়ে চার বা তার কম অনুরোধে একটি অটোকমপ্লিট (নতুন) প্রেডিকশন নির্বাচন করেন?

হ্যাঁ

সেশন টোকেন ছাড়াই প্রোগ্রাম্যাটিকভাবে অটোকমপ্লিট (নতুন) প্রয়োগ করুন এবং নির্বাচিত স্থানের পূর্বাভাসের জন্য জিওকোডিং এপিআই কল করুন।
জিওকোডিং এপিআই ঠিকানা এবং অক্ষাংশ/দ্রাঘিমাংশের স্থানাঙ্ক সরবরাহ করে। চারটি অটোকমপ্লিট রিকোয়েস্ট এবং নির্বাচিত স্থানের পূর্বাভাস সম্পর্কে একটি জিওকোডিং এপিআই কল করার খরচ , প্রতি সেশনের অটোকমপ্লিট (নতুন) খরচের চেয়ে কম।¹

আপনার ব্যবহারকারীদের আরও কম অক্ষরের মধ্যে তাদের কাঙ্ক্ষিত পূর্বাভাস পেতে সাহায্য করার জন্য পারফরম্যান্সের সেরা অনুশীলনগুলো প্রয়োগ করার কথা বিবেচনা করুন।

না

স্থানের বিবরণের (নতুন) সাথে সেশন-ভিত্তিক অটোকমপ্লিট (নতুন) ব্যবহার করুন।
যেহেতু একজন ব্যবহারকারী একটি অটোকমপ্লিট (নতুন) প্রেডিকশন নির্বাচন করার আগে আপনার প্রত্যাশিত গড় অনুরোধের সংখ্যা প্রতি-সেশন মূল্যের খরচকে ছাড়িয়ে যায়, তাই আপনার অটোকমপ্লিট (নতুন) বাস্তবায়নে প্রতি সেশনে অটোকমপ্লিট (নতুন) অনুরোধ এবং এর সাথে সম্পর্কিত প্লেস ডিটেইলস (নতুন) অনুরোধ উভয়ের জন্যই একটি সেশন টোকেন ব্যবহার করা উচিত

উইজেট বাস্তবায়ন
জাভাস্ক্রিপ্ট , অ্যান্ড্রয়েড বা আইওএস উইজেটগুলিতে সেশন ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত থাকে। এর মধ্যে নির্বাচিত প্রেডিকশনের অটোকমপ্লিট (নতুন) অনুরোধ এবং প্লেস ডিটেইলস (নতুন) অনুরোধ উভয়ই অন্তর্ভুক্ত। আপনি যেন শুধুমাত্র আপনার প্রয়োজনীয় ফিল্ডগুলোর জন্যই অনুরোধ করেন, তা নিশ্চিত করতে fields প্যারামিটারটি নির্দিষ্ট করে দিন।

প্রোগ্রাম্যাটিক বাস্তবায়ন
আপনার অটোকমপ্লিট (নতুন) অনুরোধের সাথে একটি সেশন টোকেন ব্যবহার করুন। নির্বাচিত প্রেডিকশন সম্পর্কে স্থানের বিবরণ (নতুন) অনুরোধ করার সময়, নিম্নলিখিত প্যারামিটারগুলি অন্তর্ভুক্ত করুন:

  1. অটোকমপ্লিট (নতুন) প্রতিক্রিয়া থেকে স্থানের আইডি
  2. অটোকমপ্লিট (নতুন) অনুরোধে ব্যবহৃত সেশন টোকেন
  3. 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)-কে শুধুমাত্র সেই অঞ্চলের মধ্যে থাকা ফলাফলগুলি ফেরত দিতে নির্দেশ দেয়।