我遇到了和你一样的问题(也试图获取 Strava 分段折线的高程数据)并通过使用他们的elevation javascript API 向 Google 的高程服务提出请求来解决。
如果您想使用 Google 的服务,您需要注册(除非您提出大量请求,否则免费)到 Google 的地图服务以获取 API 密钥,然后引用他们的 js 文件:
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY">
</script>
然后从 Strava 获取解码的折线,提取坐标并从 Google 请求坐标的高程。这就是我所做的:
/*
Get your decoded polyline from Strava (formatted as follows)
[
{
"latitude": 55.13186,
"longitude": -6.0442
},
{
"latitude": 55.13202,
"longitude": -6.04401
}
]
*/
const segmentCoordinates = segmentPolylineDecoded;
// Change polyline into correct format for request to Google
let routeCoordinatesInCorrectFormat = segmentCoordinates.map(function(x) {
return { lat: x.latitude, lng: x.longitude };
});
let elevationData;
const elevator = new google.maps.ElevationService();
elevator
.getElevationAlongPath({
path: routeCoordinatesInCorrectFormat,
samples: 256,
})
.then(({ results }) => {
elevationData = results;
plotElevation();
})
.catch((e) => {
// error
});
来自 Google 的回复以以下格式返回:
[
{
"elevation": 14.16793346405029,
"location": {
"lat": 55.13186,
"lng": -6.0442
},
"resolution": 610.8129272460938
},
{
"elevation": 14.90726280212402,
"location": {
"lat": 55.1321392922906,
"lng": -6.043826473467345
},
"resolution": 610.8129272460938
}
]