Mettre à jour votre application API Maps JavaScript vers la version 3

L'API Maps JavaScript v2 n'est plus disponible depuis le 26 mai 2021. Par conséquent, les cartes v2 de votre site cesseront de fonctionner et renverront des erreurs JavaScript. Pour continuer à utiliser les cartes sur votre site, migrez vers l'API Maps JavaScript v3. Ce guide vous aidera tout au long du processus.

Présentation

Le processus de migration de chaque application est légèrement différent. Toutefois, certains projets sont communs à tous les projets:

  1. Obtenez une nouvelle clé. L'API Maps JavaScript utilise désormais Google Cloud Console pour gérer les clés. Si vous utilisez encore une clé v2, veillez à obtenir votre nouvelle clé API avant de commencer la migration.
  2. Mettez à jour l'API Bootstrap. La plupart des applications chargent l'API Maps JavaScript v3 avec le code suivant:
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    
  3. Mettez à jour votre code. Le degré de modification requis dépend en grande partie de votre application. Voici les modifications courantes :
    • Référencez toujours l'espace de noms google.maps. Dans la version 3, tout le code de l'API Maps JavaScript est stocké dans l'espace de noms google.maps.* au lieu de l'espace de noms global. La plupart des objets ont également été renommés dans le cadre de ce processus. Par exemple, au lieu de GMap2, vous allez maintenant charger google.maps.Map.
    • Supprimez toute référence à des méthodes obsolètes. Un certain nombre de méthodes utilitaires à usage général ont été supprimées, telles que GDownloadURL et GLog. Remplacez cette fonctionnalité par une bibliothèque d'utilitaires tierce ou supprimez ces références de votre code.
    • (Facultatif) Ajoutez des bibliothèques à votre code. De nombreuses fonctionnalités ont été externalisées dans des bibliothèques d'utilitaires ; ainsi, chaque application ne devra charger que les parties de l'API qui seront utilisées.
    • (Facultatif) Configurez votre projet pour utiliser les externs v3. Les externs v3 peuvent être utilisés pour valider votre code avec Closure Compiler ou pour déclencher la saisie semi-automatique dans votre IDE. En savoir plus sur la compilation avancée et les externs
  4. Testez et recommencez. À ce stade, vous aurez encore du travail, mais la bonne nouvelle, c'est que vous serez bien parti pour votre nouvelle application Maps v3.

Modifications apportées à la version 3 de l'API Maps JavaScript

Avant de planifier votre migration, prenez le temps de comprendre les différences entre l'API Maps JavaScript v2 et l'API Maps JavaScript v3. La dernière version de l'API Maps JavaScript a été entièrement conçue, et plus particulièrement les techniques de programmation JavaScript modernes, l'utilisation accrue des bibliothèques et une API simplifiée. De nombreuses nouvelles fonctionnalités ont été ajoutées à l'API, et plusieurs fonctionnalités familières ont été modifiées, voire supprimées. Cette section met en évidence les principales différences entre les deux versions.

Changements apportés à la version 3 de l'API :

  • Une bibliothèque centrale simplifiée. Un grand nombre de fonctions supplémentaires ont été transférées vers des bibliothèques. Cela permet de réduire les temps de chargement et d'analyse de l'API Core, qui permettent de charger rapidement votre carte sur n'importe quel appareil.
  • Amélioration des performances de plusieurs éléments, tels que le rendu des polygones et l'emplacement des repères
  • Une nouvelle approche des limites d'utilisation côté client permettant de mieux gérer les adresses partagées utilisées par les proxys mobiles et les pare-feu d'entreprise.
  • Ajout de la compatibilité avec plusieurs navigateurs récents et les navigateurs mobiles. Internet Explorer 6 n'est plus pris en charge.
  • Nous avons supprimé de nombreuses classes de l'outil d'aide à usage général (GLog ou GDownloadUrl). Aujourd'hui, il existe d'excellentes bibliothèques JavaScript offrant des fonctionnalités similaires, telles que Closure ou jQuery.
  • Une implémentation HTML5 de Street View qui se chargera sur n'importe quel appareil mobile.
  • Les panoramas Street View personnalisés avec vos propres photos, qui vous permettent de partager des panoramas de pistes de ski, de maisons à vendre ou d'autres lieux intéressants.
  • Les personnalisations de cartes stylisées vous permettent de modifier l'affichage des éléments de la carte de base pour qu'il corresponde à votre style visuel unique.
  • Compatibilité avec plusieurs nouveaux services, tels que ElevationService et Distance Matrix.
  • Les services d'itinéraires améliorés proposent d'autres itinéraires, l'optimisation des itinéraires (qui fournit des solutions approximatives au problème du voyageur commercial), des itinéraires à vélo (avec une couche de vélo), des itinéraires en transports en commun et des itinéraires déplaçables.
  • Format de Geocoding mis à jour qui fournit des informations de type plus précises que la valeur accuracy de l'API Geocoding v2.
  • Compatibilité avec plusieurs fenêtres d'informations sur une seule carte

Mettre à jour votre application

Votre nouvelle clé

L'API Maps JavaScript v3 utilise un nouveau système de clés de la v2. Vous utilisez peut-être déjà une clé v3 avec votre application. Dans ce cas, aucune modification n'est nécessaire. Pour vérifier, vérifiez l'URL à partir de laquelle vous chargez l'API Maps JavaScript pour son paramètre key. Si la valeur de la clé commence par 'ABQIAA', vous utilisez une clé v2. Si vous disposez d'une clé v2, vous devez passer à une clé v3 lors de la migration:

La clé est transmise lors du chargement de l'API Maps JavaScript v3. En savoir plus sur la génération de clés API

Notez que si vous êtes un client des API Google Maps for Work, vous utilisez peut-être un ID client avec le paramètre client au lieu du paramètre key. Les ID client sont toujours compatibles avec l'API Maps JavaScript v3 et n'ont pas besoin de suivre le processus de mise à niveau de clé.

Chargement de l'API

La première modification que vous devrez apporter à votre code implique la manière dont vous chargez l'API. Dans la version 2, vous chargez l'API Maps JavaScript via une requête à http://maps.google.com/maps. Si vous chargez la version 3 de l'API Maps JavaScript, vous devez apporter les modifications suivantes:

  1. Charger l'API à partir de //maps.googleapis.com/maps/api/js
  2. Supprimez le paramètre file.
  3. Mettez à jour le paramètre key avec votre nouvelle clé v3. Les clients des API Google Maps for Work doivent utiliser un paramètre client.
  4. (Forfait Premium Google Maps Platform uniquement) Assurez-vous que le paramètre client est fourni comme expliqué dans le Guide du développeur du forfait Premium Google Maps Platform.
  5. Supprimez le paramètre v pour demander la dernière version publiée ou modifiez sa valeur en fonction du schéma de gestion des versions v3.
  6. (Facultatif) Remplacez le paramètre hl par language et conservez sa valeur.
  7. (Facultatif) Ajoutez un paramètre libraries pour charger des bibliothèques facultatives.

Dans le scénario le plus simple, l'amorçage de la version 3 ne spécifie que le paramètre de clé API:

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

L'exemple ci-dessous demande la dernière version de l'API Maps JavaScript v2 en allemand:

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

L'exemple ci-dessous est une requête équivalente pour la version 3.

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

Présentation de l'espace de noms google.maps

La modification la plus notable de la version 3 de l'API Maps JavaScript est probablement l'introduction de l'espace de noms google.maps. Par défaut, l'API v2 place tous les objets dans l'espace de noms global, ce qui peut entraîner des conflits de noms. Dans la version 3, tous les objets sont situés dans l'espace de noms google.maps.

Lorsque vous migrez votre application vers la version 3, vous devez modifier votre code pour utiliser le nouvel espace de noms. Malheureusement, la recherche "G" et le remplacement par "google.maps." ne fonctionnent pas complètement. Toutefois, nous vous recommandons d'appliquer le principe suivant lorsque vous examinez votre code. Vous trouverez ci-dessous quelques exemples de classes équivalentes dans les versions 2 et 3.

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

Supprimer le code Google obsolète

Dans la version 2, l'API Maps JavaScript 3 dispose de parallèles pour la plupart des fonctionnalités. Toutefois, certaines classes ne sont plus compatibles. Lors de la migration, vous devez soit remplacer ces classes par des bibliothèques d'utilitaires tierces, soit supprimer ces références de votre code. De nombreuses bibliothèques JavaScript d'excellente qualité offrent des fonctionnalités similaires, telles que Closure ou jQuery.

Les classes suivantes n'ont pas de parallèle dans l'API Maps JavaScript v3:

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

Comparer le code

Comparons deux applications plutôt simples qui ont été écrites avec les API v2 et 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>
    

Comme vous pouvez le constater, il existe plusieurs différences entre les deux applications. Les changements notables sont les suivants :

  • L'adresse à partir de laquelle l'API est chargée a été modifiée.
  • Les méthodes GBrowserIsCompatible() et GUnload() ne sont plus requises dans la version 3 et ont été supprimées de l'API.
  • L'objet GMap2 est remplacé par google.maps.Map comme objet central de l'API.
  • Les propriétés sont désormais chargées via les classes Options. Dans l'exemple ci-dessus, nous définissons les trois propriétés requises pour charger une carte (center, zoom et mapTypeId) via un objet MapOptions intégré.
  • L'interface utilisateur par défaut est activée par défaut dans la version 3. Vous pouvez désactiver cette option en définissant la propriété disableDefaultUI sur "true" dans l'objet MapOptions.

Synthèse

À ce stade, vous aurez découvert certains des principaux aspects de la migration de la version 2 à la version 3 de l'API Maps JavaScript. Il y a peut-être d'autres informations à connaître, mais celles-ci dépendent de votre application. Dans les sections suivantes, nous avons inclus des instructions de migration pour les cas spécifiques que vous pouvez rencontrer. Plusieurs ressources peuvent également vous être utiles lors du processus de mise à niveau.

En cas de problème ou si vous avez des questions concernant cet article, veuillez utiliser le lien ENVOYER DES COMMENTAIRES en haut de cette page.

Référence détaillée

Cette section offre un comparatif détaillé des fonctionnalités les plus populaires des versions 2 et 3 de l'API Maps JavaScript. Chaque section de la référence est conçue pour être lue individuellement. Nous vous recommandons de ne pas lire cette référence dans son intégralité. Utilisez plutôt ce support pour faciliter votre migration au cas par cas.

  • Événements : enregistrement et gestion des événements
  • Commandes : manipuler les commandes de navigation qui apparaissent sur la carte.
  • Superpositions : ajout et modification d'objets sur la carte.
  • Types de carte : tuiles qui constituent la carte de base.
  • Calques : ajout et modification de contenu en tant que groupe, telles que les calques KML ou Trafic.
  • Services : utiliser les services de géocodage, d'itinéraire ou Street View de Google

Événements

Le modèle d'événement de l'API Maps JavaScript v3 est semblable à celui utilisé dans la version 2, mais a beaucoup changé en arrière-plan.

Contrôles

L'API Maps JavaScript affiche des commandes de l'interface utilisateur qui permettent aux utilisateurs d'interagir avec votre carte. Vous pouvez utiliser l'API pour personnaliser l'affichage de ces commandes.

Superpositions

Les superpositions reflètent les objets que vous "ajoutez" à la carte pour désigner des points, des lignes, des zones ou des collections d'objets.

Types de carte

Les types de cartes disponibles dans les versions 2 et 3 sont légèrement différents, mais tous les types de carte de base sont disponibles dans les deux versions de l'API. Par défaut, la version 2 utilise des tuiles de carte routière "peintes". Toutefois, la version 3 nécessite de spécifier un type de carte spécifique lors de la création d'un objet google.maps.Map.

de l'image

Les calques sont des objets sur la carte qui consistent en une ou plusieurs superpositions. Ils peuvent être manipulés comme une seule unité et reflètent généralement des collections d'objets.

Services