Bibliothèques

Afin charger le code JavaScript pour l'API Maps JavaScript, vous devez inclure un script de chargement d'amorçage sur votre page, au format suivant :

<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_HERE",
    // Add other bootstrap parameters as needed, using camel case.
    // Use the 'v' parameter to indicate the version to load (alpha, beta, weekly, etc.)
  });
</script>

L'API Maps JavaScript est constituée de bibliothèques qui ne sont pas chargées, à moins d'envoyer une requête spécifique à cet effet. Diviser les composants en bibliothèques permet à l'API de charger (et d'analyser) rapidement. Ainsi, vous n'entraînez une surcharge supplémentaire que lorsqu'une bibliothèque dont vous avez besoin doit être chargée et analysée.

Pour charger des bibliothèques supplémentaires au moment de l'exécution, utilisez l'opérateur await afin d'appeler importLibrary() à partir d'une fonction async. Exemple :

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

L'exemple de code suivant illustre le chargement des bibliothèques Map et AdvancedMarkerView :

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 { AdvancedMarkerView } = 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 AdvancedMarkerView({
    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 { AdvancedMarkerView } = 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 AdvancedMarkerView({
    map: map,
    position: position,
    title: "Uluru",
  });
}

initMap();

Bibliothèques pour l'importation des bibliothèques dynamiques

Les bibliothèques suivantes peuvent être utilisées avec l'importation des bibliothèques dynamiques :

Bibliothèques pour l'URL d'amorçage (ancienne version)

Les bibliothèques suivantes sont compatibles avec l'ancien tag de script d'amorçage :

La requête d'amorçage suivante montre comment ajouter une requête pour la bibliothèque google.maps.geometry de l'API Maps JavaScript à l'ancien script d'amorçage :

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

Pour demander plusieurs bibliothèques, séparez-les par une virgule :

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