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