পাঠ্য অনুসন্ধান (নতুন)

একটি পাঠ্য অনুসন্ধান একটি স্ট্রিংয়ের উপর ভিত্তি করে স্থানগুলির একটি সেট সম্পর্কে তথ্য প্রদান করে। উদাহরণস্বরূপ, "নিউ ইয়র্কের পিৎজা", "অটোয়ার কাছে জুতার দোকান", বা "123 মেইন স্ট্রিট"। পরিষেবাটি পাঠ্য স্ট্রিংয়ের সাথে মেলে এমন স্থানগুলির একটি তালিকা এবং যে কোনও সেট অবস্থানের পক্ষপাতের সাথে প্রতিক্রিয়া জানায়৷

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

"10 হাই স্ট্রিট, ইউকে" বা "123 মেইন স্ট্রিট, ইউএস" ইউকেতে একাধিক "হাই স্ট্রিট"; মার্কিন যুক্তরাষ্ট্রে একাধিক "মেইন স্ট্রিট"। একটি অবস্থান সীমাবদ্ধতা সেট না করা পর্যন্ত কোয়েরি পছন্দসই ফলাফল দেয় না।
"চেইন রেস্টুরেন্ট নিউ ইয়র্ক" নিউ ইয়র্কে একাধিক "চেইন রেস্টুরেন্ট" অবস্থান; কোন রাস্তার ঠিকানা এমনকি রাস্তার নামও নেই।
"10 হাই স্ট্রিট, এসচার ইউকে" বা "123 মেইন স্ট্রিট, প্লেস্যান্টন ইউএস" যুক্তরাজ্যের এসচার শহরে একটি মাত্র "হাই স্ট্রিট"; শুধুমাত্র একটি "মেইন স্ট্রীট" মার্কিন শহর প্লেস্যান্টন CA.
"অনন্য রেস্তোরাঁর নাম নিউ ইয়র্ক" নিউইয়র্কে এই নামের একটি মাত্র স্থাপনা; কোন রাস্তার ঠিকানা পার্থক্য প্রয়োজন.
"নিউ ইয়র্কের পিৎজা রেস্টুরেন্ট" এই ক্যোয়ারীতে এর অবস্থান সীমাবদ্ধতা রয়েছে এবং "পিৎজা রেস্তোরাঁ" হল একটি সুনির্দিষ্ট স্থানের ধরন৷ এটি একাধিক ফলাফল প্রদান করে।
"+1 514-670-8700"

এই প্রশ্নটিতে একটি ফোন নম্বর রয়েছে৷ এটি সেই ফোন নম্বরের সাথে যুক্ত স্থানগুলির জন্য একাধিক ফলাফল প্রদান করে৷

পাঠ্য অনুসন্ধানের মাধ্যমে স্থানগুলির একটি তালিকা পান

GMSPlacesClient searchByTextWithRequest: , একটি GMSPlaceSearchByTextRequest অবজেক্ট পাস করে যা অনুরোধের পরামিতি এবং একটি কলব্যাক পদ্ধতি সংজ্ঞায়িত করে, GMSPlaceSearchByTextResultCallback টাইপ , প্রতিক্রিয়া পরিচালনা করতে কল করে একটি পাঠ্য অনুসন্ধানের অনুরোধ করুন৷

GMSPlaceSearchByTextRequest অবজেক্ট অনুরোধের জন্য প্রয়োজনীয় এবং ঐচ্ছিক পরামিতিগুলি নির্দিষ্ট করে। প্রয়োজনীয় পরামিতি অন্তর্ভুক্ত:

  • GMSPlace অবজেক্টে ফিল্ডের তালিকা, যাকে ফিল্ড মাস্কও বলা হয়, যেমন GMSPlaceProperty দ্বারা সংজ্ঞায়িত করা হয়েছে। আপনি যদি ক্ষেত্র তালিকায় অন্তত একটি ক্ষেত্র নির্দিষ্ট না করেন, অথবা যদি আপনি ক্ষেত্র তালিকা বাদ দেন, তাহলে কলটি একটি ত্রুটি প্রদান করে৷
  • টেক্সট কোয়েরি

এই উদাহরণ টেক্সট সার্চ রিকোয়েস্টটি নির্দিষ্ট করে যে উত্তর GMSPlace অবজেক্টে সার্চের ফলাফলে প্রতিটি GMSPlace অবজেক্টের জন্য জায়গার নাম এবং জায়গার আইডি থাকে। এটি শুধুমাত্র "রেস্তোরাঁ" টাইপের রিটার্ন স্থানগুলিতে প্রতিক্রিয়া ফিল্টার করে।

সুইফট

// Create the GMSPlaceSearchByTextRequest object.
let placeProperties: [GMSPlaceProperty] = [GMSPlacePropertyName, GMSPlacePropertyPlaceID];
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York" placeProperties:placeProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
request.locationRestriction = GMSPlaceRectangularLocationOption(
      CLLocationCoordinate2D(latitude: 20, longitude: 30),
      CLLocationCoordinate2D(latitude: 40, longitude: 50)
)

// Array to hold the places in the response
placeResults = [];

let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in
  guard let self, error == nil else {
    if let error {
      print(error.localizedDescription)
    }
    return
  }
  guard let results = results as? [GMSPlace] else {
    return
  }
  self.placeResults = results
}

GMSPlacesClient.shared().searchByTextWithRequest(with: request, callback: callback)

উদ্দেশ্য গ

// Create the GMSPlaceSearchByTextRequest object.
GMSPlaceSearchByTextRequest *request =
    [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]];
request.isOpenNow = YES;
request.includedType = @"restaurant";
request.maxResultCount = 5;
request.minRating = 3.5;
request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance;
request.isStrictTypeFiltering = YES;
request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ];
request.locationRestriction = GMSPlaceRectangularLocationOption(
    CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50));
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.0);

// Array to hold the places in the response
_placeResults = [NSArray array];

// Create the GMSPlaceSearchByTextRequest object.
[_placesClient searchByTextWithRequest:request
    callback:^(NSArray<GMSPlace *> _Nullable placeResults, NSError * _Nullable error) {
  if (placeResults.count > 0) {
      // Get list of places.
      _placeResults = placeResults;
  }
}];

GooglePlacesSwift

let restriction = RectangularLocationRestriction(
      northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30),
      southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50)
)
let searchByTextRequest = SearchByTextRequest(
        textQuery: "pizza in New York",
        placeProperties: [ .name, .placeID ],
        locationRestriction: restriction,
        includedType: .restaurant,
        maxResultCount: 5,
        minRating: 3.5,
        priceLevels: [ .moderate, .inexpensive ],
        isStrictTypeFiltering: true
)
switch await placesClient.searchByText(with: searchByTextRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

পাঠ্য অনুসন্ধান প্রতিক্রিয়া

টেক্সট সার্চ এপিআই GMSPlace অবজেক্টের আকারে মিলের একটি অ্যারে প্রদান করে, প্রতি মিলিত জায়গায় একটি GMSPlace অবজেক্ট সহ।

ডেটা ক্ষেত্রগুলির পাশাপাশি, প্রতিক্রিয়াতে GMSPlace অবজেক্টে নিম্নলিখিত সদস্য ফাংশনগুলি রয়েছে:

  • isOpen নির্দিষ্ট সময়ে একটি জায়গা খোলা আছে কিনা তা গণনা করে।
  • isOpenAtDate একটি নির্দিষ্ট তারিখে একটি স্থান খোলা আছে কিনা তা গণনা করে৷

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

অনুসন্ধানের জন্য প্রয়োজনীয় পরামিতি নির্দিষ্ট করতে GMSPlaceSearchByTextRequest অবজেক্ট ব্যবহার করুন।

  • ক্ষেত্র তালিকা

    কোন স্থানের ডেটা বৈশিষ্ট্যগুলি ফেরত দিতে হবে তা নির্দিষ্ট করুন৷ GMSPlace বৈশিষ্ট্যগুলির একটি তালিকা পাস করুন যা ফেরত দেওয়ার জন্য ডেটা ক্ষেত্রগুলি নির্দিষ্ট করে৷ আপনি যদি ফিল্ড মাস্ক বাদ দেন, অনুরোধটি একটি ত্রুটি ফিরিয়ে দেবে।

    আপনি অপ্রয়োজনীয় ডেটার অনুরোধ করবেন না তা নিশ্চিত করার জন্য ক্ষেত্র তালিকাগুলি একটি ভাল নকশা অনুশীলন, যা অপ্রয়োজনীয় প্রক্রিয়াকরণের সময় এবং বিলিং চার্জ এড়াতে সহায়তা করে।

    নিম্নলিখিত ক্ষেত্রগুলির মধ্যে এক বা একাধিক নির্দিষ্ট করুন:

    • নিম্নলিখিত ক্ষেত্রগুলি পাঠ্য অনুসন্ধানকে ট্রিগার করে (শুধুমাত্র ID) SKU :

      GMSPlacePropertyPlaceID , GMSPlacePropertyName
    • নিম্নলিখিত ক্ষেত্রগুলি পাঠ্য অনুসন্ধান (বেসিক) SKU ট্রিগার করে:

      GMSPlacePropertyAddressComponents , GMSPlacePropertyBusinessStatus GMSPlacePropertyTypes , GMSPlacePropertyFormattedAddress , GMSPlacePropertyIconBackgroundColor , GMSPlacePropertyIconImageURL , GMSPlacePropertyCoordinate de , GMSPlacePropertyPhotos , GMSPlacePropertyPlusCode , GMSPlacePropertyViewport , GMSPlacePropertyWheelchairAccessibleEntrance GMSPlacePropertyUTCOffsetMinutes Entrance
    • নিম্নলিখিত ক্ষেত্রগুলি পাঠ্য অনুসন্ধান (উন্নত) SKU ট্রিগার করে:

      GMSPlacePropertyCurrentOpeningHours , GMSPlacePropertySecondaryOpeningHours Hours , GMSPlacePropertyPhoneNumber , GMSPlacePropertyPriceLevel , GMSPlacePropertyRating , GMSPlacePropertyOpeningHours , GMSPlacePropertyUserRatingsTotal , GMSPlacePropertyWebsite
    • নিম্নলিখিত ক্ষেত্রগুলি পাঠ্য অনুসন্ধান (পছন্দের) SKU ট্রিগার করে:

      GMSPlacePropertyCurbsidePickup , GMSPlacePropertyDelivery , GMSPlacePropertyDineIn , GMSPlacePropertyEditorialSummary , GMSPlacePropertyReservable , GMSPlacePropertyReviews , GMSPlacePropertyServesBeer , GMSPlacePropertyServesBreakfast , GMSPlacePropertyServesBrunch , GMSPlacePropertyServesDinner , GMSPlacePropertyServesLunch GMSPlacePropertyTakeout Food , GMSPlacePropertyServesVegetarianFood , GMSPlacePropertyServesWine
  • textQuery

    টেক্সট স্ট্রিং যার উপর অনুসন্ধান করতে হবে, উদাহরণস্বরূপ: "রেস্তোরাঁ", "123 প্রধান রাস্তা", বা "সান ফ্রান্সিসকোতে দেখার সেরা জায়গা"।

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

অনুসন্ধানের জন্য ঐচ্ছিক পরামিতি নির্দিষ্ট করতে GMSPlaceSearchByTextRequest অবজেক্ট ব্যবহার করুন।

  • অন্তর্ভুক্ত প্রকার

    সারণি A দ্বারা সংজ্ঞায়িত নির্দিষ্ট প্রকারের সাথে মেলে এমন জায়গায় ফলাফলগুলিকে সীমাবদ্ধ করে৷ শুধুমাত্র একটি প্রকার নির্দিষ্ট করা যেতে পারে। উদাহরণ স্বরূপ:

    • request.includedType = "bar"
    • request.includedType = "pharmacy"
  • এখন খুলুন

    true হলে, ক্যোয়ারী পাঠানোর সময় ব্যবসার জন্য উন্মুক্ত শুধুমাত্র সেই জায়গাগুলি ফেরত দিন। false হলে, খোলা অবস্থা নির্বিশেষে সমস্ত ব্যবসা ফেরত দিন। Google Places ডাটাবেসে খোলার সময় নির্দিষ্ট করে না এমন জায়গাগুলি ফেরত দেওয়া হবে যদি আপনি এই প্যারামিটারটিকে false সেট করেন।

  • isStrictTypeFiltering

    includeType প্যারামিটারের সাথে ব্যবহৃত হয়। true সেট করা হলে, শুধুমাত্র includeType দ্বারা নির্দিষ্ট করা নির্দিষ্ট প্রকারের সাথে মেলে এমন স্থানগুলি ফেরত দেওয়া হয়। মিথ্যা হলে, ডিফল্ট, প্রতিক্রিয়াতে এমন স্থান থাকতে পারে যা নির্দিষ্ট প্রকারের সাথে মেলে না।

  • অবস্থান পক্ষপাত

    অনুসন্ধান করার জন্য একটি এলাকা নির্দিষ্ট করে। এই অবস্থানটি একটি পক্ষপাত হিসাবে কাজ করে যার অর্থ নির্দিষ্ট স্থানের আশেপাশের ফলাফলগুলি নির্দিষ্ট এলাকার বাইরের ফলাফল সহ ফেরত দেওয়া যেতে পারে৷

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

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

    • একটি বৃত্তকে কেন্দ্র বিন্দু এবং মিটারে ব্যাসার্ধ দ্বারা সংজ্ঞায়িত করা হয়। ব্যাসার্ধ অবশ্যই 0.0 এবং 50000.0 এর মধ্যে হতে হবে। ডিফল্ট ব্যাসার্ধ হল 0.0। উদাহরণ স্বরূপ:

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(latitude: 20, longitude: 30), radius: 2.0)
      
    • একটি আয়তক্ষেত্র হল একটি অক্ষাংশ-দ্রাঘিমাংশের ভিউপোর্ট, যা দুটি তির্যকভাবে বিপরীত নিম্ন এবং উচ্চ বিন্দু হিসাবে উপস্থাপিত হয়। নিম্ন বিন্দুটি আয়তক্ষেত্রের দক্ষিণ-পশ্চিম কোণটিকে চিহ্নিত করে এবং উচ্চ বিন্দুটি আয়তক্ষেত্রের উত্তর-পূর্ব কোণকে প্রতিনিধিত্ব করে।

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

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

    অনুসন্ধান করার জন্য একটি এলাকা নির্দিষ্ট করে। নির্দিষ্ট এলাকার বাইরে ফলাফল ফেরত দেওয়া হয় না. একটি আয়তক্ষেত্রাকার ভিউপোর্ট হিসাবে অঞ্চলটি নির্দিষ্ট করুন। ভিউপোর্ট সংজ্ঞায়িত করার তথ্যের জন্য locationBias বিবরণ দেখুন।

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

  • maxResultCount

    ফেরত দেওয়ার জন্য সর্বাধিক সংখ্যক স্থানের ফলাফল নির্দিষ্ট করে। 1 এবং 20 এর মধ্যে হতে হবে (ডিফল্ট) অন্তর্ভুক্ত।

  • মিন রেটিং

    ফলাফল শুধুমাত্র তাদের জন্য সীমাবদ্ধ করে যাদের গড় ব্যবহারকারী রেটিং এই সীমার চেয়ে বেশি বা সমান। 0.5 এর বৃদ্ধিতে মান অবশ্যই 0.0 এবং 5.0 (অন্তর্ভুক্ত) এর মধ্যে হতে হবে। উদাহরণস্বরূপ: 0, 0.5, 1.0, ... , 5.0 সহ। মানগুলি নিকটতম 0.5 পর্যন্ত রাউন্ড করা হয়েছে৷ উদাহরণস্বরূপ, 0.6 এর মান 1.0 এর কম রেটিং সহ সমস্ত ফলাফলকে সরিয়ে দেয়।

  • মূল্যস্তর

    নির্দিষ্ট মূল্য স্তরে চিহ্নিত স্থানগুলিতে অনুসন্ধান সীমাবদ্ধ করুন৷ ডিফল্ট হল সমস্ত মূল্য স্তর নির্বাচন করা।

    PriceLevel দ্বারা সংজ্ঞায়িত এক বা একাধিক মানগুলির একটি অ্যারে নির্দিষ্ট করুন৷

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

    request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
  • র‍্যাঙ্ক পছন্দ

    প্রশ্নের প্রকারের উপর ভিত্তি করে প্রতিক্রিয়াতে ফলাফলগুলিকে কীভাবে স্থান দেওয়া হয় তা নির্দিষ্ট করে:

    • "নিউ ইয়র্ক সিটির রেস্তোরাঁ" এর মতো একটি সুনির্দিষ্ট প্রশ্নের জন্য, .relevance (অনুসন্ধান প্রাসঙ্গিকতার দ্বারা র্যাঙ্ক ফলাফল) ডিফল্ট। আপনি .relevance বা .distancerankPreference সেট করতে পারেন (দূরত্ব অনুসারে রেঙ্ক ফলাফল)।
    • "মাউন্টেন ভিউ, CA"-এর মতো একটি অ-শ্রেণীগত প্রশ্নের জন্য, আমরা সুপারিশ করছি যে আপনি rankPreference সেট না করে ছেড়ে দিন।
  • অঞ্চল কোড

    উত্তর ফর্ম্যাট করতে ব্যবহৃত অঞ্চল কোড, একটি দুই-অক্ষরের CLDR কোড মান হিসাবে নির্দিষ্ট করা হয়েছে। এই পরামিতি অনুসন্ধান ফলাফলের উপর একটি পক্ষপাতী প্রভাব থাকতে পারে। এর কোন পূর্ব মূল্য নেই।

    উত্তরে ঠিকানা ক্ষেত্রের দেশের নাম যদি অঞ্চল কোডের সাথে মেলে, তাহলে ঠিকানা থেকে দেশের কোড বাদ দেওয়া হয়।

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

আপনার অ্যাপে বৈশিষ্ট্য প্রদর্শন করুন

যখন আপনার অ্যাপ GMSPlacesClient থেকে প্রাপ্ত তথ্য প্রদর্শন করে, যেমন ফটো এবং রিভিউ, অ্যাপটিকে অবশ্যই প্রয়োজনীয় বৈশিষ্ট্যগুলিও প্রদর্শন করতে হবে।

উদাহরণস্বরূপ, GMSPlacesClient অবজেক্টের reviews সম্পত্তি পাঁচটি পর্যন্ত GMSPlaceReview অবজেক্টের একটি অ্যারে ধারণ করে। প্রতিটি GMSPlaceReview অবজেক্টে অ্যাট্রিবিউশন এবং লেখক অ্যাট্রিবিউশন থাকতে পারে। আপনি যদি আপনার অ্যাপে পর্যালোচনা প্রদর্শন করেন, তাহলে আপনাকে অবশ্যই কোনো অ্যাট্রিবিউশন বা লেখকের অ্যাট্রিবিউশনও প্রদর্শন করতে হবে।

আরও তথ্যের জন্য, বৈশিষ্ট্যের ডকুমেন্টেশন দেখুন।