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