9

有谁知道用户在 Strava 上发布活动后如何获得完成路线图图像。我已阅读 Strava API 文档,但尚未找到

我使用https://strava.github.io/api/v3/activities/:id获取活动,有“地图”字段,但我仍然没有找到该字段描述。

在此处输入图像描述

感谢大家。

4

3 回答 3

7

Strava 获取记录的一组纬度/经度,并使用GOOGLE POLYLINE ENCODING算法对它们进行编码。这是为了减少通过APP和WEB SERVICE传输的数据。

如果需要绘制路线,则需要

  1. 取折线字符串。
  2. 对其进行解码以获得纬度/经度数组。
  3. 循环遍历数组并在地图上绘制折线。

我使用@mapbox/polyline npm 模块在 javascript 中解码折线。

另一种更好的方法是使用谷歌地图静态 API。您将在其中输入折线,并获取绘制路线的图像。静态 api 看起来像

https://maps.googleapis.com/maps/api/staticmap?size=600x300&maptype=roadmap&path=enc:GIVE_YOUR_POLYLINE_DATA&key=GIVE_YOUR_API_KEY

于 2018-11-19T14:43:25.053 回答
3

可以将summary_polyline其解码为一组坐标。这里描述了用于折线的算法,许多库都可以处理它。

例如,您也可以使用 Google Maps 静态 API,而无需解码。

这段来自Strava的 slack 机器人的 Ruby 代码可以完成这一切。

于 2018-04-10T01:00:11.683 回答
0

Android中获取 Route 图像:

  1. 将您的所有经纬度添加到列表中,然后借助 Google 折线编码技术将您的完整经纬度列表转换为编码折线字符串。

  2. 之后创建地图框帐户并使用具有有效令牌的地图框的静态图像API

  3. 现在使用 StaticPolylineAnnotation:

List<StaticPolylineAnnotation> list = new ArrayList<>();    
list.add(StaticPolylineAnnotation.builder()
    .polyline(polilineString)
    .strokeWidth(1.0)
    .strokeColor(56, 69, 181)
    .build()); 

注意:PolilineString 是您从 Google Poly line Encoding 技术获得的编码字符串

  1. 创建一个 MapboxStaticMap:
MapboxStaticMap staticImage = MapboxStaticMap.builder().user("mapboxaccountusename")
    .accessToken("Mapbox Token")
    .styleId("Your Style id")
    .staticPolylineAnnotations(list)
    .cameraAuto(true)
    .retina(true)
    .build();
  1. 使用获取图片的url
String imageUrl = staticImage.url().toString();
于 2020-10-01T04:42:59.560 回答