Controla el uso de tu clave antes de alcanzar un límite
Vigilar las cabeceras de cuota sobre la marcha te indica cuándo te acercas a un límite, mucho antes de que se rechace realmente una solicitud.
Un perfil de elevación no es más que una lista de puntos, cada uno con una altura asociada, representada frente a la distancia a lo largo de la ruta. El endpoint de elevación te da esa altura para tantos puntos como le envíes, en una sola llamada.
Pasa una serie de pares de latitud y longitud con el parámetro points, separados por barras verticales, con los dos valores de cada par separados por una coma.
GET /v1/elevation?points=45.8326,6.8652|45.8400,6.8700|45.8475,6.8750{
"status": "ok",
"results": [
{"lat": 45.8326, "lon": 6.8652, "elevation_m": 1035},
{"lat": 45.8400, "lon": 6.8700, "elevation_m": 1210},
{"lat": 45.8475, "lon": 6.8750, "elevation_m": 1390}
]
}Cada elemento de results se corresponde con el punto que enviaste en la misma posición. Empareja elevation_m con la distancia acumulada entre puntos consecutivos, que calculas tú mismo a partir de las coordenadas, y tendrás los valores x e y de un gráfico de perfil sin ninguna consulta adicional.
Si prefieres enviar un array estructurado en lugar del parámetro points separado por barras verticales, haz un POST de un array JSON de objetos de coordenadas a /v1/elevation, del mismo modo en que los demás endpoints aceptan cuerpos masivos.
POST /v1/elevation
Content-Type: application/json
[{"lat": 45.8326, "lon": 6.8652}, {"lat": 45.8400, "lon": 6.8700}]En cualquier caso, el coste es el mismo, una solicitud por punto, así que elige la forma que te resulte más fácil de construir a partir de la estructura de datos que ya tienes: una cadena de consulta construida a partir de un array o un array JSON construido de la misma manera.
Una ruta con cien puntos GPS cada pocos metros no necesita la elevación de cada uno de ellos para dibujar un perfil legible. Muestrear uno de cada veinte o cincuenta puntos a lo largo de una ruta larga, o remuestrear a intervalos de distancia uniformes, mantiene el gráfico suave y reduce el número de solicitudes, ya que cada punto del parámetro points cuenta como una solicitud.
Tratar elevation_m como exacto al centímetro es pedirle a los datos más de lo que necesita un perfil de elevación. El valor es lo bastante preciso para dibujar un perfil suave y legible y para calcular un desnivel total razonable, pero dos puntos separados por un metro en terreno llano pueden devolver lecturas ligeramente distintas que no significan nada sobre el terreno real. Diseña tu gráfico y tus cálculos de desnivel para tolerar ese tipo de pequeño ruido en lugar de tratar cada fluctuación como una característica real de la ruta.
Un punto que cae sobre aguas abiertas o en una zona con pocos datos de elevación puede devolver un valor bajo o plano en lugar de un error. Si tu ruta incluye un trayecto en ferri o un tramo por terreno remoto, comprueba con el propio mapa los tramos inusualmente planos de tu perfil en lugar de dar por hecho que el número siempre describe tierra firme.
Un perfil de cien puntos son cien solicitudes, holgadamente dentro de las 2.500 solicitudes gratuitas al día incluidas con cada clave o disponibles desde una sola dirección sin clave. Aun así, una herramienta de planificación de rutas que atiende a muchos usuarios al día debería vigilar sus cabeceras de cuota, ya que los perfiles de elevación de las rutas populares se acumulan más rápido que las consultas individuales.
Los datos de elevación convierten un mapa plano en algo con lo que un senderista o un ciclista puede planificar de verdad. La lista completa de parámetros está en la página de documentación de consulta de elevación.