इस पेज पर, Place
क्लास (नया) और PlacesService
(लेगसी) में इस्तेमाल की गई आस-पास की जगहें खोजने की सुविधा के बीच अंतर बताया गया है. साथ ही, तुलना करने के लिए कोड के कुछ स्निपेट दिए गए हैं.
- लेगसी
PlacesService
मेंnearbySearch()
तरीका है. इसकी मदद से, किसी इलाके में मौजूद जगहों को कीवर्ड या टाइप के हिसाब से खोजा जा सकता है. Place
क्लास मेंsearchNearby()
तरीका होता है. इसकी मदद से, किसी इलाके में मौजूद जगहों को जगह के टाइप के हिसाब से खोजा जा सकता है. इसके लिए, जगह की जानकारी के डेटा फ़ील्ड और जगह के टाइप के ज़्यादा विकल्पों का इस्तेमाल किया जाता है, ताकि आपको ज़्यादा सुविधा मिल सके.
यहां दी गई टेबल में, Place
क्लास और PlacesService
के बीच, आस-पास की जगहें खोजने के तरीकों के कुछ मुख्य अंतर बताए गए हैं:
PlacesService (लेगसी) |
Place (नया) |
---|---|
nearbySearch() |
searchNearby()
|
PlaceSearchRequest |
SearchNearbyRequest |
इसके लिए, नतीजों के ऑब्जेक्ट और google.maps.places.PlacesServiceStatus रिस्पॉन्स को मैनेज करने के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है. |
यह Promises का इस्तेमाल करता है और एसिंक्रोनस तरीके से काम करता है. |
इसके लिए, PlacesServiceStatus की जांच करना ज़रूरी है. |
स्टेटस की जांच करने की ज़रूरत नहीं है. स्टैंडर्ड गड़बड़ी को ठीक करने की सुविधा का इस्तेमाल किया जा सकता है. ज़्यादा जानें. |
इसमें सिर्फ़ लोकेशन के हिसाब से खोज के नतीजों को बेहतर बनाने की सुविधा काम करती है. | इसमें जगह के हिसाब से खोज के नतीजों में बदलाव करने और खोज के नतीजों को किसी जगह तक सीमित रखने की सुविधा काम करती है. |
इससे सभी उपलब्ध डेटा फ़ील्ड (सपोर्ट किए गए फ़ील्ड का सबसेट) दिखते हैं; इसे खास फ़ील्ड तक सीमित नहीं किया जा सकता. | यह सिर्फ़ अनुरोध किए गए जगह के डेटा फ़ील्ड दिखाता है. Place क्लास में, फ़ील्ड का बड़ा और नियमित तौर पर अपडेट किया जाने वाला कलेक्शन उपलब्ध होता है. |
यह जगह के टाइप के तय किए गए सेट तक सीमित है. | जगह के टाइप के ज़्यादा विकल्पों का ऐक्सेस पाएं. साथ ही, इन विकल्पों को नियमित तौर पर अपडेट किया जाता है. |
कीवर्ड की मदद से, टेक्स्ट के आधार पर खोज करने की सुविधा. | टेक्स्ट के आधार पर खोजने की सुविधा काम नहीं करती. इसके बजाय, टेक्स्ट खोज (नई सुविधा) का इस्तेमाल करें. |
कोड की तुलना करना
इस सेक्शन में, आस-पास की जगहों को खोजने के तरीकों के कोड की तुलना की गई है. इससे Places Service और Place क्लास के बीच के अंतर को समझने में मदद मिलती है. कोड स्निपेट में, टेक्स्ट के आधार पर खोज का अनुरोध करने के लिए, हर एपीआई पर ज़रूरी कोड दिखाया गया है.
आस-पास की जगहों की जानकारी (लेगसी)
आस-पास की जगहों को खोजने की लेगसी सुविधा की मदद से, किसी इलाके में मौजूद जगहों को कीवर्ड या टाइप के हिसाब से खोजा जा सकता है. जगह की जानकारी वाले डेटा फ़ील्ड का इस्तेमाल करके, खोजों को सीमित नहीं किया जा सकता. इसलिए, हर अनुरोध के साथ सभी उपलब्ध फ़ील्ड दिखाए जाते हैं.
इस स्निपेट में, ऑस्ट्रेलिया के सिडनी में मौजूद रेस्टोरेंट के बारे में जानकारी पाने के लिए, 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
की स्थिति की जांच करने की ज़रूरत नहीं है. इसके बजाय, गड़बड़ी को ठीक करने के स्टैंडर्ड तरीके का इस्तेमाल किया जा सकता है.
नीचे दिया गया कोड स्निपेट, एक ऐसा फ़ंक्शन दिखाता है जो रेस्टोरेंट के लिए Nearby 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");
}
}