इस पेज पर, आस-पास के कारोबारों को खोजने की सुविधा के बीच के अंतर के बारे में बताया गया है. इस सुविधा का इस्तेमाल, 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,
});
}
ज़्यादा जानें
आस-पास की जगहों की जानकारी (नया)
आस-पास मौजूद कारोबारों को खोजने की सुविधा के नए वर्शन में, इन तरीकों से अपने पुराने वर्शन को बेहतर बनाया गया है:
- यह तय करने की सुविधा कि जगह के कौनसे डेटा फ़ील्ड दिखाने हैं.
- Promises का इस्तेमाल, जो एसिंक्रोनस तरीके से काम करने की सुविधा देता है.
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");
}
}