Cómo actualizar tu aplicación de la API de Maps JavaScript de la versión 2 a la 3

La API de Maps JavaScript versión 2 dejó de estar disponible el 26 de mayo de 2021. Como resultado, los mapas v2 de tu sitio dejarán de funcionar y mostrarán errores de JavaScript. Para seguir usando mapas en tu sitio, migra a la API de Maps JavaScript v3. Esta guía te ayudará durante el proceso.

Descripción general

Cada aplicación tendrá un proceso de migración ligeramente diferente. Sin embargo, hay algunos pasos que son comunes a todos los proyectos:

  1. Obtén una clave nueva. La API de Maps JavaScript ahora usa Google Cloud Console para administrar claves. Si aún usas una clave v2, asegúrate de obtener tu clave de API nueva antes de comenzar la migración.
  2. Actualiza el inicio de la API. La mayoría de las aplicaciones cargan la API de Maps JavaScript v3 con el siguiente código:
    <script src="//maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    
  3. Actualiza tu código. La cantidad de cambios necesarios dependerá mucho de tu aplicación. Entre los cambios comunes, se incluyen los siguientes:
    • Haz referencia siempre al espacio de nombres google.maps. En la versión 3, todo el código de la API de Maps JavaScript se almacena en el espacio de nombres google.maps.*, en lugar del espacio de nombres global. La mayoría de los objetos también cambiaron de nombre como parte de este proceso. Por ejemplo, en lugar de GMap2, cargarás google.maps.Map.
    • Quita todas las referencias a métodos obsoletos. Se quitaron varios métodos de utilidad generales, como GDownloadURL y GLog. Reemplaza esta funcionalidad por bibliotecas de utilidades de terceros o quita estas referencias de tu código.
    • (Opcional) Agrega bibliotecas a tu código. Muchas funciones se externalizaron en bibliotecas de utilidades para que cada app solo tenga que cargar las partes de la API que se usarán.
    • (Opcional) Configura tu proyecto para usar los elementos externalizados de la v3. Los externalizados de la v3 se pueden usar para validar tu código con Closure Compiler o activar el autocompletado en tu IDE. Obtén más información sobre la compilación avanzada y los elementos externos.
  4. Prueba y repite. En este punto, aún debes trabajar, pero la buena noticia es que estarás en camino a la nueva aplicación de mapas v3.

Cambios en la V3 de la API de Maps JavaScript

Antes de planificar tu migración, debes tomarte un tiempo para comprender las diferencias entre la API de Maps JavaScript v2 y la API de Maps JavaScript v3. La versión más reciente de la API de Maps JavaScript se escribió desde cero, con un enfoque en técnicas modernas de programación de JavaScript, un mayor uso de bibliotecas y una API simplificada. Se agregaron muchas funciones nuevas a la API y se modificaron o incluso quitaron algunas funciones conocidas. En esta sección, se destacan algunas de las diferencias clave entre las dos versiones.

Entre algunos de los cambios en la API v3 se incluyen los siguientes:

  • Una biblioteca central simplificada. Muchas de las funciones complementarias se trasladaron a bibliotecas, lo que ayuda a reducir los tiempos de carga y análisis de la API principal, lo que permite que el mapa se cargue con rapidez en cualquier dispositivo.
  • Se mejoró el rendimiento de varias funciones, como la renderización de polígonos y la ubicación de los marcadores.
  • Un enfoque nuevo para los límites de uso del cliente, a fin de adaptarse mejor a las direcciones compartidas que usan los proxies móviles y los firewalls corporativos.
  • Se agregó compatibilidad con varios navegadores modernos y navegadores para dispositivos móviles. Se quitó la compatibilidad con Internet Explorer 6.
  • Se quitaron muchas de las clases auxiliares de uso general (GLog o GDownloadUrl). En la actualidad, existen muchas bibliotecas de JavaScript excelentes que proporcionan una funcionalidad similar, como Closure o jQuery.
  • Una implementación de Street View HTML5 que se carga en cualquier dispositivo móvil.
  • Panorámicas de Street View personalizadas con tus propias fotos, lo que te permite compartir panoramas de pistas de esquí, casas en venta u otros lugares interesantes.
  • Personalizaciones de mapas con ajustes de estilo que te permiten cambiar la visualización de los elementos en el mapa base para que coincidan con tu estilo visual único.
  • Compatibilidad con varios servicios nuevos, como ElevationService y Distance Matrix
  • Un servicio mejorado de instrucciones sobre cómo llegar proporciona rutas alternativas, optimización de rutas (soluciones aproximadas para el problema de un vendedor que viaja), instrucciones sobre cómo llegar en bicicleta (con capa para andar en bicicleta), instrucciones sobre cómo llegar en transporte público y instrucciones sobre cómo llegar.
  • Un formato de Geocoding actualizado que proporciona información de type más precisa que el valor accuracy de la Geocoding API v2.
  • Compatibilidad con varias ventanas de información en un solo mapa

Actualizar tu aplicación

Tu clave nueva

La Maps JavaScript API v3 utiliza un nuevo sistema de claves de la v2. Es posible que ya uses una clave v3 con tu aplicación, en cuyo caso no se necesita ningún cambio. Para verificar, verifica la URL desde la que cargas la API de Maps JavaScript para obtener el parámetro key. Si el valor de la clave comienza con "ABQIAA", debes usar una clave v2. Si tienes una clave v2, debes actualizar a una clave v3 como parte de la migración, lo que hará lo siguiente:

La clave se pasa cuando se carga la Maps JavaScript API v3. Obtén más información sobre cómo generar claves de API.

Ten en cuenta que, si eres cliente de Google Maps API for Work, es posible que uses un ID de cliente con el parámetro client en lugar de key. Los ID de cliente aún son compatibles con la API de Maps JavaScript v3 y no necesitan pasar por el proceso de actualización de claves.

Cargando la API

La primera modificación que deberás realizar en tu código implica cómo se carga la API. En la versión 2, se carga la API de Maps JavaScript mediante una solicitud a http://maps.google.com/maps. Si cargas la API de Maps JavaScript v3, deberás realizar los siguientes cambios:

  1. Carga la API desde //maps.googleapis.com/maps/api/js
  2. Quita el parámetro file.
  3. Actualiza el parámetro key con tu clave v3 nueva. Los clientes de Google Maps APIs for Work deben usar un parámetro client.
  4. (Solo en el plan Premium de Google Maps Platform) Asegúrate de que el parámetro client se proporcione como se explica en la Guía para desarrolladores del plan Premium de Google Maps Platform.
  5. Quita el parámetro v para solicitar la versión más reciente o cambia su valor según el esquema de control de versiones v3.
  6. Reemplaza el parámetro hl por language y conserva su valor (opcional).
  7. Agrega un parámetro libraries para cargar bibliotecas opcionales (opcional).

En el caso más simple, el arranque de la v3 especificará solo tu parámetro de clave de API:

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

En el siguiente ejemplo, se solicita la última versión de la API de Maps JavaScript v2 en alemán:

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

El siguiente ejemplo es una solicitud equivalente para v3.

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

Presentación del espacio de nombres google.maps

Probablemente, el cambio más notable en la API de Maps JavaScript v3 es la introducción del espacio de nombres google.maps. La API v2 coloca todos los objetos en el espacio de nombres global de forma predeterminada, lo que puede generar conflictos de nombres. En la versión 3, todos los objetos se encuentran en el espacio de nombres google.maps.

Cuando migres tu aplicación a la versión 3, deberás cambiar el código para usar el espacio de nombres nuevo. Lamentablemente, buscar "G" y reemplazarlo por "google.maps." no funcionará por completo; sin embargo, es una buena regla general que se debe aplicar al revisar el código. A continuación, se muestran algunos ejemplos de las clases equivalentes en v2 y v3.

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

Quitar el código obsoleto

La Maps JavaScript API v3 tiene paralelismo para la mayoría de las funcionalidades de la v2; sin embargo, hay algunas clases que ya no son compatibles. Como parte de tu migración, debes reemplazar estas clases por bibliotecas de utilidades de terceros o quitar estas referencias de tu código. Existen muchas bibliotecas de JavaScript excelentes que proporcionan una funcionalidad similar, como Closure o jQuery.

Las siguientes clases no tienen paralelismo en la Maps JavaScript API v3:

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

Comparar el código

Comparemos dos aplicaciones bastante simples que se escribieron con las API v2 y 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>
    

Como puedes ver, hay varias diferencias entre las dos aplicaciones. Entre los cambios destacados se incluyen los siguientes:

  • Se modificó la dirección desde la cual se carga la API.
  • Los métodos GBrowserIsCompatible() y GUnload() ya no son necesarios en la versión 3 y se quitaron de la API.
  • El objeto GMap2 se reemplaza por google.maps.Map como el objeto central de la API.
  • Ahora, las propiedades se cargan a través de las clases de Options. En el ejemplo anterior, configuramos las tres propiedades necesarias para cargar un mapa (center, zoom y mapTypeId) a través de un objeto MapOptions intercalado.
  • En la v3, se encuentra habilitado el valor predeterminado de la IU. Para inhabilitarlo, configura la propiedad disableDefaultUI como verdadera en el objeto MapOptions.

Resumen

En este punto, tendrás una idea de algunos de los puntos clave de tu migración de la v2 a la v3 de la API de Maps JavaScript. Hay más información que debes conocer, pero dependerá de tu aplicación. En las siguientes secciones, incluimos instrucciones de migración para casos específicos que puedes encontrar. Además, hay varios recursos que pueden resultarte útiles durante el proceso de actualización.

Si tienes problemas o preguntas sobre este artículo, usa el vínculo ENVIAR COMENTARIOS que se encuentra en la parte superior de esta página.

Referencia detallada

En esta sección, se proporciona una comparación detallada de las funciones más populares de la versión 2 y la 3 de la API de Maps JavaScript. Cada sección de la referencia está diseñada para leerse de forma individual. Te recomendamos que no leas esta referencia en su totalidad. En su lugar, usa este material para facilitar la migración según el caso.

  • Eventos: cómo registrar y administrar eventos
  • Controles: Manipula los controles de navegación que aparecen en el mapa.
  • Superposiciones: Se agregan y editan objetos en el mapa.
  • Tipos de mapas: Son los mosaicos que componen el mapa base.
  • Capas: Agrega y edita contenido en grupo, como las capas KML o Traffic.
  • Servicios: trabajo con la codificación geográfica, las instrucciones sobre cómo llegar o los servicios de Street View de Google.

Eventos

El modelo de evento para la API de Maps JavaScript v3 es similar al que se usa en la v2, aunque muchos aspectos no visibles han cambiado.

Controles

La API de Maps JavaScript muestra los controles de la IU que permiten a los usuarios interactuar con tu mapa. Puedes usar la API para personalizar cómo aparecen estos controles.

Superposiciones

Las superposiciones reflejan los objetos que agregas al mapa para designar puntos, líneas, áreas o colecciones de objetos.

Tipos de mapas

Los tipos de mapas disponibles en la v2 y la v3 son ligeramente diferentes, pero todos los tipos de mapas básicos están disponibles en ambas versiones de la API. De forma predeterminada, la v2 usa mosaicos de mapas de ruta estándares pintados. Sin embargo, en la v3 se requiere un tipo de mapa específico cuando se crea un objeto google.maps.Map.

de la imagen

Las capas son objetos en el mapa que consisten en una o más superposiciones. Se pueden manipular como una sola unidad y, por lo general, reflejan colecciones de objetos.

Servicios