1

有谁知道使用 get 请求从 strava api 获取活动的确切经度和纬度的方法?

我正在尝试将 strava api 与谷歌地图集成,并且我正在尝试使用适当的经度/纬度位置构建一个数组,但该https://www.strava.com/api/v3/athlete/activities?per_page=100...请求仅返回经度和纬度四舍五入,例如:start_longitude: 2.6

我找到了一种“hacky”方法,通过遍历结果然后在循环中发送另一个请求来检索开始坐标,尽管这发送了太多请求。- 以下是我的请求的片段:

// start request
$.get( "https://www.strava.com/api/v3/athlete/activities?per_page=100&access_token=ACCESSTOKEN", function (results) {

    // loop through request
    for (i = 0; i < results.length; i++) {

        if(results[i].type === 'Run') {
            // add an element to the array for each result
            stravaComplete.push(true);

            $.get( "https://www.strava.com/api/v3/activities/"+ results[i].id +"?per_page=5&access_token=ACCESSTOKEN", function (runs) {
                 if(typeof runs.segment_efforts[0] != "undefined"){
                    var runLatitude = runs.segment_efforts[0].segment.start_latitude;
                    var runLongitude = runs.segment_efforts[0].segment.start_longitude;
                    stravaActivityList.push({"lat": runLatitude, "lng": runLongitude});
                 }

                 // remove the element from the array
                 stravaComplete.pop();

                 // if all the elements have been removed from the array it means the request is complete
                if(stravaComplete.length == 0) {
                    // reinitialize map
                    initMap(stravaActivityList);
                }
             });
        }
    }

});

任何指导都会很棒。谢谢。

4

2 回答 2

2

目前尚不清楚您是否只需要起点坐标,还是需要整个活动的坐标以及需要什么精度。

对查询的响应https://www.strava.com/api/v3/athlete/activities包括一个字段map => summary_polyline,您应该能够从中提取整个(尽管是简化的)活动的坐标。您也可以使用此折线在谷歌地图中显示它。

但是,如果您需要更高的准确性,则需要检索每个活动和使用map => summary_polylinemap => polyline字段。

要获得完整的数据,应该使用

于 2017-12-12T18:37:28.370 回答
0

使用summary_polyline[0]and summary_polyline[-1](Ruby) 而不是四舍五入的值。有关示例,请参见Slava的此代码

于 2018-04-10T01:02:39.163 回答