Strava API - 如何获取路线图像

时间:2017-12-29 05:26:22

标签: api dictionary strava

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

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

enter image description here

谢谢大家。

3 个答案:

答案 0 :(得分:2)

summary_polyline可以解码为一组坐标。用于折线的算法被描述为here,许多库可以处理它。

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

This来自slack bot for Strava的Ruby代码可以完成所有工作。

答案 1 :(得分:0)

Strava记录一组经纬度,并使用GOOGLE POLYLINE ENCODING算法对其进行编码。这是为了减少通过APP和Web服务传输的数据。

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

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

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

另一种更好的方法是使用google maps静态api。在此输入折线,并获得绘制有路线的图像。静态api看起来像

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

答案 2 :(得分:0)

要在 Android 中获取路线图片:

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

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

  3. 现在使用StaticPolylineAnnotation:

weak var delegate: ChildToParentProtocol? = nil
@objc func buttonPressed(sender: UIButton!) {
     delegate?.passValueToParent(value: true)
}

注意:PolilineString是您通过Google Poly Line编码技术获得的编码字符串

  1. 创建一个MapboxStaticMap:
List<StaticPolylineAnnotation> list = new ArrayList<>();    
list.add(StaticPolylineAnnotation.builder()
    .polyline(polilineString)
    .strokeWidth(1.0)
    .strokeColor(56, 69, 181)
    .build()); 
  1. 使用获取图片的网址
MapboxStaticMap staticImage = MapboxStaticMap.builder().user("mapboxaccountusename")
    .accessToken("Mapbox Token")
    .styleId("Your Style id")
    .staticPolylineAnnotations(list)
    .cameraAuto(true)
    .retina(true)
    .build();