如何通过Strava API获取活动折线的海拔数据?
获取Strava活动海拔数据的方法
你不需要额外调用第三方API,Strava自身的接口就能满足需求:
直接从Get Activity ById返回结果中提取:
返回的DetailedActivity对象里,elev_high和elev_low字段可以拿到活动的最高、最低海拔值;如果活动的polyline本身包含海拔信息(部分活动会携带),可以调整你的解码代码,让@mapbox/polyline库解析出海拔数据:import polyline from '@mapbox/polyline'; import { LatLngExpression } from 'leaflet'; // 调整后支持解析带海拔的polyline export const decodePolylineWithAltitude = ( encodedString: string | undefined, ): (LatLngExpression | [number, number, number])[] => { if (!encodedString) return []; // Strava的polyline默认精度为5,传入第三个参数启用海拔解析 const decoded = polyline.decode(encodedString, 5); return decoded; };解码后的数组会是
[纬度, 经度, 海拔]的三元组,但注意不是所有活动的polyline都包含海拔,这种方式有局限性。调用Get Activity Streams端点:
这是获取逐点海拔最可靠的方式。请求该端点时,指定types=altitude,就能拿到与活动路线顶点一一对应的海拔数组,刚好可以用来绘制海拔图。你可以在获取活动详情后,用活动ID调用这个端点,参数里指定需要的流类型即可。
内容的提问来源于stack exchange,提问作者TResponse
相关产品推荐
相关产品推荐

