Eseguire l'upgrade dell'applicazione API Maps JavaScript dalla versione 2 alla versione 3

La versione 2 dell'API Maps JavaScript non è più disponibile dal 26 maggio 2021. Di conseguenza, le mappe v2 del tuo sito smetteranno di funzionare e restituiranno errori JavaScript. Per continuare a utilizzare le mappe sul tuo sito, esegui la migrazione alla versione 3 dell'API Maps JavaScript. Questa guida ti aiuterà a svolgere la procedura.

Panoramica

Ogni applicazione avrà una procedura di migrazione leggermente diversa, ma alcuni passaggi sono comuni a tutti i progetti:

  1. Richiedi una nuova chiave. L'API Maps JavaScript ora utilizza la console Google Cloud per gestire le chiavi. Se utilizzi ancora una chiave v2, assicurati di ottenere la nuova chiave API prima di iniziare la migrazione.
  2. Aggiorna il bootstrap dell'API. La maggior parte delle applicazioni carica l'API Maps JavaScript v3 con il seguente codice:
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
  3. Aggiorna il codice. La quantità di modifiche necessarie dipende molto dalla tua applicazione. Le modifiche più comuni includono:
    • Fai sempre riferimento allo spazio dei nomi google.maps. Nella versione 3, tutto il codice dell'API Maps JavaScript viene memorizzato nello spazio dei nomi google.maps.* anziché nello spazio dei nomi globale. Nell'ambito di questo processo, la maggior parte degli oggetti è stata rinominata. Ad esempio, invece di GMap2, ora caricate google.maps.Map.
    • Rimuovi eventuali riferimenti a metodi obsoleti. È stato rimosso un numero di metodi di utilità generici, ad esempio GDownloadURL e GLog. Sostituisci questa funzionalità con librerie di utilità di terze parti o rimuovi questi riferimenti dal codice.
    • (Facoltativo) Aggiungi librerie al codice. Molte funzionalità sono state estruse in librerie di utilità in modo che ogni app debba caricare solo le parti dell'API che verranno utilizzate.
    • (Facoltativo) Configura il progetto in modo da utilizzare gli elementi esterni v3. Gli elementi extern della versione 3 possono essere utilizzati per convalidare il codice con il Closure Compiler o per attivare il completamento automatico nell'IDE. Scopri di più su Compilazione avanzata ed esterni.
  4. Esegui test e iterazioni. A questo punto, dovrai ancora fare un po' di lavoro, ma la buona notizia è che sei sulla buona strada per creare la tua nuova applicazione Maps v3.

Modifiche nella versione 3 dell'API Maps JavaScript

Prima di pianificare la migrazione, ti consigliamo di comprendere le differenze tra la versione 2 e la versione 3 dell'API Maps JavaScript. La versione più recente dell'API Maps JavaScript è stata scritta da zero, con un'attenzione particolare alle tecniche di programmazione JavaScript moderne, all'utilizzo maggiore delle librerie e a un'API semplificata. All'API sono state aggiunte molte nuove funzionalità e alcune funzionalità familiari sono state modificate o addirittura rimosse. Questa sezione mette in evidenza alcune delle principali differenze tra le due release.

Alcune delle modifiche nell'API v3 includono:

  • Una libreria di base semplificata. Molte delle funzioni supplementari sono state spostate in librerie, contribuendo a ridurre i tempi di caricamento e analisi dell'API Core, il che consente di caricare rapidamente la mappa su qualsiasi dispositivo.
  • Miglioramento delle prestazioni di diverse funzionalità, ad esempio il rendering dei poligoni e il posizionamento degli indicatori.
  • Un nuovo approccio ai limiti di utilizzo lato client per supportare meglio gli indirizzi condivisi utilizzati dai proxy mobile e dai firewall aziendali.
  • È stato aggiunto il supporto per diversi browser moderni e browser mobile. Il supporto per Internet Explorer 6 è stato ritirato.
  • Sono stati rimossi molti dei classi helper generici ( GLog o GDownloadUrl). Oggi esistono molte eccellenti librerie JavaScript che forniscono funzionalità simili, come Closure o jQuery.
  • Un'implementazione di Street View in HTML5 che verrà caricata su qualsiasi dispositivo mobile.
  • Panorami di Street View personalizzati con le tue foto, che ti consentono di condividere panorami di piste da sci, case in vendita o altri luoghi interessanti.
  • Personalizzazioni delle mappe stilizzate che ti consentono di modificare la visualizzazione degli elementi sulla mappa di base in base al tuo stile visivo unico.
  • Supporto di diversi nuovi servizi, come ElevationService e DistanceMatriX.
  • Un servizio di indicazioni stradali migliorato fornisce percorsi alternativi, ottimizzazione dei percorsi (soluzioni approssimative al problema del commesso viaggiatore), indicazioni per biciclette (con il livello per biciclette), indicazioni per i trasporti pubblici e indicazioni spostabili.
  • Un formato Geocoding aggiornato che fornisce informazioni sul tipo più precise rispetto al valore accuracy dell'API Geocoding v2.
  • Supporto di più finestre informative in una singola mappa

Eseguire l'upgrade dell'applicazione

La tua nuova chiave

La versione 3 dell'API Maps JavaScript utilizza un nuovo sistema di chiavi rispetto alla versione 2. È possibile che tu stia già utilizzando una chiave v3 con la tua applicazione, in questo caso non è necessaria alcuna modifica. Per verificare, controlla il parametro key dell'URL da cui carichi l'API Maps JavaScript. Se il valore della chiave inizia con "ABQIAA", significa che stai utilizzando una chiave v2. Se hai una chiave v2, devi eseguire l'upgrade a una chiave v3 nell'ambito della migrazione, che:

La chiave viene passata durante il caricamento dell'API Maps JavaScript v3. Scopri di più sulla generazione di chiavi API.

Tieni presente che se sei un cliente delle API di Google Maps per il lavoro, potresti utilizzare un ID cliente con il parametro client anziché il parametro key. Gli ID client sono ancora supportati nella versione 3 dell'API JavaScript di Maps e non devono essere sottoposti alla procedura di upgrade delle chiavi.

Caricamento dell'API in corso

La prima modifica che dovrai apportare al codice riguarda il caricamento dell'API. Nella versione 2, carichi l'API Maps JavaScript tramite una richiesta a http://maps.google.com/maps. Se caricate la versione 3 dell'API Maps JavaScript, dovete apportare le seguenti modifiche:

  1. Carica l'API da //maps.googleapis.com/maps/api/js
  2. Rimuovi il parametro file.
  3. Aggiorna il parametro key con la nuova chiave v3. I clienti delle API di Google Maps per il lavoro devono utilizzare un parametro client.
  4. (Solo per il piano Premium di Google Maps Platform) Assicurati che il parametro client sia fornito come spiegato nella Guida per gli sviluppatori del piano Premium di Google Maps Platform.
  5. Rimuovi il parametro v per richiedere la versione rilasciata più recente o modifica il relativo valore in base allo schema di versionamento v3.
  6. (Facoltativo) Sostituisci il parametro hl con language e mantieni il relativo valore.
  7. (Facoltativo) Aggiungi un parametro libraries per caricare librerie facoltative.

Nel caso più semplice, lo bootstrap della versione 3 specificherà solo il parametro della chiave API:

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

L'esempio seguente richiede la versione più recente dell'API Maps JavaScript v2 in tedesco:

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

L'esempio seguente è una richiesta equivalente per la versione 3.

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

Introduzione allo spazio dei nomi google.maps

Probabilmente la modifica più evidente nell'API Maps JavaScript 3 è l'introduzione dello spazio dei nomi google.maps. L'API v2 inserisce per impostazione predefinita tutti gli oggetti nello spazio dei nomi globale, il che può comportare collisioni dei nomi. Nella versione 3, tutti gli oggetti si trovano nello spazio dei nomi google.maps.

Quando esegui la migrazione dell'applicazione alla versione 3, dovrai modificare il codice per utilizzare il nuovo spazio dei nomi. Purtroppo, la ricerca di "G" e la sostituzione con "google.maps" non funziona completamente, ma è una buona regola di base da applicare durante la revisione del codice. Di seguito sono riportati alcuni esempi di classi equivalenti nella versione 2 e 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

Rimozione del codice obsoleto

La versione 3 dell'API JavaScript di Maps ha elementi paralleli per la maggior parte delle funzionalità della versione 2; tuttavia, alcune classi non sono più supportate. Nell'ambito della migrazione, devi sostituire queste classi con librerie di utilità di terze parti o rimuovere questi riferimenti dal codice. Esistono molte ottime librerie JavaScript che forniscono funzionalità simili, come Closure o jQuery.

Le seguenti classi non hanno un parallelo nella versione 3 dell'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

Confronto del codice

Confrontiamo due applicazioni piuttosto semplici scritte con le API v2 e 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>
    

Come puoi vedere, esistono diverse differenze tra le due applicazioni. Le modifiche principali includono:

  • L'indirizzo da cui viene caricata l'API è cambiato.
  • I metodi GBrowserIsCompatible() e GUnload() non sono più obbligatori nella versione 3 e sono stati rimossi dall' API.
  • L'oggetto GMap2 viene sostituito da google.maps.Map come oggetto centrale dell'API.
  • Le proprietà vengono ora caricate tramite le classi Options. Nell'esempio precedente, abbiamo impostato le tre proprietà necessarie per caricare una mappa (center, zoom e mapTypeId) tramite un oggetto MapOptions in linea.
  • L'interfaccia utente predefinita è attiva per impostazione predefinita nella versione 3. Puoi disattivare questa opzione impostando la proprietà disableDefaultUI su true nell'oggetto MapOptions.

Riepilogo

A questo punto avrai avuto un'idea di alcuni dei punti chiave coinvolti nella migrazione dalla versione 2 alla versione 3 dell'API JavaScript di Maps. Potresti dover conoscere altre informazioni, ma dipende dalla tua applicazione. Nelle sezioni seguenti sono incluse istruzioni di migrazione per casi specifici che potresti riscontrare. Inoltre, esistono diverse risorse che potresti trovare utili durante la procedura di upgrade.

In caso di problemi o domande su questo articolo, utilizza il link INVIACI FEEDBACK nella parte superiore di questa pagina.

Riferimento dettagliato

Questa sezione fornisce un confronto dettagliato delle funzionalità più utilizzate sia per la versione 2 che per la versione 3 dell'API Maps JavaScript. Ogni sezione del riferimento è progettata per essere letta singolarmente. Ti consigliamo di non leggere questo documento di riferimento nella sua interezza, ma di utilizzare questo materiale per facilitare la migrazione caso per caso.

  • Eventi: registrazione e gestione degli eventi.
  • Controlli: consente di manipolare i controlli di navigazione visualizzati sulla mappa.
  • Overlay: per aggiungere e modificare gli oggetti sulla mappa.
  • Tipi di mappa: i riquadri che compongono la mappa base.
  • Livelli: per aggiungere e modificare i contenuti come gruppo, ad esempio i livelli KML o di traffico.
  • Servizi: utilizzo dei servizi di geocodifica, indicazioni stradali o Street View di Google.

Eventi

Il modello di eventi per la versione 3 dell'API Maps JavaScript è simile a quello utilizzato nella versione 2, anche se molto è cambiato sotto il cofano.

Controlli

L'API Maps JavaScript mostra i controlli dell'interfaccia utente che consentono agli utenti di interagire con la mappa. Puoi utilizzare l'API per personalizzare la visualizzazione di questi controlli.

Sovrapposizioni

Gli overlay riflettono gli oggetti che "aggiungi" alla mappa per designare punti, linee, aree o raccolte di oggetti.

Tipi di mappe

I tipi di mappe disponibili nelle versioni 2 e 3 sono leggermente diversi, ma tutti i tipi di mappe di base sono disponibili in entrambe le versioni dell'API. Per impostazione predefinita, la versione 2 utilizza i riquadri della mappa stradale "dipinta" standard. Tuttavia, la versione 3 richiede di specificare un tipo di mappa quando si crea un oggetto google.maps.Map.

Livelli

I livelli sono oggetti sulla mappa costituiti da uno o più overlay. Possono essere manipolati come un'unica unità e generalmente riflettono raccolte di oggetti.

Servizi