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

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

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

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

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

PlacesService (लेगसी) Place (नया)
nearbySearch()
searchNearby()
PlaceSearchRequest SearchNearbyRequest
इसके लिए, नतीजों के ऑब्जेक्ट और google.maps.places.PlacesServiceStatus के जवाब को मैनेज करने के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है. इसमें प्रॉमिस का इस्तेमाल किया जाता है और यह एसिंक्रोनस तरीके से काम करता है.
इसके लिए, 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,
  });
}

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

आस-पास की जगहों की जानकारी (नया)

आस-पास की जगहों की जानकारी के नए वर्शन में, पिछले वर्शन के मुकाबले ये सुधार किए गए हैं:

  • इसमें यह तय किया जा सकता है कि जगह की जानकारी के कौनसे फ़ील्ड दिखाने हैं.
  • इसमें प्रॉमिस का इस्तेमाल किया जाता है. इससे एसिंक्रोनस तरीके से काम किया जा सकता है.
  • इसमें 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");
  }
}

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