এই পৃষ্ঠাটি Place ক্লাস (নতুন) এবং PlacesService (পুরানো)-তে ব্যবহৃত নিকটবর্তী অনুসন্ধানের মধ্যেকার পার্থক্য ব্যাখ্যা করে এবং তুলনার জন্য কিছু কোড স্নিপেট প্রদান করে।
- পুরোনো
PlacesServiceএকটিnearbySearch()মেথড আছে, যা আপনাকে কীওয়ার্ড বা ধরন অনুযায়ী একটি নির্দিষ্ট এলাকার মধ্যে জায়গা খুঁজতে দেয়। -
Placeক্লাসে একটিsearchNearby()মেথড আছে, যা আপনাকে আরও বেশি নমনীয়তার জন্য প্লেস ডেটা ফিল্ড এবং প্লেস টাইপের একটি বর্ধিত নির্বাচন ব্যবহার করে প্লেস টাইপ অনুযায়ী একটি নির্দিষ্ট এলাকার মধ্যে স্থান অনুসন্ধান করতে দেয়।
নিম্নলিখিত সারণিতে Place ক্লাস এবং PlacesService মধ্যে নিকটবর্তী স্থান অনুসন্ধানের পদ্ধতির কিছু প্রধান পার্থক্য তালিকাভুক্ত করা হলো:
PlacesService (লেগ্যাসি) | Place (নতুন) |
|---|---|
nearbySearch() | searchNearby() |
PlaceSearchRequest | SearchNearbyRequest |
results অবজেক্ট এবং google.maps.places.PlacesServiceStatus রেসপন্স হ্যান্ডেল করার জন্য একটি কলব্যাক ব্যবহার করা প্রয়োজন। | এটি প্রমিস ব্যবহার করে এবং অ্যাসিঙ্ক্রোনাসভাবে কাজ করে। |
PlacesServiceStatus যাচাই করা প্রয়োজন। | স্ট্যাটাস চেক করার প্রয়োজন নেই, স্ট্যান্ডার্ড এরর হ্যান্ডলিং ব্যবহার করা যেতে পারে। আরও জানুন । |
| শুধুমাত্র অবস্থানগত পক্ষপাতকে সমর্থন করে। | অবস্থানগত পক্ষপাত এবং অবস্থানগত সীমাবদ্ধতা সমর্থন করে। |
| উপলব্ধ সমস্ত ডেটা ফিল্ড ফেরত দেয় ( সমর্থিত ফিল্ডগুলোর একটি উপসেট ); এটিকে নির্দিষ্ট ফিল্ডে সীমাবদ্ধ করা যায় না। | শুধুমাত্র অনুরোধ করা স্থানের ডেটা ফিল্ডগুলো ফেরত দেয়; Place ক্লাসটি ফিল্ডের একটি বিস্তৃত এবং নিয়মিত আপডেট হওয়া তালিকা প্রদান করে। |
| একটি নির্দিষ্ট সংখ্যক স্থানের প্রকারের মধ্যে সীমাবদ্ধ। | বিভিন্ন ধরনের স্থানের এক বিস্তৃত ও নিয়মিত হালনাগাদকৃত সংগ্রহ দেখুন। |
| কীওয়ার্ড ব্যবহার করে টেক্সট-ভিত্তিক অনুসন্ধান সমর্থন করা হয়। | টেক্সট-ভিত্তিক অনুসন্ধান সমর্থিত নয়, এর পরিবর্তে টেক্সট সার্চ (নতুন) ব্যবহার করুন। |
কোড তুলনা
এই বিভাগে প্লেসেস সার্ভিস এবং প্লেস ক্লাসের মধ্যে পার্থক্য তুলে ধরতে কাছাকাছি খোঁজার মেথডগুলোর কোডের তুলনা করা হয়েছে। কোডের অংশগুলোতে দেখানো হয়েছে, একটি টেক্সট-ভিত্তিক অনুসন্ধানের অনুরোধ করার জন্য প্রতিটি এপিআই-তে কী ধরনের কোড প্রয়োজন।
নিকটবর্তী অনুসন্ধান (লেগ্যাসি)
পুরোনো Nearby 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,
});
}
আরও জানুন
কাছাকাছি অনুসন্ধান (নতুন)
নিয়ারবাই সার্চ-এর নতুন সংস্করণটি তার পূর্বসূরীর তুলনায় নিম্নলিখিত দিকগুলিতে উন্নত:
- কোন স্থানের ডেটা ফিল্ডগুলো ফেরত দেওয়া হবে তা নির্দিষ্ট করার ক্ষমতা।
- প্রমিসের ব্যবহার অ্যাসিঙ্ক্রোনাস অপারেশনকে সম্ভব করে তোলে।
-
PlacesServiceএর অবস্থা পরীক্ষা করার প্রয়োজন নেই; এর পরিবর্তে সাধারণ ত্রুটি পরিচালনা পদ্ধতি ব্যবহার করা যেতে পারে।
নিম্নলিখিত কোড স্নিপেটটি এমন একটি ফাংশন দেখায় যা রেস্তোরাঁর জন্য একটি নিকটবর্তী অনুসন্ধানের অনুরোধ করে। এই উদাহরণটি জনপ্রিয়তা অনুসারে অনুসন্ধানের ফলাফলকে র্যাঙ্ক করার জন্য 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");
}
}
আরও জানুন
- সম্পূর্ণ উদাহরণ কোডটি দেখুন
- নিকটবর্তী অনুসন্ধান (নতুন)-এর জন্য ডকুমেন্টেশন দেখুন।
-
searchNearby()রেফারেন্সটি দেখুন