নতুন জায়গা সার্চ করার ফিচারে মাইগ্রেট করুন

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

এই পৃষ্ঠায় Place ক্লাস (নতুন) এবং PlacesService (পুরনো) ভার্সনে টেক্সট-ভিত্তিক জায়গা সার্চ করার ফিচারের মধ্যে পার্থক্য ব্যাখ্যা করা হয়েছে এবং তুলনা করার জন্য কিছু কোড স্নিপেট দেওয়া হয়েছে।

পুরনো PlacesService-এ নিম্নলিখিত টেক্সট-ভিত্তিক সার্চ পদ্ধতি রয়েছে:

  • findPlaceFromQuery() পদ্ধতি যা টেক্সট কোয়েরি নেয় এবং একটি জায়গার ফলাফল দেখায় এবং জায়গার ডেটা ফিল্ডের ব্যবহার সমর্থন করে।
  • findPlaceFromPhoneNumber() পদ্ধতি যা আপনাকে ফোন নম্বর ব্যবহার করে কোনও জায়গা সার্চ করতে দেয় এবং জায়গা সংক্রান্ত ডেটা ফিল্ডের ব্যবহারকে সমর্থন করে।
  • textSearch() পদ্ধতি যা টেক্সট কোয়েরি নেয় এবং জায়গার ফলাফলের তালিকা ফেরত দেয়। textSearch() পুরনো এবং এটি জায়গার ডেটা ফিল্ডের ব্যবহার সাপোর্ট করে না।

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

Place ক্লাস ও PlacesService-এর মধ্যে জায়গা সার্চ করার পদ্ধতির কিছু প্রধান পার্থক্য নিচের সারণীতে তালিকাভুক্ত করা হয়েছে:

PlacesService (লিগ্যাসি) Place (নতুন)
findPlaceFromQuery()
findPlaceFromPhoneNumber()
searchByText()
FindPlaceFromQueryRequest
FindPlaceFromPhoneNumberRequest
SearchByTextRequest
সীমিত কোয়েরি বিকল্প। আরও বিস্তারিত কোয়েরি বিকল্প।
ফলাফল অবজেক্ট এবং google.maps.places.PlacesServiceStatus উত্তর ম্যানেজ করার জন্য কলব্যাক ব্যবহার করতে হবে। Promises ব্যবহার করে এবং অ্যাসিঙ্ক্রোনাসভাবে কাজ করে।
PlacesServiceStatus চেক করতে হবে। স্ট্যাটাস চেক করার প্রয়োজন নেই, স্ট্যান্ডার্ড এরর হ্যান্ডলিং ব্যবহার করতে পারেন। আরও জানুন।
শুধুমাত্র লোকেশন বায়াস কাজ করে। লোকেশন বায়াস ও লোকেশন সংক্রান্ত বিধিনিষেধের ক্ষেত্রে কাজ করে।
স্নেক কেস ব্যবহার করে জায়গার ডেটা ফিল্ড ফর্ম্যাট করা হয়। জায়গার ডেটা ফিল্ড ক্যামেল কেস ব্যবহার করে ফর্ম্যাট করা হয়।
একটি জায়গার ফলাফল দেখায়। সর্বাধিক ২০টি জায়গার ফলাফল দেখায়।
জায়গার ধরন এবং জায়গার ডেটা ফিল্ডের একটি নির্দিষ্ট সেটের মধ্যে সীমাবদ্ধ। নিয়মিত আপডেট করা জায়গার ধরন এবং জায়গার ডেটা ফিল্ড-এর আরও বড় সিলেকশন প্রদান করে।
textSearch()
searchByText()
উপলভ্য সব ডেটা ফিল্ড (কাজ করে এমন ফিল্ডের সাবসেট) দেখায়; নির্দিষ্ট ফিল্ডে সীমাবদ্ধ করা যায় না। শুধুমাত্র অনুরোধ করা জায়গার ডেটা ফিল্ড দেখায়।

কোডের তুলনা

এই বিভাগে, Places Service এবং Place ক্লাসের মধ্যে পার্থক্য বোঝাতে টেক্সট সার্চ পদ্ধতির কোড তুলনা করা হয়েছে। কোড স্নিপেট থেকে জানা যায় যে টেক্সট-ভিত্তিক সার্চের অনুরোধ করার জন্য প্রতিটি API-তে কোন কোড প্রয়োজন।

Places Service (লিগ্যাসি)

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

function findPlaces() {
  const request = {
    query: "Museum of Contemporary Art Australia",
    fields: ["name", "geometry"],
  };

  // Create an instance of PlacesService.
  service = new google.maps.places.PlacesService(map);

  // Make a findPlaceFromQuery request.
  service.findPlaceFromQuery(request, (results, status) => {
    let place = results[0];
    if (status === google.maps.places.PlacesServiceStatus.OK && results) {
      if (!place.geometry || !place.geometry.location) return;

      const marker = new google.maps.Marker({
        map,
        position: place.geometry.location,
      });
      map.setCenter(place.geometry.location);
    }
  });
}

আরও জানুন

টেক্সট সার্চ (নতুন)

নিম্নলিখিত কোড স্নিপেট থেকে জানা যায় যে জায়গা সার্চ করার জন্য কীভাবে searchByText() পদ্ধতি ব্যবহার করা হয়। অনুরোধটি অ্যাসিঙ্ক্রোনাস এবং স্ট্যাটাস চেক করার প্রয়োজন নেই (স্ট্যান্ডার্ড এরর হ্যান্ডলিং ব্যবহার করা যেতে পারে)। এই উদাহরণে, অনুরোধে ৮-এর maxResultCount অন্তর্ভুক্ত (মান অবশ্যই ১ থেকে ২০-এর মধ্যে হতে হবে)। এই ফাংশনটি ফলাফলের মাধ্যমে লুপ করে এবং মার্কারের অবস্থানের উপর ভিত্তি করে ম্যাপ বাউন্ড অ্যাডজাস্ট করে প্রতিটির জন্য একটি মার্কার যোগ করে। যেহেতু searchByText() পদ্ধতি await অপারেটর ব্যবহার করে, তাই এটি শুধুমাত্র async ফাংশনের মধ্যে ব্যবহার করা যেতে পারে।

async function findPlaces() {
  // Define a request.
  // The `fields` property is required; all others are optional.
  const request = {
    fields: ["displayName", "location", "businessStatus"],
    textQuery: "Tacos in Mountain View",
    includedType: "restaurant",
    locationBias: { lat: 37.4161493, lng: -122.0812166 },
    isOpenNow: true,
    language: "en-US",
    maxResultCount: 8,
    minRating: 3.2,
    region: "us",
    useStrictTypeFiltering: false,
  };

  // Call searchByText passing the request.
  const { places } = await google.maps.places.Place.searchByText(request);

  // Add a marker for each result.
  if (places.length) {
    const bounds = new google.maps.LatLngBounds();

    places.forEach((place) => {
      const markerView = new google.maps.marker.AdvancedMarkerElement({
        map,
        position: place.location,
        title: place.displayName,
      });

      bounds.extend(place.location);
      console.log(place);
    });
    map.fitBounds(bounds);
  } else {
    console.log("No results");
  }
}

searchByText() পদ্ধতিটি আগের ভার্সনের তুলনায় আরও অনেক অনুরোধের বিকল্প সমর্থন করে, যার মধ্যে রয়েছে:

  • includedType যা আপনাকে নির্দিষ্ট কোনও জায়গার ধরন অনুযায়ী সার্চ সীমাবদ্ধ করতে দেয়।
  • isOpenNow যা আপনাকে সার্চ সীমাবদ্ধ করতে দেয় যাতে শুধুমাত্র খোলা আছে এমন জায়গা দেখানো হয়।
  • minRating যা আপনাকে নির্দিষ্ট সীমার নিচে ফলাফল ফিল্টার করতে দেয় (যেমন, শুধুমাত্র তিন বা তার বেশি স্টার সহ জায়গাগুলি দেখায়)।
  • locationRestriction যা নির্দিষ্ট লোকেশনের বাইরের ফলাফল বাদ দেয় (locationBias-ও কাজ করে)।

আরও জানুন