Monitore o uso da sua chave antes de atingir um limite
Acompanhar seus cabeçalhos de cota ao longo do caminho mostra quando um limite está se aproximando, bem antes de uma requisição ser realmente rejeitada.
Um perfil de altitude é apenas uma lista de pontos com uma altura associada a cada um, plotada em relação à distância ao longo da rota. O endpoint de altitude fornece essa altura para quantos pontos você enviar, em uma única chamada.
Passe uma série de pares de latitude e longitude no parâmetro points, separados por barras verticais, com os valores de cada par separados por vírgula.
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 item em results corresponde ao ponto que você enviou na mesma posição. Combine elevation_m com a distância acumulada entre pontos consecutivos, que você mesmo calcula a partir das coordenadas, e você terá os valores x e y para um gráfico de perfil sem nenhuma consulta adicional.
Se você preferir enviar um array estruturado em vez do parâmetro points separado por barras verticais, faça um POST de um array JSON de objetos de coordenadas para /v1/elevation, da mesma forma que os outros endpoints aceitam corpos em lote.
POST /v1/elevation
Content-Type: application/json
[{"lat": 45.8326, "lon": 6.8652}, {"lat": 45.8400, "lon": 6.8700}]De qualquer forma, o custo é o mesmo, uma requisição por ponto; então escolha o formato mais fácil de montar a partir da estrutura de dados que você já tem, uma query string montada a partir de um array ou um array JSON montado da mesma forma.
Uma rota com cem pontos de GPS a cada poucos metros não precisa de altitude em cada um deles para desenhar um perfil legível. Amostrar um a cada vinte ou cinquenta pontos ao longo de uma rota longa, ou reamostrar em intervalos de distância iguais, mantém o gráfico suave e reduz a contagem de requisições, já que cada ponto no parâmetro points conta como uma requisição.
Tratar elevation_m como preciso até o centímetro é exigir dos dados mais do que um perfil de altitude precisa. O valor é preciso o suficiente para desenhar um perfil suave e legível e para calcular um ganho total sensato, mas dois pontos a um metro de distância em terreno plano podem retornar leituras ligeiramente diferentes que não dizem nada sobre o terreno real. Construa o seu gráfico e os seus cálculos de ganho para tolerar esse tipo de pequeno ruído, em vez de tratar cada oscilação como uma característica real da rota.
Um ponto que cai sobre mar aberto ou em uma área com poucos dados de altitude pode retornar um valor baixo ou plano em vez de um erro. Se a sua rota inclui uma travessia de balsa ou um trecho por terreno remoto, confira trechos incomumente planos do seu perfil com o próprio mapa, em vez de presumir que o número sempre descreve terra firme.
Um perfil de cem pontos são cem requisições, bem dentro das 2.500 requisições gratuitas por dia incluídas em toda chave, ou disponíveis a partir de um único endereço sem chave. Uma ferramenta de planejamento de rotas que atende muitos usuários por dia ainda deve ficar de olho nos cabeçalhos de cota, já que perfis de altitude de rotas populares se acumulam mais rápido do que consultas individuais.
Dados de altitude transformam um mapa plano em algo que um caminhante ou ciclista pode realmente usar para planejar. A lista completa de parâmetros está na página da documentação de consulta de altitude.