इस गाइड में, Maps JavaScript API को लोड करने का तरीका बताया गया है. यह लीजिए ऐसा करने के तीन तरीके हैं:
- डाइनैमिक लाइब्रेरी इंपोर्ट का इस्तेमाल करें
- डायरेक्ट स्क्रिप्ट लोडिंग टैग का इस्तेमाल करना
- NPM js-api-loader पैकेज का इस्तेमाल करना
डाइनैमिक लाइब्रेरी इंपोर्ट का इस्तेमाल करना
डाइनैमिक लाइब्रेरी इंपोर्ट की सुविधा से, लाइब्रेरी को रनटाइम के दौरान लोड किया जा सकता है. इससे, लोड होने के समय सभी लाइब्रेरी के बजाय, ज़रूरत पड़ने पर लाइब्रेरी का अनुरोध किया जा सकता है. यह आपके पेज को Maps JavaScript API को कई बार इस्तेमाल करें.
अपने ऐप्लिकेशन कोड में इनलाइन बूटस्ट्रैप लोडर जोड़कर, Maps JavaScript API को लोड करें. इसके लिए, नीचे दिए गए स्निपेट का इस्तेमाल करें:
<script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script>
बूटस्ट्रैप लोडर कोड को सीधे अपने JavaScript कोड में भी जोड़ा जा सकता है.
रनटाइम के दौरान लाइब्रेरी लोड करने के लिए, async
फ़ंक्शन में importLibrary()
को कॉल करने के लिए await
ऑपरेटर का इस्तेमाल करें. ज़रूरी क्लास के लिए वैरिएबल तय करने पर
आप सही पाथ का इस्तेमाल करके छोड़ देते हैं (जैसे, google.maps.Map
), जैसा कि
यहां दिए गए कोड का उदाहरण देखें:
TypeScript
let map: google.maps.Map; async function initMap(): Promise<void> { const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary; map = new Map(document.getElementById("map") as HTMLElement, { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }); } initMap();
JavaScript
let map; async function initMap() { const { Map } = await google.maps.importLibrary("maps"); map = new Map(document.getElementById("map"), { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }); } initMap();
आपका फ़ंक्शन, वैरिएबल का एलान किए बिना भी लाइब्रेरी लोड कर सकता है
डाल सकते हैं, जो विशेष रूप से तब उपयोगी होता है, जब आप
gmp-map
एलिमेंट:
async function initMap() { google.maps.importLibrary("maps"); google.maps.importLibrary("marker"); } initMap();
इसके अलावा, लाइब्रेरी को सीधे HTML में लोड किया जा सकता है, जैसा कि यहां दिखाया गया है:
<script> google.maps.importLibrary("maps"); google.maps.importLibrary("marker"); </script>
डाइनैमिक लाइब्रेरी लोडिंग एपीआई पर माइग्रेट करने का तरीका जानें.
ज़रूरी पैरामीटर
key
: आपकी एपीआई पासकोड. Maps JavaScript API तब तक लोड नहीं होगा, जब तक मान्य API पासकोड नहीं दिया जाता.
ज़रूरी नहीं पैरामीटर
v
: इसका वर्शन लोड करने के लिए Maps JavaScript API.libraries
: अतिरिक्त Maps JavaScript API की कॉमा-सेपरेटेड लिस्ट लोड करने के लिए लाइब्रेरी. आम तौर पर, लाइब्रेरी के किसी तय सेट के बारे में बताने का सुझाव नहीं दिया जाता. हालांकि, यह सुविधा उन डेवलपर के लिए उपलब्ध है जो अपनी वेबसाइट पर कैश मेमोरी का इस्तेमाल करने के तरीके को बेहतर बनाना चाहते हैं.language
: इस्तेमाल की जाने वाली भाषा. इसका असर कंट्रोल, कॉपीराइट की सूचनाओं, ड्राइविंग दिशा-निर्देशों, और और कंट्रोल लेबल और सेवा के अनुरोधों के जवाबों को कंट्रोल करती हैं. देखें इस्तेमाल की जा सकने वाली भाषाओं की सूची देखें.region
: क्षेत्र जोड़ें. इससे, किसी देश या इलाके के हिसाब से मैप के व्यवहार में बदलाव होता है.authReferrerPolicy
: Maps JS के ग्राहक, Cloud Console में एचटीटीपी रेफ़रर से जुड़ी पाबंदियां कॉन्फ़िगर कर सकते हैं. इससे यह तय किया जा सकता है कि किन यूआरएल को किसी खास एपीआई कुंजी का इस्तेमाल करने की अनुमति है. डिफ़ॉल्ट रूप से, इन पाबंदियों को अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है एपीआई पासकोड का इस्तेमाल करने के लिए, सिर्फ़ कुछ पाथ का इस्तेमाल किया जा सकता है. अगर एक ही डोमेन या ऑरिजिन पर मौजूद कोई भी यूआरएल, एपीआई पासकोड का इस्तेमाल कर सकता है, तो Maps JavaScript API के अनुरोधों को अनुमति देते समय भेजे जाने वाले डेटा की सीमा तय करने के लिए,authReferrerPolicy: "origin"
सेट किया जा सकता है. टास्क कब शुरू होगा इस पैरामीटर को तय किया गया है और एचटीटीपी रेफ़रर की पाबंदियां चालू हैं Cloud Console और Maps JavaScript API सिर्फ़ तब लोड हो पाएगा, जब एचटीटीपी रेफ़रर पर पाबंदी है जो बिना किसी पाथ के मौजूदा वेबसाइट के डोमेन से मेल खाता हो.mapIds
: मैप आईडी का ऐरे. इससे तय किए गए मैप आईडी का कॉन्फ़िगरेशन पहले से लोड होता है.channel
: हर चैनल के हिसाब से, इस्तेमाल की ट्रैकिंग देखें.solutionChannel
: Google Maps Platform कई तरह के सैंपल कोड देता है ताकि आपको तुरंत काम शुरू करने में मदद मिल सके. हमारे ज़्यादा जटिल कोड सैंपल के इस्तेमाल को ट्रैक करने और सलूशन की क्वालिटी को बेहतर बनाने के लिए, Google हमारे सैंपल कोड में एपीआई कॉल मेंsolutionChannel
क्वेरी पैरामीटर शामिल करता है.
डायरेक्ट स्क्रिप्ट लोडिंग टैग का इस्तेमाल करें
इस सेक्शन में, डायरेक्ट स्क्रिप्ट लोडिंग टैग का इस्तेमाल करने का तरीका बताया गया है. मैप लोड होने पर डायरेक्ट स्क्रिप्ट, लाइब्रेरी लोड करती है. इसलिए, gmp-map
एलिमेंट का इस्तेमाल करके बनाए गए मैप को आसान बनाया जा सकता है. ऐसा करने के लिए, रनटाइम के दौरान लाइब्रेरी का साफ़ तौर पर अनुरोध करने की ज़रूरत नहीं होती. सीधे स्क्रिप्ट लोड करने वाला टैग, स्क्रिप्ट लोड होने पर अनुरोध की गई सभी लाइब्रेरी को एक साथ लोड करता है. इसलिए, कुछ ऐप्लिकेशन की परफ़ॉर्मेंस पर असर पड़ सकता है. हर पेज लोड के लिए, डायरेक्ट स्क्रिप्ट लोडिंग टैग सिर्फ़ एक बार शामिल करें.
स्क्रिप्ट टैग जोड़ें
Maps JavaScript API को किसी एचटीएमएल फ़ाइल में इनलाइन लोड करने के लिए, यहां दिखाए गए तरीके से script
टैग जोड़ें.
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&callback=initMap">
</script>
डायरेक्ट स्क्रिप्ट लोड होने में लगने वाले यूआरएल पैरामीटर
इस सेक्शन में उन सभी पैरामीटर के बारे में बताया गया है जिन्हें क्वेरी में तय किया जा सकता है
स्ट्रिंग लोड होते समय स्क्रिप्ट लोड होने के यूआरएल की स्ट्रिंग.
कुछ पैरामीटर ज़रूरी होते हैं, जबकि कुछ ज़रूरी नहीं होते. यूआरएल में स्टैंडर्ड के मुताबिक, सभी पैरामीटर को एंपरसैंड (&
) वर्ण का इस्तेमाल करके अलग किया जाता है.
उदाहरण के तौर पर दिए गए इस यूआरएल में, सभी संभावित पैरामीटर के लिए प्लेसहोल्डर मौजूद हैं:
https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY
&loading=async
&callback=FUNCTION_NAME
&v=VERSION
&libraries="LIBRARIES"
&language="LANGUAGE"
®ion="REGION"
&auth_referrer_policy="AUTH_REFERRER_POLICY"
&map_ids="MAP_IDS"
&channel="CHANNEL"
&solution_channel="SOLUTION_IDENTIFIER"
script
टैग के इस उदाहरण में दिया गया यूआरएल, Maps JavaScript API को लोड करता है:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&callback=initMap">
</script>
ज़रूरी पैरामीटर (डायरेक्ट)
Maps JavaScript API को लोड करते समय, इन पैरामीटर की ज़रूरत होती है.
key
: आपकी एपीआई पासकोड. Maps JavaScript API तब तक लोड नहीं होगा, जब तक कोई मान्य API पासकोड नहीं दिया जाता.
वैकल्पिक पैरामीटर (डायरेक्ट)
Maps JavaScript API के किसी खास वर्शन का अनुरोध करने, अतिरिक्त लाइब्रेरी लोड करने, अपने मैप को स्थानीय भाषा में दिखाने या एचटीटीपी रेफ़रर की जांच करने की नीति तय करने के लिए, इन पैरामीटर का इस्तेमाल करें
loading
: कोड लोड करने की वह रणनीति जिसे Maps JavaScript API इस्तेमाल कर सकता है. यह बताने के लिए कि Maps JavaScript API को सिंक्रोनस रूप से लोड नहीं किया गया है और स्क्रिप्ट केload
इवेंट से कोई JavaScript कोड ट्रिगर नहीं होता, यह बताने के लिएasync
पर सेट करें. बेहतर परफ़ॉर्मेंस के लिए, हमारा सुझाव है कि आप इसेasync
पर सेट करें. (Maps JavaScript API उपलब्ध होने पर, कार्रवाइयां करने के लिएcallback
पैरामीटर का इस्तेमाल करें.) यह सुविधा 3.55 वर्शन से उपलब्ध है.callback
: Maps JavaScript API के बाद इस्तेमाल किए जाने वाले ग्लोबल फ़ंक्शन का नाम पूरी तरह से लोड होता है.v
: Maps JavaScript API का इस्तेमाल करने के लिए, उसका वर्शन.libraries
: Maps JavaScript API की उन अतिरिक्त लाइब्रेरी की सूची जिन्हें लोड करना है. इन लाइब्रेरी को कॉमा लगाकर अलग किया गया है.language
: इस्तेमाल की जाने वाली भाषा. इससे कंट्रोल के नाम, कॉपीराइट की सूचनाओं, ड्राइविंग के निर्देशों, और कंट्रोल लेबल पर असर पड़ता है. साथ ही, सेवा के अनुरोधों के जवाबों पर भी असर पड़ता है. देखें इस्तेमाल की जा सकने वाली भाषाओं की सूची देखें.region
: इस्तेमाल करने के लिए इलाके का कोड. इससे, किसी देश या इलाके के हिसाब से मैप के व्यवहार में बदलाव होता है.auth_referrer_policy
: ग्राहक एचटीटीपी रेफ़रर को कॉन्फ़िगर कर सकते हैं Cloud Console की पाबंदियां यह तय करती हैं कि कौनसे यूआरएल को तो एपीआई पासकोड से भी ज़्यादा सुरक्षित तरीके से ऑर्डर कर सकते हैं. डिफ़ॉल्ट रूप से, इन पाबंदियों को अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है एपीआई पासकोड का इस्तेमाल करने के लिए, सिर्फ़ कुछ पाथ का इस्तेमाल किया जा सकता है. अगर एक ही डोमेन या ऑरिजिन पर मौजूद कोई भी यूआरएल, एपीआई पासकोड का इस्तेमाल कर सकता है, तो Maps JavaScript API से अनुरोधों को अनुमति देते समय भेजे जाने वाले डेटा की सीमा तय करने के लिए,auth_referrer_policy=origin
सेट किया जा सकता है. यह 3.46 और इसके बाद के वर्शन में उपलब्ध है. जब यह पैरामीटर तय किया जाता है और Cloud Console पर एचटीटीपी रेफ़रर से जुड़ी पाबंदियां चालू होती हैं, तो Maps JavaScript API सिर्फ़ तब लोड हो पाएगा, जब एचटीटीपी रेफ़रर से जुड़ी कोई ऐसी पाबंदी हो जो मौजूदा वेबसाइट के डोमेन से मैच करती हो और जिसमें कोई पाथ न दिया गया हो.mapIds
: मैप आईडी की कॉमा से अलग की गई सूची. इससे तय किए गए मैप आईडी का कॉन्फ़िगरेशन पहले से लोड होता है.channel
: हर चैनल के हिसाब से इस्तेमाल की ट्रैकिंग देखें.solution_channel
: Google Maps Platform कई तरह के सैंपल कोड देता है ताकि आपको तुरंत काम शुरू करने में मदद मिल सके. इंटरनेट पर उपयोगकर्ताओं के लिए कोड सैंपल देने और समाधान की क्वालिटी को बेहतर बनाने के लिए, Google हमारे सैंपल कोड में, एपीआई कॉल मेंsolution_channel
क्वेरी पैरामीटर.
NPM js-api-loader पैकेज का इस्तेमाल करना
@googlemaps/js-api-loader NPM पैकेज मैनेजर के ज़रिए लोड करने के लिए, पैकेज उपलब्ध है. इसे निम्न आदेश:
npm install @googlemaps/js-api-loader
इस पैकेज को ऐप्लिकेशन में इनके ज़रिए इंपोर्ट किया जा सकता है:
import { Loader } from "@googlemaps/js-api-loader"
लोडर, प्रॉमिस और कॉलबैक इंटरफ़ेस दिखाता है. यहां डिफ़ॉल्ट Promise तरीके load()
के इस्तेमाल के बारे में बताया गया है.
TypeScript
const loader = new Loader({ apiKey: "YOUR_API_KEY", version: "weekly", ...additionalOptions, }); loader.load().then(async () => { const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary; map = new Map(document.getElementById("map") as HTMLElement, { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }); });
JavaScript
const loader = new Loader({ apiKey: "YOUR_API_KEY", version: "weekly", ...additionalOptions, }); loader.load().then(async () => { const { Map } = await google.maps.importLibrary("maps"); map = new Map(document.getElementById("map"), { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }); });
js-api-loader की सुविधा वाला सैंपल देखें.
यहां दिए गए उदाहरण में, लाइब्रेरी लोड करने के लिए loader.importLibrary()
का इस्तेमाल करने का तरीका बताया गया है:
const loader = new Loader({
apiKey: "YOUR_API_KEY",
version: "weekly",
...additionalOptions,
});
loader
.importLibrary('maps')
.then(({Map}) => {
new Map(document.getElementById("map"), mapOptions);
})
.catch((e) => {
// do something
});
डाइनैमिक लाइब्रेरी इंपोर्ट एपीआई पर माइग्रेट करना
इस सेक्शन में, डाइनैमिक लाइब्रेरी इंपोर्ट एपीआई का इस्तेमाल करने के लिए, अपने इंटिग्रेशन को माइग्रेट करने का तरीका बताया गया है.
माइग्रेट करने का तरीका
सबसे पहले, डायरेक्ट स्क्रिप्ट लोडिंग टैग को इनलाइन बूटस्ट्रैप लोडर टैग से बदलें.
पहले
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=maps&callback=initMap">
</script>
बाद में
<script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script>
इसके बाद, अपने ऐप्लिकेशन कोड को अपडेट करें:
- अपने
initMap()
फ़ंक्शन को असाइनोक्रोनस (एक साथ काम न करने वाला) में बदलें. - अपनी ज़रूरत की लाइब्रेरी लोड करने और ऐक्सेस करने के लिए,
importLibrary()
पर कॉल करें.
पहले
let map; function initMap() { map = new google.maps.Map(document.getElementById("map"), { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }); } window.initMap = initMap;
बाद में
let map; // initMap is now async async function initMap() { // Request libraries when needed, not in the script tag. const { Map } = await google.maps.importLibrary("maps"); // Short namespaces can be used. map = new Map(document.getElementById("map"), { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }); } initMap();