首页 / Turf.js / 使用示例
沿线取点
拖动里程滑块,红色标记沿折线移动。 每公里的刻度线用来确认:沿线等距不等于图上等距。
源码与运行效果
说明
滑块的最大值取 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 这样的小数,循环累加时浮点误差会逐渐放大。