Eso es todo.

Para comenzar a desarrollar, consulta nuestra documentación para desarrolladores.

Activar la Google Maps Elevation API

Para que puedas comenzar, te proporcionaremos orientación en la Google Developers Console a fin de que hagas primero algunas acciones:

  1. Crear o seleccionar un proyecto
  2. Activar la Google Maps Elevation API
  3. Crear claves correspondientes
Continuar

Guía del desarrollador

La Google Maps Elevation API te ofrece una interfaz sencilla para realizar consultas de ubicaciones en la superficie terrestre y obtener datos de elevación. A su vez, puedes solicitar muestras de datos de elevación para trayectos, lo que te permite calcular los cambios de elevación entre diferentes rutas.

Este servicio también está disponible como parte de la Google Maps JavaScript API de cliente o para el uso en el servidor con Java Client, Python Client, Go Client y Node.js Client for Google Maps Services. Note: Se aplican los mismos límites de uso, independientemente de la forma en que uses el servicio. Las solicitudes diarias se calculan como la suma de las consultas de cliente y de servidor.

Este documento está orientado a desarrolladores de sitios web y móviles que quieren usar datos de elevación dentro de mapas proporcionados por una de las Google Maps API. Proporciona una introducción al uso de la API y material de referencia acerca de los parámetros disponibles.

Introducción

Google Maps Elevation API proporciona datos de elevación para todas las ubicaciones sobre la superficie terrestre, incluidas ubicaciones profundas en el lecho marino (que devuelven valores negativos). En aquellos casos en los cuales Google no cuente con mediciones de elevación exactas para la ubicación precisa de tu solicitud, el servicio realizará una interpolación y devolverá un valor promediado recurriendo a las cuatro ubicaciones más cercanas. Los valores de elevación se expresan en función del nivel medio del mar (NMM) local.

Con la Google Maps Elevation API, puedes desarrollar aplicaciones de senderismo y ciclismo, aplicaciones de posicionamiento móvil o aplicaciones de consulta en baja resolución.

Puedes acceder a Google Maps Elevation API a través de una interfaz HTTP. Los usuarios de Google Maps JavaScript API también pueden acceder a esta API directamente usando el objeto ElevationService(). (Consulta el Servicio de elevación para obtener más información).

Antes de comenzar a realizar desarrollos con la Elevation API, revisa los requisitos de autenticación (necesitas una clave de API) y los límites de uso de la API.

Solicitudes de elevación

Las solicitudes de Google Maps Elevation API se construyen como una string de URL. La API muestra datos de elevación para ubicaciones en la superficie de la tierra. Debes especificar los datos de ubicación en una de estas dos maneras:

  • Como un conjunto de una o más locations.
  • Como una serie de puntos conectados a lo largo de una path.

Cualquiera de estos enfoques usan coordenadas de latitud/longitud para identificar las ubicaciones o los vértices del trayecto. Este documento describe el formato obligatorio para las direcciones URL de Google Maps Elevation API y los parámetros disponibles.

La Google Maps Elevation API devuelve datos para consultas individuales con la mayor precisión posible. Las consultas en lote que incluyan múltiples ubicaciones pueden devolver datos menos precisos, especialmente si las ubicaciones están distanciadas entre sí, ya que puede ocurrir cierta unificación de los datos.

Una solicitud de Google Maps Elevation API debe respetar la siguiente forma:

https://maps.googleapis.com/maps/api/elevation/outputFormat?parameters

donde outputFormat puede ser cualquiera de los siguientes valores:

  • json (recomendado) indica el formato de salida en JavaScript Object Notation (JSON), o
  • xml, indica el formato de salida en XML, agrupado en un nodo <ElevationResponse>.

Nota: Las URL deben estar correctamente codificadas para ser válidas y tienen una limitación de 8192 caracteres para todos los servicios web. Debes tener en cuenta este límite cuando construyas tus URL. Ten en cuenta que los diferentes navegadores, proxies y servidores también pueden tener límites de caracteres diferentes para las direcciones URL.

HTTPS o HTTP

La seguridad es importante y se recomienda usar HTTPS, siempre que sea posible, especialmente para aplicaciones que incluyen en las solicitudes datos confidenciales de los usuarios, como la ubicación. El uso de encriptación HTTPS aporta más seguridad a tu aplicación y la hace más resistente contra las intromisiones o la manipulación.

Si no es posible usar HTTPS, usa lo siguiente para acceder a la Google Maps Elevation API a través de HTTP:

http://maps.googleapis.com/maps/api/elevation/outputFormat?parameters

Parámetros de la solicitud

Las solicitudes a la Google Maps Elevation API utilizan diferentes parámetros en función de si la solicitud es para ubicaciones discontinuas o para un trayecto ordenado. Para las ubicaciones discontinuas, las solicitudes de elevación devuelven datos sobre las ubicaciones específicas que se pasaron en la solicitud; para trayectos, las solicitudes de elevación se muestrean a lo largo del trayecto especificado.

Como es norma en todas las direcciones URL, los parámetros se separan con el carácter de Y comercial (&). A continuación, se proporciona una lista de los parámetros y sus posibles valores.

Todas las solicitudes

  • key (obligatorio) es la clave de API de tu aplicación. Esta clave identifica tu aplicación a los fines de la administración de la cuota. Infórmate acerca de cómo obtener una clave.

    Nota: Los clientes de Google Maps APIs Premium Plan pueden usar una clave de API, o una firma digital y un ID de cliente válidos, en tus solicitudes de Elevation. Obtén más información sobre parámetros de autenticación para clientes del Premium Plan.

Solicitudes posicionales

  • locations (obligatorio) define las ubicaciones terrestres a partir de las cuales deben devolverse datos de elevación. Este parámetro toma una ubicación individual como par de {latitude,longitude} separado por comas (p. ej., "40.714728,-73.998672") o múltiples pares de latitud/longitud como una matriz o una polilínea codificada. Para obtener más información, consulta Especificación de ubicaciones a continuación.

Solicitudes de trayectos muestreados

  • path (obligatorio) define un trayecto en el planeta para el cual deben devolverse datos de elevación. Este parámetro define un conjunto de dos o más pares ordenados de {latitude,longitude} que definen un trayecto sobre la superficie terrestre. Este parámetro se debe usar junto con el parámetro samples que se describe a continuación. Para obtener más información, consulta Especificación de trayectos a continuación.
  • samples (obligatorio) especifica la cantidad de puntos de ejemplo a lo largo de un trayecto para el cual deben devolverse datos de elevación. El parámetro samples divide el parámetro path determinado en un conjunto ordenado de puntos equidistantes a lo largo del trayecto.

Especificación de ubicaciones

Las solicitudes posicionales se indican mediante el uso del parámetro locations, que indica solicitudes de elevación para las ubicaciones específicas que se pasaron como valores de latitud/longitud.

El parámetro locations puede tener los siguientes argumentos:

  • Una sola coordenada: locations=40.714728,-73.998672
  • Una matriz de coordenadas separadas con un carácter de barra vertical ('|“): locations=40.714728,-73.998672|-34.397,150.644
  • Un conjunto de coordenadas codificadas usando el Algoritmo de polilínea codificada: locations=enc:gfo}EtohhU

Las cadenas de coordenadas de latitud y longitud se definen con numerales dentro de una cadena de texto separada por comas. Por ejemplo, "40.714728,-73.998672" es un valor locations válido. Los valores de latitud y longitud deben corresponder a una ubicación válida sobre la superficie de la tierra. Las latitudes pueden tener cualquier valor entre -90 y 90 mientras que los valores de longitud pueden tener cualquier valor entre -180 y 180. Si especificas un valor de latitud o longitud no válido, se rechazará tu solicitud por ser incorrecta.

Puedes pasar cualquier cantidad de coordenadas múltiples dentro de una matriz o polilínea codificada, siempre que no excedas las cuotas del servicio y siempre que construyas una dirección URL válida. Ten en cuenta que cuando se pasan coordenadas múltiples, la precisión de los datos devueltos puede ser de una resolución inferior que cuando se solicitan datos para una única coordenada.

Especificación de trayectos

Las solicitudes de trayectos muestreados se indican mediante el uso de los parámetros path y samples, que indican una solicitud de datos de elevación a lo largo de un trayecto en intervalos especificados. Como en el caso de las solicitudes posicionales en las que se usa el parámetro locations, el parámetro path especifica un conjunto de valores de latitud y longitud. Sin embargo, a diferencia de lo que sucede con las solicitudes posicionales, el parámetro path especifica un conjunto ordenado de vértices. En lugar de devolverse datos de elevación únicamente en los vértices, se muestrean solicitudes de trayecto en la extensión de esos trayectos en función de las samples especificadas (incluidos los puntos finales).

El parámetro path puede tener uno de los siguientes argumentos:

  • Una matriz de dos o más cadenas de texto de coordenadas separadas por coma con el carácter de barra vertical ('|'): path=40.714728,-73.998672|-34.397,150.644
  • Coordenadas codificadas usando el Algooritmo de polilínea codificada: path=enc:gfo}EtohhUxD@bAxJmGF

Las cadenas de coordenadas de latitud y longitud se definen con numerales dentro de una cadena de texto separada por comas. Por ejemplo, "40.714728,-73.998672|-34.397, 150.644" es un valor path válido. Los valores de latitud y longitud deben corresponder a una ubicación válida sobre la superficie de la tierra. Las latitudes pueden tener cualquier valor entre -90 y 90 mientras que los valores de longitud pueden tener cualquier valor entre -180 y 180. Si especificas un valor de latitud o longitud no válido, se rechazará tu solicitud por ser incorrecta.

Puedes pasar cualquier cantidad de coordenadas múltiples dentro de una matriz o polilínea codificada, siempre que no excedas las cuotas del servicio y siempre que construyas una dirección URL válida. Ten en cuenta que cuando se pasan coordenadas múltiples, la resolución de la precisión de los datos devueltos puede ser inferior que cuando se solicitan datos para una única coordenada.

Respuestas de elevación

Para cada solicitud válida, el servicio de elevación devolverá una respuesta de elevación en el formato indicado en la dirección URL de la solicitud. Cada respuesta contendrá los siguientes elementos:

Un código de status de elevación, que puede ser uno de los siguientes:

  • OK indica que la solicitud de API se realizó con éxito.
  • INVALID_REQUEST indica que el formato de la solicitud de API era incorrecto.
  • OVER_QUERY_LIMIT indica que el solicitante excedió su cuota.
  • REQUEST_DENIED indica que la API no completó la solicitud.
  • UNKNOWN_ERROR indica un error desconocido.

Cuando el código de estado es diferente de OK, podría haber un campo error_message adicional en el objeto de la respuesta a la solicitud de elevación. Este campo contiene información más detallada acerca de los motivos que subyacen al código de estado en cuestión.

Nota: No se garantiza que este campo aparezca siempre, y su contenido está sujeto a modificaciones.

Una matriz de results que contiene los siguientes elementos:

  • Un elemento location (que contiene elementos lat y lng) de la posición para la cual se están calculando los datos de elevación. Ten en cuenta que para las solicitudes de trayectos, el conjunto de elementos location contendrá los puntos muestreados a lo largo de ese trayecto.
  • Un elemento elevation que indica la elevación de la ubicación en metros.
  • Un valor resolution que indica la distancia máxima entre puntos de datos a partir de los cuales se interpoló la elevación, en metros. Esta propiedad estará ausente si se desconoce la resolución. Ten en cuenta que los datos de elevación se vuelven más toscos (valores resolution mayores) cuando se pasan múltiples puntos. Para obtener el valor de elevación más preciso para un punto, deben realizarse consultas independientes.

Ejemplos de elevación posicional

El siguiente ejemplo solicita la elevación para Denver, Colorado, "la ciudad que se encuentra a una milla sobre el nivel del mar" en formato JSON:

https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034&key=YOUR_API_KEY
{
   "results" : [
      {
         "elevation" : 1608.637939453125,
         "location" : {
            "lat" : 39.73915360,
            "lng" : -104.98470340
         },
         "resolution" : 4.771975994110107
      }
   ],
   "status" : "OK"
}

El siguiente ejemplo muestra múltiples respuestas (para Denver, CO, y para Death Valley, CA).

Esta solicitud muestra el uso del marcador output de JSON:

https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536,-104.9847034|36.455556,-116.866667&key=YOUR_API_KEY

Esta solicitud muestra el uso del marcador output de XML:

https://maps.googleapis.com/maps/api/elevation/xml?locations=39.7391536,-104.9847034|36.455556,-116.866667&key=YOUR_API_KEY

Haz clic en las pestañas a continuación para ver las respuestas JSON y XML de ejemplo.

JSON
{
   "results" : [
      {
         "elevation" : 1608.637939453125,
         "location" : {
            "lat" : 39.73915360,
            "lng" : -104.98470340
         },
         "resolution" : 4.771975994110107
      },
      {
         "elevation" : -50.78903579711914,
         "location" : {
            "lat" : 36.4555560,
            "lng" : -116.8666670
         },
         "resolution" : 19.08790397644043
      }
   ],
   "status" : "OK"
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<ElevationResponse>
 <status>OK</status>
 <result>
  <location>
   <lat>39.7391536</lat>
   <lng>-104.9847034</lng>
  </location>
  <elevation>1608.6379395</elevation>
  <resolution>4.7719760</resolution>
 </result>
 <result>
  <location>
   <lat>36.4555560</lat>
   <lng>-116.8666670</lng>
  </location>
  <elevation>-50.7890358</elevation>
  <resolution>19.0879040</resolution>
 </result>
</ElevationResponse>

En el siguiente ejemplo, se solicitan datos de elevación en una path en línea recta desde Mt. Whitney, CA hasta Badwater, CA, los puntos más alto y más bajo del territorio continental de los Estados Unidos. Solicitamos tres samples, de modo que se incluirán los dos puntos finales y un punto intermedio.

https://maps.googleapis.com/maps/api/elevation/json?path=36.578581,-118.291994|36.23998,-116.83171&samples=3&key=YOUR_API_KEY
{
   "results" : [
      {
         "elevation" : 4411.941894531250,
         "location" : {
            "lat" : 36.5785810,
            "lng" : -118.2919940
         },
         "resolution" : 19.08790397644043
      },
      {
         "elevation" : 1381.861694335938,
         "location" : {
            "lat" : 36.41150289067028,
            "lng" : -117.5602607523847
         },
         "resolution" : 19.08790397644043
      },
      {
         "elevation" : -84.61699676513672,
         "location" : {
            "lat" : 36.239980,
            "lng" : -116.831710
         },
         "resolution" : 19.08790397644043
      }
   ],
   "status" : "OK"
}

Creación de gráficos de elevación

Los datos de elevación se deben usar junto con datos en un mapa de Google. La API de gráficos (https://code.google.com/apis/chart/) puede usarse para crear gráficos de elevación que podrás mostrar en tus mapas.

En el siguiente ejemplo de Python se calculan datos de elevación entre Mt. Whitney y Badwater, Death Valley, y se usan esos valores para crear un gráfico de elevación:

import simplejson
import urllib

ELEVATION_BASE_URL = 'https://maps.googleapis.com/maps/api/elevation/json'
CHART_BASE_URL = 'https://chart.apis.google.com/chart'

def getChart(chartData, chartDataScaling="-500,5000", chartType="lc",chartLabel="Elevation in Meters",chartSize="500x160",chartColor="orange", **chart_args):
    chart_args.update({
      'cht': chartType,
      'chs': chartSize,
      'chl': chartLabel,
      'chco': chartColor,
      'chds': chartDataScaling,
      'chxt': 'x,y',
      'chxr': '1,-500,5000'
    })

    dataString = 't:' + ','.join(str(x) for x in chartData)
    chart_args['chd'] = dataString.strip(',')

    chartUrl = CHART_BASE_URL + '?' + urllib.urlencode(chart_args)

    print chartUrl

    def getElevation(path="36.578581,-118.291994|36.23998,-116.83171",samples="100", **elvtn_args):
      elvtn_args.update({
        'path': path,
        'samples': samples
      })

      url = ELEVATION_BASE_URL + '?' + urllib.urlencode(elvtn_args)
      response = simplejson.load(urllib.urlopen(url))

      # Create a dictionary for each results[] object
      elevationArray = []

      for resultset in response['results']:
        elevationArray.append(resultset['elevation'])

      # Create the chart passing the array of elevation data
      getChart(chartData=elevationArray)

if __name__ == '__main__':
    # Mt. Whitney
    startStr = "36.578581,-118.291994"
    # Death Valley
    endStr = "36.23998,-116.83171"

    pathStr = startStr + "|" + endStr

    getElevation(pathStr)

Las siguientes imágenes muestran cómo se podría mostrar esa información en un mapa o un gráfico:

Descarga el código ElevationChartCreator.py en js-v2-samples.

El parámetro sensor

Antes, la Google Maps API requería que incluyeras el parámetro sensor para indicar si tu aplicación usaba un sensor para determinar la ubicación del usuario. El uso de este parámetro ya no es obligatorio.

Enviar comentarios sobre…

Google Maps Elevation API
Google Maps Elevation API
¿Necesitas ayuda? Visita nuestra página de asistencia.