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

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

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

  • PlacesService (लेगसी) getDetails() अनुरोध के लिए, PlaceResult ऑब्जेक्ट के हिस्से के तौर पर ज़्यादा से ज़्यादा 10 PlacePhoto ऑब्जेक्ट का कलेक्शन दिखाता है. ऐसा तब होता है, जब अनुरोध में photos फ़ील्ड के बारे में बताया गया हो. textSearch() और nearbySearch() के मामले में, अगर पहली जगह की फ़ोटो उपलब्ध है, तो उसे डिफ़ॉल्ट रूप से दिखाया जाता है.
  • Place क्लास, fetchFields() अनुरोध के हिस्से के तौर पर ज़्यादा से ज़्यादा 10 Photo ऑब्जेक्ट का कलेक्शन दिखाती है. ऐसा तब होता है, जब अनुरोध में photos फ़ील्ड के बारे में बताया गया हो.

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

PlacesService (लेगसी) Place (नई)
PlacePhoto इंटरफ़ेस Photo क्लास
PlacePhoto, html_attributions को स्ट्रिंग के तौर पर दिखाता है. Photo, AuthorAttribution का इंस्टेंस दिखाता है.
नतीजे के ऑब्जेक्ट और google.maps.places.PlacesServiceStatus रिस्पॉन्स को मैनेज करने के लिए, तरीकों में कॉलबैक का इस्तेमाल करना ज़रूरी है. यह प्रॉमिस का इस्तेमाल करता है और एसिंक्रोनस तरीके से काम करता है.
इन तरीकों की PlacesServiceStatus जांच करना ज़रूरी है. स्टेटस की जांच करने की ज़रूरत नहीं है. स्टैंडर्ड गड़बड़ी हैंडलिंग का इस्तेमाल किया जा सकता है. ज़्यादा जानें.
PlacesService को मैप या div एलिमेंट का इस्तेमाल करके इंस्टैंशिएट किया जाना चाहिए. Place को जहां भी ज़रूरत हो वहां इंस्टैंशिएट किया जा सकता है. इसके लिए, मैप या पेज एलिमेंट के रेफ़रंस की ज़रूरत नहीं होती.

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

यह अनुभाग स्थान सेवा और स्थान वर्ग के बीच अंतर को दर्शाने के लिए स्थान फ़ोटो के लिए कोड की तुलना करता है. कोड स्निपेट प्रत्येक संबंधित API पर फ़ोटो लगाने के लिए आवश्यक कोड दिखाते हैं.

Places सेवा (लेगसी)

इस स्निपेट में, PlacesService का इस्तेमाल करके फ़ोटो वापस लाने और पेज पर फ़ोटो का पहला नतीजा दिखाने का तरीका बताया गया है. इस उदाहरण में, जगह की जानकारी के अनुरोध में name और photos फ़ील्ड के साथ-साथ जगह का आईडी भी दिया गया है. इसके बाद, सेवा का स्टेटस देखने के बाद, पेज पर पहली फ़ोटो दिखती है. PlacesService को इंस्टैंशिएट करते समय, मैप या div एलिमेंट को तय करना ज़रूरी है. इस उदाहरण में मैप नहीं है, इसलिए div एलिमेंट का इस्तेमाल किया गया है.

function getPhotos() {
  // Construct the Place Details request.
  const request = {
    placeId: "ChIJydSuSkkUkFQRsqhB-cEtYnw",
    fields: ["name", "photos"],
  };

  // Create an instance of PlacesService.
  const attributionDiv = document.getElementById("attribution-div");
  const service = new google.maps.places.PlacesService(attributionDiv);

  // Check status and display the first photo in an img element.
  service.getDetails(request, (place, status) => {
    if (
      status === google.maps.places.PlacesServiceStatus.OK && place
    ) {
      const photoImg = document.getElementById('image-container');
      photoImg.src = place.photos[0].getUrl({maxHeight: 400});
    }
  });
}

PlacesService में लेखक का श्रेय

PlacesService, लेखक के Google प्रोफ़ाइल पेज की ओर इशारा करने वाले URL वाले html_attributions स्ट्रिंग के रूप में आवश्यक लेखक एट्रिब्यूशन लौटाता है. निम्नलिखित स्निपेट पहले फ़ोटो परिणाम के लिए एट्रिब्यूशन डेटा पुनर्प्राप्त करना दिखाता है.

let attributionUrl = place.photos[0].html_attributions;

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

क्लास की जगह (नई)

इस स्निपेट में, जगह की जानकारी दिखाने के लिए fetchFields() तरीके का इस्तेमाल किया गया है. इसमें डिसप्ले नेम और जगह की फ़ोटो शामिल हैं. सबसे पहले, प्लेस आईडी का इस्तेमाल करके नया Place ऑब्जेक्ट इंस्टैंटिएट किया जाता है. इसके बाद, fetchFields() को कॉल किया जाता है, जहां displayName और photos फ़ील्ड तय किए जाते हैं. इसके बाद, पेज पर पहली जगह की फ़ोटो दिखती है. Place क्लास का इस्तेमाल करते समय, सेवा की स्थिति की जांच करने की ज़रूरत नहीं होती, क्योंकि यह काम अपने-आप हो जाता है.

async function getPhotos() {
  // Use a place ID to create a new Place instance.
  const place = new google.maps.places.Place({
      id: 'ChIJydSuSkkUkFQRsqhB-cEtYnw', // Woodland Park Zoo, Seattle WA
  });

  // Call fetchFields, passing the needed data fields.
  await place.fetchFields({ fields: ['displayName','photos'] });

  console.log(place.displayName);
  console.log(place.photos[0]);
  // Add the first photo to an img element.
  const photoImg = document.getElementById('image-container');
  photoImg.src = place.photos[0].getURI({maxHeight: 400});
}

Place वर्ग में लेखक का श्रेय

Place क्लास, लेखक की जानकारी को AuthorAttribution इंस्टेंस के तौर पर दिखाता है. इसमें लेखक का नाम, लेखक की Google प्रोफ़ाइल पेज का यूआरआई, और लेखक की प्रोफ़ाइल फ़ोटो का यूआरआई शामिल होता है. इस स्निपेट में, पहले फ़ोटो नतीजे के लिए एट्रिब्यूशन डेटा को वापस पाने का तरीका दिखाया गया है.

let name = place.photos[0].authorAttributions[0].displayName;
let attributionUrl = place.photos[0].authorAttributions[0].uri;
let photoUrl = place.photos[0].authorAttributions[0].photoUri;

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