2017-11-28 11 views
0

get requestを使用してstrava apiからアクティビティの正確な経度と緯度を取得する方法を知っている人はいますか?Strava API - 正確な経度と緯度

Googleマップでstrava apiを統合しようとしていますが、適切なlong/lat位置の配列を作成しようとしていますが、https://www.strava.com/api/v3/athlete/activities?per_page=100...リクエストは経度と緯度が返されます。。

私は結果をループしてループ内で別のリクエストを送信することで開始座標を取得する方法を見つけましたが、これはあまりにも多くのリクエストを送信しています。以下は私のリクエストのスニペットです:

// 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); 
       } 
      }); 
     } 
    } 

}); 

ガイダンスはすばらしいと思います。ありがとう。

+0

を使用する必要があり、COORDSから返された '' /活動から返されたものよりも精度の低い//activities'をされていますid'? –

+0

@MattMorgan私は現在、activity/id内の 'segments'要素からlng/latを取得しています(これは四捨五入されていないため、約位置を取得できます。私はGoogleマップの全体の経路を表示したいので、十分に近いところにはありません – Machie

+0

うーん...それはAPIの限界かもしれないように聞こえます。あなたは、この質問をStravaの開発フォーラムで聞いたことがあるのですか、サポート担当者に打ち明けましたか?つまり、データを公開していない場合、できることはあまりありません。駄目を渡すことはありませんが、それは私が求めるものです。 –

答えて

1

開始点の座標のみが必要なのか、活動全体と必要な精度が必要なのかは不明です。

クエリhttps://www.strava.com/api/v3/athlete/activitiesには、map => summary_polylineというフィールドが含まれています。このフィールドから(単純化されていますが)アクティビティ全体の座標を抽出する必要があります。このポリラインを使用してGoogleマップに表示することもできます。

しかし、精度がさらに必要な場合は、すべてのアクティビティを取得し、map => summary_polylineまたはフィールドを使用する必要があります。

完全なデータを取得するには、streamsので