आस-पास की जगहों की जानकारी के नए वर्शन पर माइग्रेट करना

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

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

  • लेगसी PlacesService में nearbySearch() तरीका है. इसकी मदद से, किसी तय इलाके में मौजूद जगहों को कीवर्ड या टाइप के हिसाब से खोजा जा सकता है.
  • Place क्लास में searchNearby() तरीका होता है. इसकी मदद से, किसी तय इलाके में मौजूद जगहों को उनके टाइप के हिसाब से खोजा जा सकता है. इसके लिए, जगह के डेटा फ़ील्ड और टाइप के ज़्यादा विकल्पों का इस्तेमाल किया जाता है, ताकि आपको ज़्यादा बेहतर नतीजे मिल सकें.

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

PlacesService (लेगसी) Place (नया)
nearbySearch()
searchNearby()
PlaceSearchRequest SearchNearbyRequest
नतीजों के ऑब्जेक्ट और google.maps.places.PlacesServiceStatus रिस्पॉन्स को मैनेज करने के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है. यह Promises का इस्तेमाल करता है और एसिंक्रोनस तरीके से काम करता है.
इसके लिए, PlacesServiceStatus की जांच ज़रूरी है. स्टेटस की जांच करने की ज़रूरत नहीं है. गड़बड़ी को ठीक करने के लिए, स्टैंडर्ड तरीके का इस्तेमाल किया जा सकता है. ज़्यादा जानें.
यह सिर्फ़ जगह के हिसाब से नतीजे दिखाता है. यह जगह के हिसाब से नतीजे दिखाने और जगह के हिसाब से पाबंदी लगाने की सुविधा के साथ काम करता है.
यह फ़ंक्शन, उपलब्ध सभी डेटा फ़ील्ड दिखाता है. ये फ़ील्ड, इस्तेमाल किए जा सकने वाले फ़ील्ड का सबसेट होते हैं. इन्हें कुछ खास फ़ील्ड तक सीमित नहीं किया जा सकता. यह सिर्फ़ अनुरोध किए गए जगह के डेटा फ़ील्ड दिखाता है. Place क्लास, फ़ील्ड का बड़ा और नियमित तौर पर अपडेट किया गया कलेक्शन उपलब्ध कराती है.
यह जगह के टाइप के तय सेट तक सीमित है. जगहों के टाइप के बड़े और नियमित तौर पर अपडेट किए जाने वाले कलेक्शन को ऐक्सेस करें.
कीवर्ड की मदद से, टेक्स्ट के आधार पर खोज करने की सुविधा. टेक्स्ट के आधार पर खोजने की सुविधा काम नहीं करती. इसके बजाय, टेक्स्ट से खोजें (नया वर्शन) का इस्तेमाल करें.

कोड की तुलना करना

इस सेक्शन में, आस-पास की जगहों की जानकारी खोजने के तरीकों के कोड की तुलना की गई है. इससे, Places सेवा और 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 की स्थिति देखने की ज़रूरत नहीं है. इसके बजाय, स्टैंडर्ड गड़बड़ी को ठीक करने के तरीके का इस्तेमाल किया जा सकता है.

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

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