实现turf的along方法

466 阅读1分钟
// 根据中心点newVal.center获取该点坐标
        // 1. 首先获取起始拐点坐标,然后获取终止拐点坐标
        let index, seg;
        for (let i = 0; i < this.segDistances.length; i++) {
          if (newVal.center < this.segDistances[i]) {
            index = i;
            seg = this.segDistances[index - 1 < 0 ? 0 : index - 1];
            break;
          }
        }
        // 2. 计算距离最近的拐点的距离(newVal.center是距离第一点的距离)
        let disToStart =
          newVal.center - seg < 0 ? newVal.center : newVal.center - seg;
        // 3. 计算newVal.center的坐标点:
        // 获取线段两端端点
        let start = turf.point(vm.positions[index]);
        let stop = turf.point(vm.positions[index + 1]);
        // 计算方向
        let bearing = turf.bearing(start, stop);
        // 计算点坐标
        let destination = turf.destination(start, disToStart / 1000, bearing);
        console.log("centerCoordinate", turf.getCoords(destination));
        // 验证turf.along方法:
        let cableLine = turf.lineString(vm.positions);
        console.log("turfAlong", turf.along(cableLine, newVal.center/1000).getCoords());