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

প্ল্যাটফর্ম নির্বাচন করুন: Android iOS জাভাস্ক্রিপ্ট ওয়েব পরিষেবা

ইউরোপিয়ান ইকোনমিক এরিয়া (EEA) ডেভেলপার

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

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

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

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

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

আপনি দুটি প্রধান উপায়ে আপনার অ্যাপে স্বয়ংসম্পূর্ণ (নতুন) কার্যকারিতা সংহত করতে পারেন:

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

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

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

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

স্থান সুইফট SDK সংস্করণ

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

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

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

স্থান সুইফট SDK

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))")
        }
      }
    })

উদ্দেশ্য-C

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 : নির্দিষ্ট নাম এবং দ্ব্যর্থহীন পাঠ্য, যেমন শহর বা অঞ্চল।

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

প্রশ্ন

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

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

সেশন টোকেন

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

ঐচ্ছিক স্বয়ংসম্পূর্ণ ফিল্টার পরামিতি

প্রকার

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

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

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

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

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

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

স্থান সুইফট SDK

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

সুইফট

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

উদ্দেশ্য-C

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

দেশ

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

স্থান সুইফট SDK

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

সুইফট

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

উদ্দেশ্য-C

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-এর চেয়ে বেশি মান নির্ধারণ করতে হবে। অন্যথায়, অনুরোধ কোন ফলাফল প্রদান করে.

যেমন:

স্থান সুইফট SDK

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)

উদ্দেশ্য-C

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 ডিগ্রি এবং high.longitude = 180 ডিগ্রি হলে, ভিউপোর্টে সমস্ত দ্রাঘিমাংশ অন্তর্ভুক্ত থাকে।
  • low.longitude = 180 ডিগ্রি এবং high.longitude = -180 ডিগ্রি হলে, দ্রাঘিমাংশের পরিসর খালি।

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

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

স্থান সুইফট SDK

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)

উদ্দেশ্য-C

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 হিসাবে ফিরে এসেছে)। যদি এই মানটি বাদ দেওয়া হয়, সরল-রেখার দূরত্ব ফেরত দেওয়া হবে না। অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক হিসাবে নির্দিষ্ট করা আবশ্যক:

স্থান সুইফট SDK

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

সুইফট

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

উদ্দেশ্য-C

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 ত্রুটি প্রদান করে৷ প্যারামিটার প্রযোজ্য আইনের উপর ভিত্তি করে ফলাফলকে প্রভাবিত করতে পারে।

PureServiceAreaBusinesses অন্তর্ভুক্ত করা উচিত

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

যেমন:

স্থান সুইফট SDK

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

সুইফট

let filter = AutocompleteFilter()
filter.shouldIncludePureServiceAreaBusinesses = true

উদ্দেশ্য-C

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

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

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

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

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

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

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

স্বয়ংসম্পূর্ণ উইজেট পরামিতি রাখুন

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

প্রদর্শন

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

স্বয়ংসম্পূর্ণ ইউআইসি কাস্টমাইজেশন

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

  • AutocompleteListDensity ঘনত্ব। এই প্যারামিটারটি আপনাকে সাজেশন তালিকার ঘনত্ব বেছে নিতে দেয়, হয় multiLine বা twoLine
  • AutocompleteUIIcon । এই পরামিতি আপনাকে প্রতিটি তালিকা আইটেমের জন্য ডিফল্ট আইকন দেখাতে হবে কিনা তা চয়ন করতে দেয়।

উপর নির্বাচন

একটি স্থান নির্বাচন করা হলে চালানোর বন্ধ.

onError

একটি ত্রুটি ঘটলে চালানোর বন্ধ. একটি ত্রুটি ঘটলে একটি PlacesError পাস করা হবে৷

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

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

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

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

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

স্থান সুইফট SDK

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))")
        }
      }
    })

উদ্দেশ্য-C

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.
    }
  }
}];

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

স্থান সুইফট SDK

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))")
        }
      }
    })

উদ্দেশ্য-C

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

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

স্থান সুইফট SDK

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))")
        }
      }
    })

উদ্দেশ্য-C

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 হিসাবে প্রদান করে।

এই উদাহরণটি সান ফ্রান্সিসকোর কেন্দ্রে উত্স সেট করে:

স্থান সুইফট SDK

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))")
        }
      }
    })

উদ্দেশ্য-C

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.
      }
    }
}];

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

স্থান সুইফট SDK

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