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

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

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

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

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

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

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

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

প্রোগ্রাম্যাটিকভাবে স্থানের পূর্বাভাস পান

স্বয়ংক্রিয় (নতুন) অনুরোধ

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

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

Places Swift SDK সংস্করণ

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

API কী এবং 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.
    }
  }
}];

স্বয়ংক্রিয় (নতুন) উত্তর

Autocomplete সর্বোচ্চ পাঁচটি 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

ডিফল্টরূপে, API 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 অনুসন্ধানের জন্য একটি এলাকা নির্দিষ্ট করে। এই অবস্থানটি একটি পক্ষপাত হিসেবে কাজ করে, যার অর্থ নির্দিষ্ট স্থানের চারপাশের ফলাফলগুলি ফেরত পাঠানো যেতে পারে, নির্দিষ্ট এলাকার বাইরের ফলাফল সহ।

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

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

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

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

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

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);

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

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

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" (প্রযুক্তিগতভাবে "গ্রেট ব্রিটেন এবং উত্তর আয়ারল্যান্ডের যুক্তরাজ্য" সত্তার জন্য)।

যদি আপনি একটি অবৈধ অঞ্চল কোড উল্লেখ করেন, তাহলে 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 binding মান true তে সেট করা থাকে, তখন ব্যবহারকারীকে একটি পূর্ণ স্ক্রিন ভিউতে নিয়ে যাওয়া হবে যেখানে তারা একটি স্থান নির্বাচন করতে পারবেন। ব্যবহারকারী টাইপ করার সাথে সাথে, উইজেটটি ব্যবসা, ঠিকানা এবং আগ্রহের স্থানগুলির মতো স্থানগুলির জন্য পরামর্শ প্রদান করে। যখন ব্যবহারকারী একটি স্থান নির্বাচন করেন, তখন উইজেটটি নির্বাচিত স্থান সহ onSelection হ্যান্ডলারকে কল করে এবং পূর্ণ স্ক্রিন ভিউ বন্ধ করে দেয়।

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

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

প্রদর্শনী

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

নির্বাচনের উপর

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

অনএরর

কোনও ত্রুটি ঘটলে বন্ধ করার পদ্ধতিটি চালানো হবে। কোনও ত্রুটি ঘটলে PlacesError পাস করা হবে।

কন্টেন্ট এবং থিম কাস্টমাইজেশন

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

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

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

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

locationRestriction এবং locationBias ব্যবহার করুন

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

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

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

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 তে তালিকাভুক্ত একটি নির্দিষ্ট ধরণের অনুরোধ থেকে ফলাফল সীমাবদ্ধ করতে টাইপস প্যারামিটার ব্যবহার করুন। আপনি পাঁচটি পর্যন্ত মানের একটি অ্যারে নির্দিষ্ট করতে পারেন। বাদ দেওয়া হলে, সমস্ত টাইপ ফেরত দেওয়া হবে।

নিচের উদাহরণটি "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
        }
      )
    }
  }
}