কাছাকাছি অনুসন্ধান (নতুন)

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

একটি ‘নিকটবর্তী অনুসন্ধান (নতুন)’ অনুরোধ ইনপুট হিসাবে অনুসন্ধানের জন্য একটি অঞ্চল গ্রহণ করে, যা একটি বৃত্ত হিসাবে নির্দিষ্ট করা থাকে। এই বৃত্তটি তার কেন্দ্রবিন্দুর অক্ষাংশ ও দ্রাঘিমাংশ স্থানাঙ্ক এবং মিটারে পরিমাপ করা ব্যাসার্ধ দ্বারা সংজ্ঞায়িত হয়। অনুরোধটি নির্দিষ্ট অনুসন্ধান এলাকার মধ্যে মিলে যাওয়া স্থানগুলির একটি তালিকা ফেরত দেয়, যার প্রতিটি একটি Place অবজেক্ট দ্বারা উপস্থাপিত হয়।

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

কাছাকাছি অনুসন্ধান (নতুন) অনুরোধ

অনুরোধের প্যারামিটারগুলো নির্ধারণকারী একটি SearchNearbyRequest অবজেক্ট পাস করে PlacesClient.searchNearby কল করার মাধ্যমে একটি নিকটবর্তী অনুসন্ধান (নতুন) অনুরোধ করুন।

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

  • Place অবজেক্টে যে ফিল্ডগুলো ফেরত দেওয়া হবে তার তালিকা, যা ফিল্ড মাস্ক নামেও পরিচিত। যদি আপনি ফিল্ড তালিকায় অন্তত একটি ফিল্ড নির্দিষ্ট না করেন, অথবা ফিল্ড তালিকাটি বাদ দেন, তাহলে কলটি একটি ত্রুটি ফেরত দেয়।
  • অনুসন্ধান এলাকার অবস্থানগত সীমাবদ্ধতা, যা একটি অক্ষাংশ/দ্রাঘিমাংশ জোড়া এবং ব্যাসার্ধের মান হিসেবে মিটারে সংজ্ঞায়িত।

এই উদাহরণমূলক নিকটবর্তী অনুসন্ধান অনুরোধটি নির্দিষ্ট করে যে, অনুসন্ধানের ফলাফলে থাকা প্রতিটি Place অবজেক্টের জন্য রেসপন্সের Place অবজেক্টগুলোতে Place.Field.ID এবং Place.Field.DISPLAY_NAME প্লেস ফিল্ডগুলো অন্তর্ভুক্ত থাকবে। এটি রেসপন্সটিকে এমনভাবে ফিল্টার করে যাতে শুধুমাত্র "restaurant" এবং "cafe" ধরনের প্লেসগুলো ফেরত আসে, কিন্তু "pizza_restaurant" এবং "american_restaurant" ধরনের প্লেসগুলো বাদ পড়ে যায়।

// Define a list of fields to include in the response for each returned place.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);

// Define the search area as a 1000 meter diameter circle in New York, NY.
LatLng center = new LatLng(40.7580, -73.9855);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000);

// Define a list of types to include.
final List<String> includedTypes = Arrays.asList("restaurant", "cafe");
// Define a list of types to exclude.
final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant");

// Use the builder to create a SearchNearbyRequest object.
final SearchNearbyRequest searchNearbyRequest =
SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields)
    .setIncludedTypes(includedTypes)
    .setExcludedTypes(excludedTypes)
    .setMaxResultCount(10)
    .build());

// Call placesClient.searchNearby() to perform the search.
// Define a response handler to process the returned List of Place objects.
placesClient.searchNearby(searchNearbyRequest)
    .addOnSuccessListener(response -> {
      List<Place> places = response.getPlaces();
    });

কাছাকাছি অনুসন্ধান (নতুন) প্রতিক্রিয়া

SearchNearbyResponse ক্লাসটি একটি সার্চ রিকোয়েস্টের রেসপন্সকে উপস্থাপন করে। একটি SearchNearbyResponse অবজেক্টে থাকে:

  • Place অবজেক্টের একটি তালিকা যা সমস্ত মিলে যাওয়া স্থানগুলিকে প্রতিনিধিত্ব করে, যেখানে প্রতিটি মিলে যাওয়া স্থানের জন্য একটি করে Place অবজেক্ট থাকে।
  • প্রতিটি Place অবজেক্টে শুধুমাত্র অনুরোধে পাঠানো ফিল্ড তালিকা দ্বারা সংজ্ঞায়িত ফিল্ডগুলোই থাকে।

উদাহরণস্বরূপ, অনুরোধে আপনি একটি ফিল্ড তালিকা এভাবে সংজ্ঞায়িত করেছেন:

// Define a list of fields to include in the response for each returned place.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

এই ফিল্ড তালিকার অর্থ হলো, রেসপন্সের প্রতিটি Place অবজেক্টে মিলে যাওয়া প্রতিটি স্থানের শুধুমাত্র প্লেস আইডি এবং নাম থাকে। এরপর আপনি প্রতিটি Place অবজেক্টের এই ফিল্ডগুলো অ্যাক্সেস করার জন্য Place.getId() এবং Place.getName() মেথডগুলো ব্যবহার করতে পারেন।

একটি Place অবজেক্টে ডেটা অ্যাক্সেস করার আরও উদাহরণের জন্য, “Access Place object data fields” দেখুন।

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

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

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

    যখন আপনি কোনো স্থানের বিবরণ অনুরোধ করেন, তখন আপনাকে অবশ্যই সেই স্থানের জন্য Place অবজেক্টে ফিল্ড মাস্ক হিসেবে ফেরতযোগ্য ডেটা নির্দিষ্ট করতে হবে। ফিল্ড মাস্ক নির্ধারণ করতে, Place.Field থেকে SearchNearbyRequest অবজেক্টে ভ্যালুগুলোর একটি অ্যারে পাস করুন। ফিল্ড মাস্কিং একটি ভালো ডিজাইন অনুশীলন, যা নিশ্চিত করে যে আপনি অপ্রয়োজনীয় ডেটা অনুরোধ করছেন না, এবং এটি অপ্রয়োজনীয় প্রসেসিং সময় ও বিলিং চার্জ এড়াতে সাহায্য করে।

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

    • নিম্নলিখিত ফিল্ডগুলি Nearby Search Pro SKU সক্রিয় করে:

      Place.Field.ADDRESS_COMPONENTS
      Place.Field.BUSINESS_STATUS
      Place.Field.ADDRESS
      Place.Field.DISPLAY_NAME >*
      Place.Field.NAME এর পরিবর্তে এটি ব্যবহার করুন, যা এখন আর ব্যবহৃত হয় না।
      Place.Field.ICON_BACKGROUND_COLOR
      Place.Field.ICON_MASK_URL *
      Place.Field.ICON_URL এর পরিবর্তে এটি ব্যবহার করুন, যা এখন আর ব্যবহৃত হয় না।
      Place.Field.ID
      Place.Field.LAT_LNG
      Place.Field.PHOTO_METADATAS
      Place.Field.PLUS_CODE
      Place.Field.PRIMARY_TYPE
      Place.Field.PRIMARY_TYPE_DISPLAY_NAME
      Place.Field.RESOURCE_NAME
      Place.Field.TYPES
      Place.Field.UTC_OFFSET
      Place.Field.VIEWPORT
      Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
    • নিম্নলিখিত ক্ষেত্রগুলি Nearby Search Enterprise SKU সক্রিয় করে:

      Place.Field.CURRENT_OPENING_HOURS
      Place.Field.CURRENT_SECONDARY_OPENING_HOURS
      Place.Field.INTERNATIONAL_PHONE_NUMBER *
      Place.Field.PHONE_NUMBER এর পরিবর্তে এটি ব্যবহার করুন, যা এখন আর ব্যবহৃত হয় না।
      Place.Field.NATIONAL_PHONE_NUMBER
      Place.Field.OPENING_HOURS
      Place.Field.PRICE_LEVEL
      Place.Field.RATING
      Place.Field.SECONDARY_OPENING_HOURS
      Place.Field.USER_RATING_COUNT *
      Place.Field.USER_RATINGS_TOTAL এর পরিবর্তে এটি ব্যবহার করুন, যা এখন আর ব্যবহৃত হয় না।
      Place.Field.WEBSITE_URI
    • নিম্নলিখিত ফিল্ডগুলি Nearby Search Enterprise Plus SKU সক্রিয় করে:

      Place.Field.ALLOWS_DOGS
      Place.Field.CURBSIDE_PICKUP
      Place.Field.DELIVERY
      Place.Field.DINE_IN
      Place.Field.EDITORIAL_SUMMARY
      Place.Field.EV_CHARGE_OPTIONS
      Place.Field.FUEL_OPTIONS
      Place.Field.GOOD_FOR_CHILDREN
      Place.Field.GOOD_FOR_GROUPS
      Place.Field.GOOD_FOR_WATCHING_SPORTS
      Place.Field.LIVE_MUSIC
      Place.Field.MENU_FOR_CHILDREN
      Place.Field.OUTDOOR_SEATING
      Place.Field.PARKING_OPTIONS
      Place.Field.PAYMENT_OPTIONS
      Place.Field.RESERVABLE
      Place.Field.RESTROOM
      Place.Field.REVIEWS
      Place.Field.SERVES_BEER
      Place.Field.SERVES_BREAKFAST
      Place.Field.SERVES_BRUNCH
      Place.Field.SERVES_COCKTAILS
      Place.Field.SERVES_COFFEE
      Place.Field.SERVES_DESSERT
      Place.Field.SERVES_DINNER
      Place.Field.SERVES_LUNCH
      Place.Field.SERVES_VEGETARIAN_FOOD
      Place.Field.SERVES_WINE
      Place.Field.TAKEOUT

    ফিল্ড লিস্ট প্যারামিটার সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setPlaceFields() মেথডটি কল করুন।

    নিম্নলিখিত উদাহরণটি দুটি ফিল্ড মানের একটি তালিকা সংজ্ঞায়িত করে, যা নির্দিষ্ট করে যে একটি অনুরোধের মাধ্যমে ফেরত আসা Place অবজেক্টটিতে Place.Field.ID এবং Place.Field.DISPLAY_NAME ফিল্ড দুটি রয়েছে:

// Define a list of fields to include in the response for each returned place.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
  • অবস্থান সীমাবদ্ধতা

    একটি LocationRestriction অবজেক্ট, যা একটি বৃত্তাকার অঞ্চলকে অনুসন্ধানের জন্য নির্ধারণ করে। এই অঞ্চলটি একটি কেন্দ্রবিন্দু এবং মিটারে একটি ব্যাসার্ধ দ্বারা সংজ্ঞায়িত হয়। ব্যাসার্ধটি অবশ্যই 0.0-এর বেশি এবং 50000.0-এর সমান বা তার কম হতে হবে। মনে রাখতে হবে যে, খুব ছোট ব্যাসার্ধ নির্দিষ্ট করলে প্রতিক্রিয়া হিসাবে শূন্য ফলাফল ZERO_RESULTS পাওয়া যাবে।

    অবস্থান সীমাবদ্ধতার প্যারামিটার সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setLocationRestriction() মেথডটি কল করুন।

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

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

  • প্রকার এবং প্রাথমিক প্রকার

    এটি আপনাকে সার্চের ফলাফল ফিল্টার করতে ব্যবহৃত টাইপ টেবিল A ​​থেকে টাইপের একটি তালিকা নির্দিষ্ট করার সুযোগ দেয়। প্রতিটি টাইপ সীমাবদ্ধতা ক্যাটাগরিতে সর্বোচ্চ ৫০টি টাইপ নির্দিষ্ট করা যেতে পারে।

    একটি স্থানের সাথে টাইপস টেবিল A ​​থেকে শুধুমাত্র একটি প্রাথমিক প্রকার যুক্ত থাকতে পারে। উদাহরণস্বরূপ, প্রাথমিক প্রকারটি হতে পারে "mexican_restaurant" বা "steak_house" । কোনো স্থানের প্রাথমিক প্রকারের উপর ভিত্তি করে ফলাফল ফিল্টার করতে includedPrimaryTypes এবং excludedPrimaryTypes ব্যবহার করুন।

    একটি স্থানের সাথে টাইপস টেবিল A ​​থেকে একাধিক টাইপ ভ্যালুও যুক্ত থাকতে পারে। উদাহরণস্বরূপ, একটি রেস্তোরাঁর নিম্নলিখিত টাইপগুলো থাকতে পারে: "seafood_restaurant" , "restaurant" , "food" , "point_of_interest" , "establishment" । একটি স্থানের সাথে যুক্ত টাইপগুলোর তালিকা থেকে ফলাফল ফিল্টার করতে includedTypes এবং excludedTypes ব্যবহার করুন।

    যখন আপনি "restaurant" বা "hotel" এর মতো একটি সাধারণ প্রাথমিক ধরন নির্দিষ্ট করেন, তখন প্রাপ্ত উত্তরে নির্দিষ্ট করা ধরনের চেয়ে আরও সুনির্দিষ্ট প্রাথমিক ধরনের স্থানও থাকতে পারে। উদাহরণস্বরূপ, আপনি "restaurant" প্রাথমিক ধরনটি অন্তর্ভুক্ত করতে নির্দিষ্ট করলেন। সেক্ষেত্রে প্রাপ্ত উত্তরে "restaurant" প্রাথমিক ধরনের স্থান থাকতে পারে, কিন্তু এর পাশাপাশি "chinese_restaurant" বা "seafood_restaurant" এর মতো আরও সুনির্দিষ্ট প্রাথমিক ধরনের স্থানও থাকতে পারে।

    যদি কোনো অনুসন্ধানে একাধিক ধরনের সীমাবদ্ধতা নির্দিষ্ট করা থাকে, তবে শুধুমাত্র সেই স্থানগুলোই ফেরত দেওয়া হবে যেগুলো সমস্ত সীমাবদ্ধতা পূরণ করে। উদাহরণস্বরূপ, যদি আপনি includedTypes = Arrays.asList("restaurant") এবং excludedPrimaryTypes = Arrays.asList("steak_house") নির্দিষ্ট করেন, তাহলে ফেরত আসা স্থানগুলো "restaurant" সম্পর্কিত পরিষেবা প্রদান করে, কিন্তু প্রাথমিকভাবে "steak_house" হিসেবে পরিচালিত হয় না।

    includedTypes এবং excludedTypes কীভাবে ব্যবহার করতে হয় তার একটি উদাহরণের জন্য, Nearby Search (New) requests দেখুন।

    অন্তর্ভুক্ত প্রকারগুলি

    সারণি A থেকে অনুসন্ধানের জন্য স্থানের প্রকারগুলির একটি তালিকা। এই প্যারামিটারটি বাদ দেওয়া হলে, সব ধরনের স্থান ফেরত দেওয়া হবে।

    অন্তর্ভুক্ত প্রকারের প্যারামিটারটি সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setIncludedTypes() মেথডটি কল করুন।

    বাদ দেওয়া প্রকারগুলি

    টেবিল A ​​থেকে অনুসন্ধান থেকে বাদ দেওয়ার জন্য স্থানের প্রকারের একটি তালিকা।

    যদি আপনি অনুরোধে includedTypes (যেমন "school" ) এবং excludedTypes (যেমন "primary_school" ) উভয়ই উল্লেখ করেন, তাহলে প্রতিক্রিয়ায় এমন স্থানগুলি অন্তর্ভুক্ত হবে যেগুলি "school" হিসাবে শ্রেণীবদ্ধ কিন্তু "primary_school" হিসাবে নয়। প্রতিক্রিয়ায় এমন স্থানগুলি অন্তর্ভুক্ত থাকে যেগুলি includedTypes অন্তত একটির সাথে মেলে এবং excludedTypes কোনোটির সাথেই মেলে না

    যদি কোনো টাইপের মধ্যে অমিল থাকে, যেমন কোনো টাইপ includedTypes এবং excludedTypes উভয় তালিকাতেই থাকে, তাহলে একটি INVALID_REQUEST ত্রুটি ফেরত দেওয়া হয়।

    এক্সক্লুডেড টাইপস প্যারামিটার সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setExcludedTypes() মেথডটি কল করুন।

    অন্তর্ভুক্ত প্রাথমিক প্রকার

    অনুসন্ধানে অন্তর্ভুক্ত করার জন্য সারণি 'ক' থেকে প্রধান স্থান প্রকারের একটি তালিকা।

    অন্তর্ভুক্ত প্রাইমারি টাইপস প্যারামিটারটি সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setIncludedPrimaryTypes() মেথডটি কল করুন।

    বাদ দেওয়া প্রাথমিক প্রকারগুলি

    অনুসন্ধান থেকে বাদ দেওয়ার জন্য সারণি 'ক' থেকে প্রধান স্থান প্রকারের একটি তালিকা।

    যদি কোনো পরস্পরবিরোধী প্রাইমারি টাইপ থাকে, যেমন কোনো টাইপ includedPrimaryTypes এবং excludedPrimaryTypes উভয় তালিকাতেই উপস্থিত থাকে, তাহলে একটি INVALID_ARGUMENT ত্রুটি ফেরত দেওয়া হয়।

    বাদ দেওয়া প্রাথমিক প্রকারের প্যারামিটারটি সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setExcludedPrimaryTypes() মেথডটি কল করুন।

  • সর্বোচ্চ ফলাফল সংখ্যা

    ফেরত দেওয়া স্থানের ফলাফলের সর্বোচ্চ সংখ্যা নির্দিষ্ট করে। সংখ্যাটি অবশ্যই ১ থেকে ২০ (ডিফল্ট) এর মধ্যে হতে হবে।

    সর্বোচ্চ ফলাফল সংখ্যা প্যারামিটার সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setMaxResultCount() মেথডটি কল করুন।

  • পদমর্যাদা পছন্দ

    ব্যবহৃত র‍্যাঙ্কিংয়ের ধরন। এই প্যারামিটারটি বাদ দিলে, ফলাফলগুলো জনপ্রিয়তা অনুসারে র‍্যাঙ্ক করা হবে। এটি নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:

    • POPULARITY (ডিফল্ট) ফলাফলকে তাদের জনপ্রিয়তার ভিত্তিতে সাজায়।
    • DISTANCE নির্দিষ্ট অবস্থান থেকে দূরত্বের ভিত্তিতে ফলাফলগুলিকে আরোহী ক্রমে সাজায়।

    র‍্যাঙ্ক প্রেফারেন্স প্যারামিটার সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setRankPreference() মেথডটি কল করুন।

  • অঞ্চল কোড

    প্রতিক্রিয়া বিন্যাস করার জন্য ব্যবহৃত অঞ্চল কোডটি একটি দুই-অক্ষরের CLDR কোড মান হিসাবে নির্দিষ্ট করা হয়। এর কোনো ডিফল্ট মান নেই।

    রেসপন্সের FORMATTED_ADDRESS ফিল্ডের দেশের নাম যদি regionCode সাথে মিলে যায়, তাহলে FORMATTED_ADDRESS থেকে কান্ট্রি কোডটি বাদ দেওয়া হয়।

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

    রিজিওন কোড প্যারামিটার সেট করতে, SearchNearbyRequest অবজেক্টটি তৈরি করার সময় setRegionCode() মেথডটি কল করুন।

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

যখন আপনার অ্যাপ PlacesClient থেকে প্রাপ্ত তথ্য, যেমন ছবি এবং রিভিউ, প্রদর্শন করে, তখন অ্যাপটিকে অবশ্যই প্রয়োজনীয় অ্যাট্রিবিউশনও প্রদর্শন করতে হবে।

আরও তথ্যের জন্য, Android-এর জন্য Places SDK-এর নীতিমালা দেখুন।