जगह की जानकारी के नए वर्शन पर माइग्रेट करना

यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर

इस पेज पर, 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 का भी इस्तेमाल किया जा सकता है).

ज़्यादा जानें