在 MapBox 上获取总持续时间和距离 JavaScript
Getting total duration and distance on MapBox JavaScript
我正在为 Qt (JavaScript) 使用 MapBox GL API,我必须从一条路线中获取总距离和总持续时间。为了获取路线,我发出了以下 http 请求:
响应采用 geoJSON 格式,我用它在我的地图上绘制路线,并且有效。
问题是我无法计算整个行程的总距离和持续时间。这个 geoJSON 中有很多“持续时间”和“距离”字段。
我是否必须使用这些多个字段,或者是否有任何其他方法来计算总距离和持续时间?
您可以使用 turf.js
库将 geoJSON 传递给它,然后进行一些空间分析。
这里的概念是将 geoJSON 特征传递给 turf
并使用 length
函数:
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
对象,像这样:
var duration = geojson.routes.reduce(
(d, route) => d + route.duration
0
);
这样您甚至可以使用 route.distance
字段来获取总距离。
编辑 n.2:不要这样做! 我搞砸了,路由只是一个 替代方案 的数组,荣誉感谢 Steve Bennet 指出这一点。
要获取距离和持续时间,只需分别取 routes[0].distance
和 routes[0].duration
。
(您不想将它们加起来:这些代表备选路线,而不是长途旅行的一部分。)
参见https://docs.mapbox.com/api/navigation/#directions-response-object。
我正在为 Qt (JavaScript) 使用 MapBox GL API,我必须从一条路线中获取总距离和总持续时间。为了获取路线,我发出了以下 http 请求:
响应采用 geoJSON 格式,我用它在我的地图上绘制路线,并且有效。
问题是我无法计算整个行程的总距离和持续时间。这个 geoJSON 中有很多“持续时间”和“距离”字段。
我是否必须使用这些多个字段,或者是否有任何其他方法来计算总距离和持续时间?
您可以使用 turf.js
库将 geoJSON 传递给它,然后进行一些空间分析。
这里的概念是将 geoJSON 特征传递给 turf
并使用 length
函数:
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
对象,像这样:
var duration = geojson.routes.reduce(
(d, route) => d + route.duration
0
);
这样您甚至可以使用 route.distance
字段来获取总距离。
编辑 n.2:不要这样做! 我搞砸了,路由只是一个 替代方案 的数组,荣誉感谢 Steve Bennet 指出这一点。
要获取距离和持续时间,只需分别取 routes[0].distance
和 routes[0].duration
。
(您不想将它们加起来:这些代表备选路线,而不是长途旅行的一部分。)
参见https://docs.mapbox.com/api/navigation/#directions-response-object。