繁体   English   中英

在 MapBox 上获取总持续时间和距离 JavaScript

[英]Getting total duration and distance on MapBox JavaScript

我将 MapBox GL API 用于 Qt (JavaScript),我必须从一条路线中获取总距离和总持续时间。 要获取路线,我提出以下 http 请求:

https://api.mapbox.com/directions/v5/mapbox/driving/-8.61767353533753,42.102184359031504;-8.495246688170312,41.44289308091726?steps=true&geometries=geomyToken&accesstoken_

响应采用 geoJSON 格式,我用它在我的 map 上绘制路线,并且有效。

问题是我无法计算整个行程的总距离和持续时间。 此 geoJSON 中有许多“持续时间”和“距离”字段。

我是否必须使用这些多个字段,或者是否有任何其他方法来计算总距离和持续时间?

要获得距离和持续时间,只需分别采用routes[0].distanceroutes[0].duration

(你不想把它们加起来:它们代表替代路线,而不是长途旅行的一部分。)

请参阅https://docs.mapbox.com/api/navigation/#directions-response-object

您可以使用turf.js库将 geoJSON 传递给它,然后进行一些空间分析。

这里的概念是将 geoJSON 特征传递给turf并使用length function:

var geojson = /** get your shape from API */;
var length = turf.length(geojson, {units: 'kilometers'});

这是直接来自 MapBox 的示例: https://docs.mapbox.com/mapbox-gl-js/example/measure/

编辑:由于 mapbox api 指定的路线中有durationdistance ,您可以处理geojson.routes object,如下所示:

var duration = geojson.routes.reduce(
 (d, route) => d + route.duration
 0
);

这样您甚至可以使用route.distance字段来获取总距离。

编辑 n.2:不要这样做! 我搞砸了,路线只是一系列选择,感谢 Steve Be.net 指出这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM