এই পৃষ্ঠাটি Place ক্লাস (নতুন) এবং PlacesService (লিগেসি) -এ টেক্সট-ভিত্তিক প্লেস সার্চ বৈশিষ্ট্যের মধ্যে পার্থক্য ব্যাখ্যা করে এবং তুলনার জন্য কিছু কোড স্নিপেট প্রদান করে।
লিগ্যাসি PlacesService নিম্নলিখিত টেক্সট-ভিত্তিক অনুসন্ধান পদ্ধতি রয়েছে:
-
findPlaceFromQuery()পদ্ধতি যা একটি টেক্সট কোয়েরি নেয় এবং একটি একক স্থান ফলাফল প্রদান করে এবং স্থান ডেটা ক্ষেত্র ব্যবহার সমর্থন করে। -
findPlaceFromPhoneNumber()পদ্ধতি যা আপনাকে ফোন নম্বর ব্যবহার করে একটি স্থান অনুসন্ধান করতে দেয় এবং স্থান ডেটা ক্ষেত্র ব্যবহার সমর্থন করে। -
textSearch()পদ্ধতি যা একটি টেক্সট কোয়েরি নেয় এবং স্থানের ফলাফলের একটি তালিকা প্রদান করে।textSearch()পুরানো, এবং স্থানের ডেটা ফিল্ডের ব্যবহার সমর্থন করে না।
নতুন Place ক্লাসটি Place.searchByText() পদ্ধতিটি অফার করে, যা আপনাকে টেক্সট কোয়েরি বা ফোন নম্বর ব্যবহার করে স্থান অনুসন্ধান করতে দেয় এবং নিয়মিত আপডেট হওয়া স্থান ডেটা ক্ষেত্র এবং স্থানের প্রকারের একটি বর্ধিত নির্বাচন ব্যবহার করে আপনার অনুসন্ধানগুলি কাস্টমাইজ করতে দেয়।
নিম্নলিখিত টেবিলে Place ক্লাস এবং PlacesService মধ্যে স্থান অনুসন্ধান পদ্ধতির কিছু প্রধান পার্থক্য তালিকাভুক্ত করা হয়েছে:
PlacesService (লিগ্যাসি) | Place (নতুন) |
|---|---|
findPlaceFromQuery()findPlaceFromPhoneNumber() | searchByText() |
FindPlaceFromQueryRequestFindPlaceFromPhoneNumberRequest | SearchByTextRequest |
| সীমিত ক্যোয়ারী বিকল্প। | আরও বিস্তৃত ক্যোয়ারী বিকল্প। |
ফলাফল অবজেক্ট এবং google.maps.places.PlacesServiceStatus প্রতিক্রিয়া পরিচালনা করার জন্য একটি কলব্যাক ব্যবহার প্রয়োজন। | প্রতিশ্রুতি ব্যবহার করে এবং অ্যাসিঙ্ক্রোনাসভাবে কাজ করে। |
একটি PlacesServiceStatus চেক প্রয়োজন। | কোনও স্ট্যাটাস চেকের প্রয়োজন নেই, স্ট্যান্ডার্ড এরর হ্যান্ডলিং ব্যবহার করা যেতে পারে। আরও জানুন । |
| শুধুমাত্র অবস্থান পক্ষপাত সমর্থন করে। | অবস্থান পক্ষপাত এবং অবস্থান সীমাবদ্ধতা সমর্থন করে। |
| প্লেস ডেটা ফিল্ডগুলি স্নেক কেস ব্যবহার করে ফর্ম্যাট করা হয়। | স্থানের ডেটা ক্ষেত্রগুলি ক্যামেল কেস ব্যবহার করে ফর্ম্যাট করা হয়। |
| একটি একক স্থানের ফলাফল প্রদান করে। | ২০টি স্থান পর্যন্ত ফলাফল প্রদান করে। |
| স্থানের ধরণ এবং স্থানের ডেটা ক্ষেত্রের একটি নির্দিষ্ট সেটের মধ্যে সীমাবদ্ধ। | নিয়মিত আপডেট হওয়া স্থানের ধরণ এবং স্থানের ডেটা ক্ষেত্রগুলির একটি বর্ধিত নির্বাচন প্রদান করে। |
textSearch() | searchByText() |
| সমস্ত উপলব্ধ ডেটা ক্ষেত্র ( সমর্থিত ক্ষেত্রগুলির একটি উপসেট ) ফেরত দেয়; নির্দিষ্ট ক্ষেত্রে সীমাবদ্ধ করা যাবে না। | শুধুমাত্র অনুরোধকৃত স্থান ডেটা ক্ষেত্রগুলি ফেরত পাঠায়। |
কোড তুলনা
এই বিভাগটি প্লেস সার্ভিস এবং প্লেস ক্লাসের মধ্যে পার্থক্যগুলি চিত্রিত করার জন্য টেক্সট অনুসন্ধান পদ্ধতির কোড তুলনা করে। কোড স্নিপেটগুলি প্রতিটি সংশ্লিষ্ট API-তে টেক্সট-ভিত্তিক অনুসন্ধান অনুরোধ করার জন্য প্রয়োজনীয় কোড দেখায়।
স্থান পরিষেবা (উত্তরাধিকার)
নিচের কোড স্নিপেটে দেখানো হয়েছে যে, কোন জায়গা অনুসন্ধানের জন্য 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() পদ্ধতি ব্যবহার করা দেখানো হয়েছে। অনুরোধটি অ্যাসিঙ্ক্রোনাস, এবং এর জন্য কোনও স্ট্যাটাস চেকের প্রয়োজন নেই (স্ট্যান্ডার্ড ত্রুটি পরিচালনা ব্যবহার করা যেতে পারে)। এই উদাহরণে, অনুরোধটিতে 8 এর একটি maxResultCount অন্তর্ভুক্ত রয়েছে (মান অবশ্যই 1 থেকে 20 এর মধ্যে হতে হবে)। এই ফাংশনটি ফলাফলের মধ্য দিয়ে লুপ করে এবং প্রতিটির জন্য একটি মার্কার যোগ করে, মার্কারগুলির অবস্থানের উপর ভিত্তি করে মানচিত্রের সীমানা সামঞ্জস্য করে। যেহেতু 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ও সমর্থিত)।
আরও জানুন
- সম্পূর্ণ উদাহরণ কোডটি দেখুন
- টেক্সট সার্চ (নতুন) এর ডকুমেন্টেশন দেখুন।
-
searchByText()রেফারেন্সটি দেখুন