Mettre à niveau votre application API Maps JavaScript de la V2 à la V3

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 guidera tout au long du processus.

Présentation

Le processus de migration de chaque application est 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 encore une clé v2, assurez-vous d'obtenir votre nouvelle clé API avant de commencer la migration.
  2. Mettez à jour l'amorçage de votre API. 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. Modifiez votre code. Le volume de modifications nécessaire dépendra beaucoup de votre application. Voici quelques modifications courantes :
    • Faites toujours référence à 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 à usage général ont été supprimées, telles que GDownloadURL et GLog. Remplacez cette fonctionnalité par des bibliothèques d'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 n'ait à 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. Apprenez-en plus sur la compilation avancée et les externs.
  4. Testez et itérez. À ce stade, il vous reste du travail, mais la bonne nouvelle est que vous serez sur la bonne voie pour utiliser la nouvelle version de votre 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 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. Elle met l'accent sur 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 certaines des 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 des fonctions supplémentaires ont été déplacées dans des bibliothèques, ce qui permet de réduire les temps de chargement et d'analyse de l'API Core, ce qui permet à votre carte de se charger rapidement sur n'importe quel appareil.
  • Amélioration des performances de plusieurs fonctionnalités, telles que le rendu des polygones et le placement des repères.
  • Nouvelle approche des limites d'utilisation côté client pour 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 navigateurs mobiles. Internet Explorer 6 n'est plus pris en charge.
  • Suppression de nombreuses classes d'assistance à usage général ( GLog ou GDownloadUrl). Il existe aujourd'hui de nombreuses 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.
  • Des panoramas Street View personnalisés contenant 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 des cartes avec styles vous permettent de modifier l'affichage des éléments sur la carte de base pour l'adapter à votre style visuel unique.
  • Prise en charge de plusieurs nouveaux services, tels que ElevationService et Distance Matrix.
  • Un service d'itinéraire amélioré propose des itinéraires alternatifs, l'optimisation des itinéraires (solutions approximatives au problème des commerciaux itinérants), des itinéraires à vélo (avec un calque À vélo), des itinéraires en transports en commun et des itinéraires déplaçables.
  • Mise à jour du format Geocoding, qui fournit des informations de type plus précises que la valeur accuracy de la version 2 de l'API Geocoding.
  • Prise en charge de plusieurs fenêtres d'informations sur une même carte.

Mettre à jour votre application

Votre nouvelle clé

La version 3 de l'API Maps JavaScript utilise un nouveau système de clés de la version 2. Vous utilisez peut-être déjà une clé v3 avec votre application. Dans ce cas, aucune modification n'est nécessaire. Pour le 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", cela signifie que vous utilisez une clé en version 2. Si vous disposez d'une clé v2, vous devez passer à une clé v3 dans le cadre de la migration, ce qui:

La clé est transmise lors du chargement de la version 3 de l'API Maps JavaScript. Découvrez comment générer des clés API.

Notez que si vous êtes un 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 acceptés dans la version 3 de l'API Maps JavaScript. Vous n'avez donc pas besoin de passer par le processus de mise à niveau de la clé.

Charger l'API

La première modification à apporter à votre code concerne le chargement de l'API. Dans la version 2, vous chargez l'API Maps JavaScript via une requête envoyée à 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 depuis //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, l'amorçage v3 ne spécifiera 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

Le changement le plus notable dans 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 conflits de noms. Dans la version 3, tous les objets se trouvent dans l'espace de noms google.maps.

Lors de la migration de votre application vers la version 3, vous devrez 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, il s'agit d'une bonne pratique à 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

L'API Maps JavaScript v3 propose des parallèles pour la plupart des fonctionnalités de la version 2. Cependant, certaines classes ne sont plus compatibles. Dans le cadre de votre migration, vous devez soit remplacer ces classes par des bibliothèques d'utilitaires tierces, soit supprimer ces références de votre code. Il existe de nombreuses bibliothèques JavaScript qui 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 nécessaires dans la version 3 et ont été supprimées de l'API.
  • L'objet GMap2 est remplacé par google.maps.Map comme objet central dans 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 cela en définissant la propriété disableDefaultUI sur "true" dans l'objet MapOptions.

Résumé

À ce stade, vous avez eu un avant-goût de certains des points clés de la migration de la v2 à la v3 de l'API Maps JavaScript. Vous aurez peut-être besoin d'autres informations, mais cela dépendra 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.

Si vous rencontrez des problèmes 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 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 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 ces ressources pour faciliter votre migration au cas par cas.

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

Événements

Le modèle d'événement de la version 3 de l'API Maps JavaScript est semblable à celui de la version 2, bien que de nombreuses modifications aient été apportées en arrière-plan.

Contrôles

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 des 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 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" standards. Cependant, la version 3 exige qu'un type de carte spécifique soit indiqué lors de la création d'un objet google.maps.Map.

Calques

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

Services