经纬志
首页 / Turf.js / 使用示例

沿线取点

拖动里程滑块,红色标记沿折线移动。 每公里的刻度线用来确认:沿线等距不等于图上等距。

Turf.js 7.x · 更新 2026-10-27
源码与运行效果
运行效果

说明

滑块的最大值取 turf.length 的结果,因此范围与实际线长一致, 不会出现拖到尽头仍然没走完的情况。 取值变化时只调用一次 turf.along,返回的 Point 直接用于定位标记。

var total = turf.length(route, { units: 'kilometers' });
slider.max = total;

var pt = turf.along(route, dist, { units: 'kilometers' });
marker.setLngLat(pt.geometry.coordinates);
现象原因
刻度线图上疏密不均折线方向改变,球面等距在平面投影后不再等距
距离超过全长仍有点along 超长时返回终点,不返回 null
取点跳过拐点插值按里程,不按顶点数量,拐点不会自动落点

「已行进」与「剩余」两数相加始终等于全长, 这是验证里程计算是否自洽的快速办法。

要沿一条道路按固定间隔布设设施,取点间隔应写成米。 用公里表示 20 米会得到 0.02 这样的小数,循环累加时浮点误差会逐渐放大。