[英]Getting total duration and distance on MapBox JavaScript
我将 MapBox GL API 用于 Qt (JavaScript),我必须从一条路线中获取总距离和总持续时间。 要获取路线,我提出以下 http 请求:
响应采用 geoJSON 格式,我用它在我的 map 上绘制路线,并且有效。
问题是我无法计算整个行程的总距离和持续时间。 此 geoJSON 中有许多“持续时间”和“距离”字段。
我是否必须使用这些多个字段,或者是否有任何其他方法来计算总距离和持续时间?
要获得距离和持续时间,只需分别采用routes[0].distance
和routes[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 指定的路线中有duration
和distance
,您可以处理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.