Mettre à niveau l'application API Maps JavaScript de la version 2 à la version 3

La version 2 de l'API Maps JavaScript n'est plus disponible depuis le 26 mai 2021. Par conséquent, les cartes v2 de votre site ne fonctionneront plus et renverront des erreurs JavaScript. Pour continuer à utiliser les cartes sur votre site, migrez vers l'API Maps JavaScript v3. Ce guide vous aidera à suivre la procédure.

Présentation

Chaque application a un processus de migration légèrement différent. Toutefois, certaines étapes sont communes à tous les projets:

  1. Obtenez une nouvelle clé. L'API Maps JavaScript utilise désormais la console Google Cloud pour gérer les clés. Si vous utilisez toujours une clé v2, veillez à obtenir votre nouvelle clé API avant de commencer la migration.
  2. Mettez à jour votre API Bootstrap. La plupart des applications chargent la version 3 de l'API Maps JavaScript avec le code suivant:
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
  3. Mettez à jour votre code. Le nombre de modifications requises dépendra en grande partie de votre application. Voici quelques exemples de modifications courantes :
    • Référez-vous 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 toutes les références à des méthodes obsolètes. Un certain nombre de méthodes utilitaires générales ont été supprimées, telles que GDownloadURL et GLog. Remplacez cette fonctionnalité par des bibliothèques utilitaires tierces 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 afin que chaque application ne charge que les parties de l'API qui seront utilisées.
    • (Facultatif) Configurez votre projet pour qu'il utilise les externes v3. Les externes V3 peuvent vous aider à valider votre code avec le compilateur Closure ou à déclencher la saisie semi-automatique dans votre IDE. En savoir plus sur la compilation avancée et les externes
  4. Testez et itérez. À ce stade, vous avez encore du travail à faire, mais la bonne nouvelle est que vous êtes sur la bonne voie pour créer votre nouvelle application Maps v3.

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

Avant de planifier votre migration, vous devez prendre le temps de comprendre les différences entre la version 2 de l'API Maps JavaScript et la version 3. La dernière version de l'API Maps JavaScript a été écrite de zéro, en mettant l'accent sur les techniques de programmation JavaScript modernes, une 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 ou même supprimées. Cette section met en évidence certaines des principales différences entre les deux versions.

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

  • Une bibliothèque centrale simplifiée. De nombreuses fonctions supplémentaires ont été déplacées vers des bibliothèques, ce qui permet de réduire les temps de chargement et d'analyse de l'API Core, ce qui permet de charger rapidement votre carte sur n'importe quel appareil.
  • Amélioration des performances de plusieurs fonctionnalités, telles que le rendu de polygones et le placement de repères.
  • Nouvelle approche des limites d'utilisation côté client pour mieux prendre en charge les adresses partagées utilisées par les proxys mobiles et les pare-feu d'entreprise.
  • Ajout de la compatibilité avec plusieurs navigateurs modernes et navigateurs mobiles. La compatibilité avec Internet Explorer 6 n'est plus assurée.
  • Suppression de nombreuses classes d'assistance à usage général ( GLog ou GDownloadUrl). De nos jours, de nombreuses excellentes bibliothèques JavaScript fournissent 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.
  • Des 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.
  • Des personnalisations de cartes avec styles vous permettant d'adapter l'affichage des éléments de la carte de base en fonction de votre identité visuelle spécifique.
  • Prise en charge de plusieurs nouveaux services, tels que ElevationService et Distance Matrix.
  • Un service d'itinéraires amélioré propose des itinéraires bis, une optimisation des itinéraires (solutions approximatives au problème du voyageur de commerce), des itinéraires à vélo (avec un calque à vélo), des itinéraires en transports en commun et des itinéraires déplaçables.
  • Format Geocoding mis à jour qui fournit des informations sur le type plus précises que la valeur accuracy de l'API Geocoding v2.
  • Prise en charge de 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 à partir de la version 2. Il est possible que vous utilisiez déjà une clé v3 avec votre application, auquel cas aucun changement n'est nécessaire. Pour vérifier, recherchez le paramètre key dans l'URL à partir de laquelle vous chargez l'API Maps JavaScript. 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. Voici ce qui se passera:

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

Notez que si vous êtes client des API Google Maps for Work, vous pouvez utiliser un ID client avec le paramètre client au lieu du paramètre key. Les ID client sont toujours compatibles avec la version 3 de l'API Maps JavaScript et ne nécessitent pas de passer par le processus de mise à niveau des clés.

Charger l'API

La première modification que vous devrez apporter à votre code concerne la façon 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 cas le plus simple, le bootstrap v3 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. L'API v2 place tous les objets dans l'espace de noms global par défaut, ce qui peut entraîner des collisions de noms. Dans la version 3, tous les objets se trouvent 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, rechercher "G" et le remplacer par "google.maps." ne fonctionnera pas complètement. Toutefois, c'est une bonne règle d'or à appliquer 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

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

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

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 é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 en tant qu'objet central de l'API.
  • Les propriétés sont désormais chargées via les classes Options. Dans l'exemple ci-dessus, nous avons défini 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 fonctionnalité en définissant la propriété disableDefaultUI sur "true" dans l'objet MapOptions.

Résumé

À ce stade, vous avez découvert certains des points clés de la migration de la version 2 à la version 3 de l'API Maps JavaScript. Vous devrez peut-être connaître d'autres informations, mais cela dépend de votre application. Dans les sections suivantes, nous avons inclus des instructions de migration pour des cas spécifiques que vous pouvez rencontrer. De plus, plusieurs ressources peuvent vous être utiles pendant le processus de migration.

Si vous rencontrez des problèmes ou 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 fournit une comparaison détaillée des fonctionnalités les plus populaires des versions 2 et 3 de l'API Maps JavaScript. Chaque section de la documentation est conçue pour être lue individuellement. Nous vous recommandons de ne pas lire cette documentation dans son intégralité. Utilisez-la plutôt pour vous aider à effectuer votre migration au cas par cas.

  • Événements : enregistrement et gestion des événements.
  • Commandes : permet de manipuler les commandes de navigation qui s'affichent sur la carte.
  • Superpositions : ajoutez et modifiez des objets sur la carte.
  • Types de carte : tuiles qui constituent la carte de base.
  • Calques : ajoutez et modifiez du contenu en groupe, comme des calques KML ou de trafic.
  • Services : utilisation des services de géocodage, d'itinéraires ou de Street View de Google.

Événements

Le modèle d'événements de la version 3 de l'API Maps JavaScript est semblable à celui utilisé dans la version 2, bien que de nombreux changements aient été apportés en interne.

Commandes

L'API Maps JavaScript affiche des commandes d'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 ensembles 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 cartes 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" standards. 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.

Calques

Les calques sont des objets ajoutés sur une carte. Ils sont composés d'un ou de plusieurs éléments superposés. Ils peuvent être manipulés comme une seule unité et reflètent généralement des collections d'objets.

Services