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

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

इस पेज पर, टेक्स्ट के आधार पर जगहें खोजने की सुविधाओं के बीच के अंतर के बारे में बताया गया है. ये सुविधाएं Place क्लास (नई) और PlacesService (लेगसी) में उपलब्ध हैं. साथ ही, तुलना के लिए कुछ कोड स्निपेट भी दिए गए हैं.

लेगसी PlacesService में, टेक्स्ट के आधार पर खोज के ये तरीके उपलब्ध हैं:

  • findPlaceFromQuery() तरीका. यह टेक्स्ट क्वेरी लेता है और जगह का एक नतीजा दिखाता है. साथ ही, इसमें जगह के डेटा फ़ील्ड का इस्तेमाल किया जा सकता है.
  • findPlaceFromPhoneNumber() तरीका. इसकी मदद से, फ़ोन नंबर का इस्तेमाल करके कोई जगह खोजी जा सकती है. साथ ही, इसमें जगह के डेटा फ़ील्ड का इस्तेमाल किया जा सकता है.
  • textSearch() तरीका. यह टेक्स्ट क्वेरी लेता है और जगह के नतीजों की सूची दिखाता है. textSearch() पुराना है. इसमें जगह के डेटा फ़ील्ड का इस्तेमाल नहीं किया जा सकता.

नई Place क्लास में, Place.searchByText() तरीका उपलब्ध है. इसकी मदद से, टेक्स्ट क्वेरी या फ़ोन नंबर का इस्तेमाल करके जगहें खोजी जा सकती हैं. साथ ही, इसमें जगह के डेटा फ़ील्ड और जगह के टाइप की अपडेट की गई सूची का इस्तेमाल करके, खोजों को पसंद के मुताबिक बनाया जा सकता है.

यहां दी गई टेबल में, जगहें खोजने के तरीकों में कुछ मुख्य अंतर बताए गए हैं Place क्लास और PlacesService के बीच:

PlacesService (लेगसी) Place (नई)
findPlaceFromQuery()
findPlaceFromPhoneNumber()
searchByText()
FindPlaceFromQueryRequest
FindPlaceFromPhoneNumberRequest
SearchByTextRequest
क्वेरी के सीमित विकल्प. क्वेरी के ज़्यादा विकल्प.
नतीजों के ऑब्जेक्ट और google.maps.places.PlacesServiceStatus जवाब को मैनेज करने के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है. इसमें प्रॉमिस का इस्तेमाल किया जाता है और यह एसिंक्रोनस तरीके से काम करता है.
PlacesServiceStatus की जांच करना ज़रूरी है. स्टेटस की जांच करना ज़रूरी नहीं है. इसमें गड़बड़ी को मैनेज करने के स्टैंडर्ड तरीके का इस्तेमाल किया जा सकता है. ज़्यादा जानें.
इसमें सिर्फ़ जगह के हिसाब से पक्षपात की सुविधा उपलब्ध है. इसमें जगह के हिसाब से पक्षपात और जगह के हिसाब से पाबंदी की सुविधा उपलब्ध है.
जगह के डेटा फ़ील्ड को स्नेक केस का इस्तेमाल करके फ़ॉर्मैट किया जाता है. जगह के डेटा फ़ील्ड को कैमल केस का इस्तेमाल करके फ़ॉर्मैट किया जाता है.
जगह का एक नतीजा दिखाता है. जगह के ज़्यादा से ज़्यादा 20 नतीजे दिखाता है.
जगह के टाइप और जगह के डेटा फ़ील्ड के तय सेट तक सीमित है. जगह के टाइप और जगह के डेटा फ़ील्ड की अपडेट की गई सूची उपलब्ध कराता है.
textSearch()
searchByText()
उपलब्ध सभी डेटा फ़ील्ड (सपोर्ट किए गए फ़ील्ड का सबसेट) दिखाता है; इसे खास फ़ील्ड तक सीमित नहीं किया जा सकता. सिर्फ़ अनुरोध किए गए जगह के डेटा फ़ील्ड दिखाता है.

कोड की तुलना

इस सेक्शन में, टेक्स्ट के आधार पर खोज के तरीकों के कोड की तुलना की गई है. इससे, Places Service और 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() तरीके का इस्तेमाल करके, जगहों को खोजने का तरीका दिखाया गया है. यह अनुरोध एसिंक्रोनस है. इसमें स्टेटस की जांच करना ज़रूरी नहीं है. इसमें गड़बड़ी को मैनेज करने के स्टैंडर्ड तरीके का इस्तेमाल किया जा सकता है. इस उदाहरण में, अनुरोध में maxResultCount की वैल्यू 8 है. इसकी वैल्यू 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 की सुविधा भी उपलब्ध है.

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