Libraries

To load the JavaScript code for the Maps JavaScript API, you include a bootstrap loader script on your page, of the following form:

< 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 
>

The Maps JavaScript API is made up of libraries that are not loaded until you specifically request them. Breaking up components into libraries allows the API to load (and parse) quickly. You only incur the additional overhead of loading and parsing libraries as you need them.

Load additional libraries at runtime, by using the await operator to call importLibrary() from within an async function. For example:

 const 
  
 { 
  
 Map 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "maps" 
 ); 

The following code example shows loading both the Map and AdvancedMarkerElement libraries:

TypeScript

 // Initialize and add the map 
 let 
  
 map 
 ; 
 async 
  
 function 
  
 initMap 
 () 
 : 
  
 Promise<void> 
  
 { 
  
 // The location of Uluru 
  
 const 
  
 position 
  
 = 
  
 { 
  
 lat 
 : 
  
 - 
 25.344 
 , 
  
 lng 
 : 
  
 131.031 
  
 }; 
  
 // Request needed libraries. 
  
 //@ts-ignore 
  
 const 
  
 { 
  
 Map 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "maps" 
 ) 
  
 as 
  
 google 
 . 
 maps 
 . 
 MapsLibrary 
 ; 
  
 const 
  
 { 
  
 AdvancedMarkerElement 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "marker" 
 ) 
  
 as 
  
 google 
 . 
 maps 
 . 
 MarkerLibrary 
 ; 
  
 // The map, centered at Uluru 
  
 map 
  
 = 
  
 new 
  
 Map 
 ( 
  
 document 
 . 
 getElementById 
 ( 
 'map' 
 ) 
  
 as 
  
 HTMLElement 
 , 
  
 { 
  
 zoom 
 : 
  
 4 
 , 
  
 center 
 : 
  
 position 
 , 
  
 mapId 
 : 
  
 'DEMO_MAP_ID' 
 , 
  
 } 
  
 ); 
  
 // The marker, positioned at Uluru 
  
 const 
  
 marker 
  
 = 
  
 new 
  
 AdvancedMarkerElement 
 ({ 
  
 map 
 : 
  
 map 
 , 
  
 position 
 : 
  
 position 
 , 
  
 title 
 : 
  
 'Uluru' 
  
 }); 
 } 
 initMap 
 (); 
  

JavaScript

 // Initialize and add the map 
 let 
  
 map 
 ; 
 async 
  
 function 
  
 initMap 
 () 
  
 { 
  
 // The location of Uluru 
  
 const 
  
 position 
  
 = 
  
 { 
  
 lat 
 : 
  
 - 
 25.344 
 , 
  
 lng 
 : 
  
 131.031 
  
 }; 
  
 // Request needed libraries. 
  
 //@ts-ignore 
  
 const 
  
 { 
  
 Map 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "maps" 
 ); 
  
 const 
  
 { 
  
 AdvancedMarkerElement 
  
 } 
  
 = 
  
 await 
  
 google 
 . 
 maps 
 . 
 importLibrary 
 ( 
 "marker" 
 ); 
  
 // The map, centered at Uluru 
  
 map 
  
 = 
  
 new 
  
 Map 
 ( 
 document 
 . 
 getElementById 
 ( 
 "map" 
 ), 
  
 { 
  
 zoom 
 : 
  
 4 
 , 
  
 center 
 : 
  
 position 
 , 
  
 mapId 
 : 
  
 "DEMO_MAP_ID" 
 , 
  
 }); 
  
 // The marker, positioned at Uluru 
  
 const 
  
 marker 
  
 = 
  
 new 
  
 AdvancedMarkerElement 
 ({ 
  
 map 
 : 
  
 map 
 , 
  
 position 
 : 
  
 position 
 , 
  
 title 
 : 
  
 "Uluru" 
 , 
  
 }); 
 } 
 initMap 
 (); 
  

Available Libraries

The following libraries are available for use with dynamic library import and direct script loading tag :

The following bootstrap request illustrates how to add a request for the google.maps.geometry library of the Maps JavaScript API, to the direct script loading tag:

<script async
    src="https://maps.googleapis.com/maps/api/js?key= YOUR_API_KEY 
&loading=async &libraries=geometry&callback=initMap">
</script>

To request multiple libraries, separate them with a comma:

<script async
    src="https://maps.googleapis.com/maps/api/js?key= YOUR_API_KEY 
&loading=async &libraries=geometry,places&callback=initMap">
</script>
Create a Mobile Website
View Site in Mobile | Classic
Share by: