নতুন Nearby Search-এ মাইগ্রেট করা

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

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

  • পুরনো PlacesService-এ nearbySearch() পদ্ধতি আছে, যা আপনাকে কীওয়ার্ড বা ধরন অনুযায়ী নির্দিষ্ট এলাকার মধ্যে জায়গা সার্চ করতে দেয়।
  • Place ক্লাসে একটি searchNearby() পদ্ধতি রয়েছে যা আপনাকে আরও বেশি নমনীয়তার জন্য স্থানের ডেটা ফিল্ড এবং স্থানের প্রকারের একটি প্রসারিত নির্বাচন ব্যবহার করে স্থানের প্রকার অনুসারে একটি নির্দিষ্ট এলাকার মধ্যে স্থানগুলি অনুসন্ধান করতে দেয়।

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

PlacesService (লিগ্যাসি) Place (নতুন)
nearbySearch()
searchNearby()
PlaceSearchRequest SearchNearbyRequest
ফলাফল অবজেক্ট এবং google.maps.places.PlacesServiceStatus উত্তর ম্যানেজ করার জন্য কলব্যাক ব্যবহার করতে হবে। Promises ব্যবহার করে এবং অ্যাসিঙ্ক্রোনাসভাবে কাজ করে।
PlacesServiceStatus চেক করতে হবে। স্ট্যাটাস চেক করার প্রয়োজন নেই, স্ট্যান্ডার্ড এরর হ্যান্ডলিং ব্যবহার করতে পারেন। আরও জানুন।
শুধুমাত্র লোকেশন বায়াস কাজ করে। লোকেশন বায়াস ও লোকেশন সংক্রান্ত বিধিনিষেধের ক্ষেত্রে কাজ করে।
উপলভ্য সব ডেটা ফিল্ড (কাজ করে এমন ফিল্ডের সাবসেট) ফিরিয়ে দেয়; নির্দিষ্ট ফিল্ডে সীমাবদ্ধ করা যায় না। শুধুমাত্র অনুরোধ করা জায়গার ডেটা ফিল্ড রিটার্ন করে; Place ক্লাস ফিল্ডের একটি সম্প্রসারিত এবং নিয়মিত আপডেট করা সিলেকশন অফার করে।
জায়গার ধরন-এর নির্দিষ্ট সেটের মধ্যে সীমাবদ্ধ। জায়গার ধরন-এর একটি বর্ধিত এবং নিয়মিত আপডেট করা বাছাই অ্যাক্সেস করুন।
কীওয়ার্ড-এর মাধ্যমে টেক্সট-ভিত্তিক সার্চ কাজ করে। টেক্সট-ভিত্তিক সার্চ কাজ করে না, এর পরিবর্তে টেক্সট সার্চ (নতুন) ব্যবহার করুন।

কোডের তুলনা

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

নিয়ারবাই Search (লিগ্যাসি)

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

let map;
let service;

function initMap() {
  const sydney = new google.maps.LatLng(-33.867, 151.195);

  map = new google.maps.Map(document.getElementById("map"), {
    center: sydney,
    zoom: 15,
  });

  const request = {
    location: sydney,
    radius: '500',
    type: ['restaurant']
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}

// Helper function to create markers.
function createMarker(place) {
  if (!place.geometry || !place.geometry.location) return;

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

আরও জানুন

নিয়ারবাই Search (নতুন)

Nearby Search-এর নতুন ভার্সনটি নিম্নলিখিত উপায়ে তার পূর্বসূরির তুলনায় উন্নত:

  • কোন কোন জায়গার ডেটা ফিল্ড ফেরত দিতে হবে তা নির্দিষ্ট করার ক্ষমতা।
  • Promises-এর ব্যবহার যা অ্যাসিঙ্ক্রোনাস অপারেশন চালু করে।
  • PlacesService-এর স্ট্যাটাস চেক করার প্রয়োজন নেই; পরিবর্তে স্ট্যান্ডার্ড এরর হ্যান্ডলিং ব্যবহার করা যেতে পারে।

নিম্নলিখিত কোড স্নিপেট এমন একটি ফাংশন দেখায় যা রেস্তোরাঁর জন্য নিয়ারবাই Search-এর অনুরোধ করে। এই উদাহরণে দেখানো হয়েছে যে কীভাবে rankPreference বিকল্প ব্যবহার করে সার্চ ফলাফলকে জনপ্রিয়তার ভিত্তিতে র‍্যাঙ্ক করা যায় (আগের ভার্সনে rankBy বিকল্প ব্যবহার করে র‍্যাঙ্কিং নির্দিষ্ট করা হত)। যেহেতু searchNearby() পদ্ধতি await অপারেটর ব্যবহার করে, তাই এটি শুধুমাত্র async ফাংশনের মধ্যে ব্যবহার করা যেতে পারে।

async function nearbySearch() {
  // Restrict within the map viewport.
  let center = new google.maps.LatLng(52.369358, 4.889258);
  const request = {
    // Required parameters.
    fields: ["displayName", "location", "businessStatus"],
    locationRestriction: {
      center: center,
      radius: 500,
    },
    // Optional parameters.
    includedPrimaryTypes: ["restaurant"],
    maxResultCount: 5,
    rankPreference: google.maps.places.SearchNearbyRankPreference.POPULARITY,
    language: "en-US",
    region: "us",
  };

  const { places } = await google.maps.places.Place.searchNearby(request);

  if (places.length) {
    console.log(places);

    // Create a new bounds, which will be extended with each result.
    const bounds = new google.maps.LatLngBounds();

    // Loop through and get all the results.
    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");
  }
}

আরও জানুন