Maps JavaScript API ऐप्लिकेशन को वर्शन 2 से वर्शन 3 पर अपग्रेड करना

Maps JavaScript API का 26 मई, 2021 से वर्शन 2 उपलब्ध नहीं है. इस वजह से, आपकी साइट के v2 मैप काम करना बंद कर देंगे और JavaScript से जुड़ी गड़बड़ियां दिखेंगी. अपनी साइट पर मैप का इस्तेमाल जारी रखने के लिए, Maps JavaScript API v3 पर माइग्रेट करें. इस गाइड से आपको प्रोसेस के बारे में जानने में मदद मिलेगी.

खास जानकारी

हर ऐप्लिकेशन के लिए माइग्रेशन की प्रोसेस थोड़ी अलग होगी. हालांकि, कुछ चरण सभी प्रोजेक्ट के लिए एक जैसे होते हैं:

  1. नई कुंजी पाएं. Maps JavaScript API अब कुंजियों को मैनेज करने के लिए, Google Cloud Console का इस्तेमाल करता है. अगर अब भी v2 पासकोड का इस्तेमाल किया जा रहा है, तो माइग्रेशन शुरू करने से पहले, अपनी नई एपीआई पासकोड ज़रूर पाएं.
  2. अपने एपीआई बूटस्ट्रैप को अपडेट करें. ज़्यादातर ऐप्लिकेशन, Maps JavaScript API v3 को इस कोड की मदद से लोड करेंगे:
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
  3. अपना कोड अपडेट करें. आपको कितने बदलाव करने होंगे, यह आपके ऐप्लिकेशन पर बहुत हद तक निर्भर करेगा. आम तौर पर, ये बदलाव किए जाते हैं:
    • google.maps नेमस्पेस का हमेशा रेफ़रंस दें. v3 में, Maps JavaScript API का सारा कोड, ग्लोबल नेमस्पेस के बजाय google.maps.* नेमस्पेस में सेव किया जाता है. इस प्रोसेस के तहत, ज़्यादातर ऑब्जेक्ट के नाम भी बदल दिए गए हैं. उदाहरण के लिए, अब GMap2 के बजाय, आपको google.maps.Map लोड होगा.
    • पुराने तरीकों के रेफ़रंस हटाएं. सामान्य काम के लिए इस्तेमाल होने वाले कई तरीकों को हटा दिया गया है. जैसे, GDownloadURL और GLog. इस फ़ंक्शन को तीसरे पक्ष की यूटिलिटी लाइब्रेरी से बदलें या अपने कोड से इन रेफ़रंस को हटाएं.
    • (ज़रूरी नहीं) अपने कोड में लाइब्रेरी जोड़ें. कई सुविधाओं को यूटिलिटी लाइब्रेरी में एक्सटर्नलाइज़ किया गया है, ताकि हर ऐप्लिकेशन को एपीआई के सिर्फ़ उन हिस्सों को लोड करना पड़े जिनका इस्तेमाल किया जाएगा.
    • (ज़रूरी नहीं) v3 एक्सटर्न का इस्तेमाल करने के लिए, अपने प्रोजेक्ट को कॉन्फ़िगर करें. v3 एक्सटर्न का इस्तेमाल, Closure कंपाइलर की मदद से अपने कोड की पुष्टि करने या अपने IDE में ऑटोकंप्लीट की सुविधा को ट्रिगर करने के लिए किया जा सकता है. बेहतर कंपाइलेशन और एक्सटर्न के बारे में ज़्यादा जानें.
  4. अलग-अलग तरह की स्टाइल और कॉन्टेंट फ़ॉर्मैट को टेस्ट करते रहें. इस समय, आपको कुछ और काम करना होगा. हालांकि, अच्छी बात यह है कि अब आपके पास Maps के नए वर्शन 3 वाले ऐप्लिकेशन को इस्तेमाल करने का विकल्प होगा!

Maps JavaScript API के V3 में हुए बदलाव

माइग्रेशन की योजना बनाने से पहले, आपको Maps JavaScript API v2 और Maps JavaScript API v3 के बीच के अंतर को समझने के लिए समय निकालना चाहिए. Maps JavaScript API का नया वर्शन, फिर से लिखा गया है. इसमें आधुनिक JavaScript प्रोग्रामिंग तकनीकों, लाइब्रेरी के ज़्यादा इस्तेमाल, और आसान एपीआई पर फ़ोकस किया गया है. एपीआई में कई नई सुविधाएं जोड़ी गई हैं. साथ ही, कई ऐसी सुविधाओं में बदलाव किए गए हैं या उन्हें हटा दिया गया है जिन्हें पहले से इस्तेमाल किया जा रहा था. इस सेक्शन में, दोनों रिलीज़ के बीच के कुछ मुख्य अंतरों के बारे में बताया गया है.

v3 API में किए गए कुछ बदलावों में ये शामिल हैं:

  • बेहतर सुविधाओं वाली मुख्य लाइब्रेरी. कई सहायक फ़ंक्शन को लाइब्रेरी में ले जाया गया है. इससे, Core API के लोड और पार्स करने में लगने वाले समय को कम करने में मदद मिलती है. इससे आपका मैप किसी भी डिवाइस पर तेज़ी से लोड होता है.
  • पॉलीगॉन रेंडरिंग और मार्कर प्लेसमेंट जैसी कई सुविधाओं की परफ़ॉर्मेंस को बेहतर बनाया गया है.
  • क्लाइंट-साइड के इस्तेमाल की सीमाओं के लिए एक नया तरीका, ताकि मोबाइल प्रोक्सी और कॉर्पोरेट फ़ायरवॉल के इस्तेमाल किए गए शेयर किए गए पतों को बेहतर तरीके से शामिल किया जा सके.
  • कई आधुनिक ब्राउज़र और मोबाइल ब्राउज़र के लिए सहायता जोड़ी गई. Internet Explorer 6 के लिए सहायता हटा दी गई है.
  • सामान्य काम के लिए इस्तेमाल होने वाली कई हेल्पर क्लास ( GLog या GDownloadUrl) हटा दी गई हैं. फ़िलहाल, ऐसी कई बेहतरीन JavaScript लाइब्रेरी मौजूद हैं जो मिलती-जुलती सुविधाएं देती हैं. जैसे, Closure या jQuery.
  • HTML5 Street View का ऐसा वर्शन जो किसी भी मोबाइल डिवाइस पर लोड होगा.
  • अपनी फ़ोटो की मदद से, पसंद के मुताबिक स्ट्रीट व्यू पैनोरमा बनाएं. इनकी मदद से, स्की स्लोप, बिक्री के लिए उपलब्ध घरों या अन्य दिलचस्प जगहों के पैनोरमा शेयर किए जा सकते हैं.
  • स्टाइल वाले मैप में पसंद के मुताबिक बदलाव करने की सुविधा. इसकी मदद से, बुनियादी मैप पर एलिमेंट के डिसप्ले को बदला जा सकता है, ताकि वे आपके यूनीक विज़ुअल स्टाइल से मेल खा सकें.
  • कई नई सेवाओं के लिए सहायता, जैसे कि ElevationService और Distance Matrix.
  • बेहतर निर्देश सेवाओं में, रास्ते के वैकल्पिक विकल्प, रास्ते को ऑप्टिमाइज़ करने की सुविधा ( यात्रा करने वाले सेल्समैन की समस्या के अनुमानित समाधान), साइकल चलाने के निर्देश ( साइकल चलाने की लेयर के साथ), बस, मेट्रो वगैरह के निर्देश, और खींचे और छोड़े जा सकने वाले निर्देश की सुविधा मिलती है.
  • अपडेट किया गया जियोकोडिंग फ़ॉर्मैट, जो Geocoding API v2 की accuracy वैल्यू की तुलना में, टाइप की ज़्यादा सटीक जानकारी देता है.
  • एक मैप पर कई जानकारी वाले विंडो जोड़ने की सुविधा

अपना ऐप्लिकेशन अपग्रेड करना

आपकी नई कुंजी

Maps JavaScript API v3, v2 के नए पासकोड सिस्टम का इस्तेमाल करता है. हो सकता है कि आपने अपने ऐप्लिकेशन के साथ पहले से ही वर्शन 3 की का इस्तेमाल किया हो. ऐसे में, आपको कोई बदलाव करने की ज़रूरत नहीं है. पुष्टि करने के लिए, उस यूआरएल की जांच करें जिससे आपने Maps JavaScript API को key पैरामीटर के लिए लोड किया है. अगर कुंजी की वैल्यू 'ABQIAA' से शुरू होती है, तो इसका मतलब है कि आपने v2 कुंजी का इस्तेमाल किया है. अगर आपके पास v2 पासकोड है, तो माइग्रेशन के दौरान आपको इसे v3 पासकोड में अपग्रेड करना होगा. ऐसा करने पर:

Maps JavaScript API v3 को लोड करते समय, पासकोड पास किया जाता है. एपीआई पासकोड जनरेट करने के बारे में ज़्यादा जानें.

ध्यान दें कि अगर आप Google Maps APIs for Work के ग्राहक हैं, तो हो सकता है कि आप key पैरामीटर के बजाय, client पैरामीटर के साथ क्लाइंट आईडी का इस्तेमाल कर रहे हों. क्लाइंट आईडी अब भी Maps JavaScript API v3 में काम करते हैं. साथ ही, उन्हें पासकोड अपग्रेड करने की प्रोसेस से गुज़रने की ज़रूरत नहीं है.

एपीआई लोड हो रहा है

आपको अपने कोड में पहला बदलाव यह करना होगा कि एपीआई को कैसे लोड किया जाए. v2 में, http://maps.google.com/maps के अनुरोध के ज़रिए Maps JavaScript API को लोड किया जाता है. अगर Maps JavaScript API v3 को लोड किया जा रहा है, तो आपको ये बदलाव करने होंगे:

  1. //maps.googleapis.com/maps/api/js से एपीआई लोड करना
  2. file पैरामीटर हटाएं.
  3. key पैरामीटर को अपनी नई v3 कुंजी के साथ अपडेट करें. Google Maps APIs for Work के ग्राहकों को client पैरामीटर का इस्तेमाल करना चाहिए.
  4. (सिर्फ़ Google Maps Platform के प्रीमियम प्लान के लिए) पक्का करें कि client पैरामीटर, Google Maps Platform के प्रीमियम प्लान के डेवलपर गाइड में बताए गए तरीके के मुताबिक दिया गया हो.
  5. रिलीज़ किए गए सबसे नए वर्शन का अनुरोध करने के लिए, v पैरामीटर को हटाएं या उसकी वैल्यू को v3 वर्शनिंग स्कीम के हिसाब से बदलें.
  6. (ज़रूरी नहीं) hl पैरामीटर को language से बदलें और उसकी वैल्यू को बनाए रखें.
  7. (ज़रूरी नहीं) वैकल्पिक लाइब्रेरी लोड करने के लिए, libraries पैरामीटर जोड़ें.

सबसे आसान मामले में, v3 बूटस्ट्रैप सिर्फ़ आपकी एपीआई पासकोड पैरामीटर की जानकारी देगा:

<script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>

यहां दिए गए उदाहरण में, जर्मन भाषा में Maps JavaScript API v2 के सबसे नए वर्शन का अनुरोध किया गया है:

<script src="//maps.google.com/maps?file=api&v=2.x&key=YOUR_API_KEY&hl=de"></script>

नीचे दिया गया उदाहरण, v3 के लिए एक जैसा अनुरोध है.

<script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&language=de"></script>

पेश है google.maps नेमस्पेस

Maps JavaScript API v3 में सबसे अहम बदलाव, google.maps नेमस्पेस का इस्तेमाल करना है. v2 API, डिफ़ॉल्ट रूप से सभी ऑब्जेक्ट को ग्लोबल नेमस्पेस में डालता है. इस वजह से, नामों में गड़बड़ी हो सकती है. v3 में, सभी ऑब्जेक्ट google.maps नेमस्पेस में मौजूद होते हैं.

अपने ऐप्लिकेशन को v3 पर माइग्रेट करते समय, आपको नए नेमस्पेस का इस्तेमाल करने के लिए, अपने कोड में बदलाव करना होगा. माफ़ करें, "G" खोजने और "google.maps" से बदलने पर, पूरी तरह से काम नहीं करेगा. हालांकि, कोड की समीक्षा करते समय, यह एक अच्छा नियम है. यहां v2 और v3 में एक जैसी क्लास के कुछ उदाहरण दिए गए हैं.

v2 v3
GMap2 google.maps.Map
GLatLng google.maps.LatLng
GInfoWindow google.maps.InfoWindow
GMapOptions google.map.MapOptions
G_API_VERSION google.maps.version
GPolyStyleOptions google.maps.PolygonOptions
or google.maps.PolylineOptions

काम न करने वाले कोड को हटाना

Maps JavaScript API के v3 वर्शन में, v2 वर्शन की ज़्यादातर सुविधाएं मिलती-जुलती हैं. हालांकि, कुछ क्लास अब काम नहीं करती हैं. माइग्रेशन के दौरान, आपको इन क्लास को तीसरे पक्ष की यूटिलिटी लाइब्रेरी से बदलना चाहिए या अपने कोड से इन रेफ़रंस को हटा देना चाहिए. ऐसी कई बेहतरीन JavaScript लाइब्रेरी मौजूद हैं जो Closure या jQuery जैसी मिलती-जुलती सुविधाएं देती हैं.

Maps JavaScript API v3 में, नीचे दी गई क्लास का कोई दूसरा वर्शन नहीं है:

GBoundsGLanguage
GBrowserIsCompatibleGLayer
GControlGLog
GControlAnchorGMercatorProjection
GControlImplGNavLabelControl
GControlPositionGObliqueMercator
GCopyrightGOverlay
GCopyrightCollectionGPhotoSpec
GDownloadUrlGPolyEditingOptions
GDraggableObjectGScreenOverlay
GDraggableObjectOptionsGStreetviewFeatures
GFactualGeocodeCacheGStreetviewLocation
GGeoAddressAccuracyGStreetviewOverlay
GGeocodeCacheGStreetviewUserPhotosOptions
GGoogleBarGTileLayerOptions
GGoogleBarAdsOptionsGTileLayerOverlayOptions
GGoogleBarLinkTargetGTrafficOverlayOptions
GGoogleBarListingTypesGUnload
GGoogleBarOptionsGXml
GGoogleBarResultListGXmlHttp
GInfoWindowTabGXslt
GKeyboardHandler

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

आइए, दो ऐसे आसान ऐप्लिकेशन की तुलना करते हैं जिन्हें v2 और v3 एपीआई के साथ लिखा गया है.

<!DOCTYPE html>
<html>
  <head>
    <script src="//maps.google.com/maps?file=api&v=2&key=YOUR_API_KEY"></script>
    <style>
      html, body, #map { height: 100%; margin: 0; }
    </style>
    <script>
    function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(
            document.getElementById('map'));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.setUIToDefault();

        map.addOverlay(new GMarker(new GLatLng(37.4419, -122.1419)));

      }
    }
    </script>
  </head>
  <body onload="initialize()" onunload="GUnload()">
    <div id="map"></div>
  </body>
</html>
    
<!DOCTYPE html>
<html>
  <head>
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    <style>
      html, body, #map { height: 100%; margin: 0; }
    </style>
    <script>
    function initialize() {
      var map = new google.maps.Map(
        document.getElementById('map'), {
          center: new google.maps.LatLng(37.4419, -122.1419),
          zoom: 13,
          mapTypeId: google.maps.MapTypeId.ROADMAP
      });

      var marker = new google.maps.Marker({
            position: new google.maps.LatLng(37.4419, -122.1419),
            map: map
      });

    }
    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>
    

जैसा कि आप देख सकते हैं, इन दोनों ऐप्लिकेशन के बीच कई अंतर हैं. इन बदलावों पर ध्यान देने की ज़रूरत है:

  • वह पता बदल गया है जिससे एपीआई लोड किया जाता है.
  • GBrowserIsCompatible() और GUnload() तरीकों का इस्तेमाल, अब v3 में नहीं किया जा सकता. साथ ही, इन्हें एपीआई से हटा दिया गया है.
  • एपीआई में मुख्य ऑब्जेक्ट के तौर पर, GMap2 ऑब्जेक्ट को google.maps.Map से बदल दिया गया है.
  • प्रॉपर्टी अब विकल्प क्लास के ज़रिए लोड की जाती हैं. ऊपर दिए गए उदाहरण में, हमने इनलाइन किए गए MapOptions ऑब्जेक्ट के ज़रिए, मैप लोड करने के लिए ज़रूरी तीन प्रॉपर्टी — center, zoom, और mapTypeId — सेट की हैं.
  • v3 में, डिफ़ॉल्ट यूज़र इंटरफ़ेस (यूआई) डिफ़ॉल्ट रूप से चालू होता है. इसे बंद करने के लिए, MapOptions ऑब्जेक्ट में disableDefaultUI प्रॉपर्टी को 'सही' पर सेट करें.

खास जानकारी

अब आपको Maps JavaScript API के v2 से v3 पर माइग्रेट करने के कुछ अहम पहलुओं के बारे में पता चल गया होगा. आपको और भी जानकारी चाहिए, लेकिन यह आपके ऐप्लिकेशन पर निर्भर करेगा. नीचे दिए गए सेक्शन में, हमने उन खास मामलों के लिए माइग्रेशन के निर्देश शामिल किए हैं जिनका सामना आपको करना पड़ सकता है. इसके अलावा, अपग्रेड की प्रोसेस के दौरान आपको कई ऐसे संसाधन मिल सकते हैं जिनसे आपको मदद मिल सकती है.

  • Maps JavaScript API v3 के बारे में ज़्यादा जानने के लिए, डेवलपर दस्तावेज़ सबसे सही जगह है. इससे आपको यह भी पता चलेगा कि यह एपीआई कैसे काम करता है.
  • Maps JavaScript API v3 के रेफ़रंस से, आपको v3 API में नई क्लास और तरीकों के बारे में ज़्यादा जानने में मदद मिलेगी.
  • कोड से जुड़े सवाल पूछने के लिए, Stack Overflow कम्यूनिटी एक बेहतरीन प्लैटफ़ॉर्म है. साइट पर, Maps JavaScript API से जुड़े सवालों और जवाबों के लिए, 'google-maps' या 'google-maps-api-3' टैग का इस्तेमाल किया जाता है.
  • Google Maps Platform के प्रीमियम प्लान के ग्राहकों को, Google Maps Platform के प्रीमियम प्लान का दस्तावेज़ पढ़ना चाहिए.
  • एपीआई में हुए नए बदलावों के बारे में जानने के लिए, Google Geo Developers ब्लॉग एक बेहतरीन तरीका है.

अगर आपको इस लेख के बारे में कोई समस्या या सवाल पूछना है, तो कृपया इस पेज पर सबसे ऊपर दिए गए सुझाव/राय दें या शिकायत करें लिंक का इस्तेमाल करें.

ज़्यादा जानकारी वाला रेफ़रंस

इस सेक्शन में, Maps JavaScript API के v2 और v3, दोनों वर्शन की सबसे लोकप्रिय सुविधाओं की पूरी जानकारी दी गई है. रेफ़रंस के हर सेक्शन को अलग-अलग पढ़ने के लिए डिज़ाइन किया गया है. हमारा सुझाव है कि आप इस रेफ़रंस को पूरा न पढ़ें. इसके बजाय, इस कॉन्टेंट का इस्तेमाल करके, हर मामले के हिसाब से माइग्रेशन की प्रक्रिया को आसान बनाएं.

  • इवेंट - इवेंट रजिस्टर करना और मैनेज करना.
  • कंट्रोल - मैप पर दिखने वाले नेविगेशन कंट्रोल में बदलाव करना.
  • ओवरले - मैप पर ऑब्जेक्ट जोड़ना और उनमें बदलाव करना.
  • मैप टाइप - ये वे टाइल हैं जिनसे बेसमैप बनता है.
  • लेयर - ग्रुप के तौर पर कॉन्टेंट जोड़ना और उसमें बदलाव करना. जैसे, KML या ट्रैफ़िक लेयर.
  • सेवाएं - Google की जियोकोडिंग, निर्देश या Street View की सेवाओं के साथ काम करना.

इवेंट

Maps JavaScript API के वर्शन 3 के लिए इवेंट मॉडल, वर्शन 2 में इस्तेमाल किए गए मॉडल से मिलता-जुलता है. हालांकि, इसमें कई बदलाव किए गए हैं.

कंट्रोल

Maps JavaScript API, यूज़र इंटरफ़ेस (यूआई) कंट्रोल दिखाता है. इनकी मदद से, उपयोगकर्ता आपके मैप के साथ इंटरैक्ट कर सकते हैं. एपीआई का इस्तेमाल करके, इन कंट्रोल के दिखने का तरीका पसंद के मुताबिक बनाया जा सकता है.

ओवरले

ओवरले, उन ऑब्जेक्ट को दिखाते हैं जिन्हें मैप में "जोड़ा" जाता है, ताकि पॉइंट, लाइन, इलाके या ऑब्जेक्ट के कलेक्शन तय किए जा सकें.

मैप के टाइप

v2 और v3 में उपलब्ध मैप के टाइप थोड़े अलग हैं. हालांकि, एपीआई के दोनों वर्शन में सभी तरह के बुनियादी मैप उपलब्ध हैं. डिफ़ॉल्ट रूप से, v2 स्टैंडर्ड "पेंट किए गए" रोड मैप टाइल का इस्तेमाल करता है. हालांकि, v3 में google.maps.Map ऑब्जेक्ट बनाते समय, किसी खास मैप टाइप की ज़रूरत होती है.

लेयर

लेयर, मैप पर मौजूद ऐसे ऑब्जेक्ट होते हैं जिनमें एक या एक से ज़्यादा ओवरले होते हैं. इनमें एक ही यूनिट के तौर पर बदलाव किया जा सकता है और आम तौर पर, ये ऑब्जेक्ट के कलेक्शन दिखाते हैं.

सेवाएं