Вам нужно сделать несколько шагов, чтобы достичь того, что вам нужно.
- Разделить ломаную на две части в указанной вершине.
- Если используется вторая часть, используйте ее обычно.
- Если используется первая часть, измените координаты, затем используйте ее.
Вот предложенный код:
// original polyline
var line = turf.lineString([[-83, 30], [-84, 36], [-78, 41]]);
// split point (second vertex, [-84, 36])
var splitter = line.geometry.coordinates[1];
// split the original polyline
var split = turf.lineSplit(line, splitter);
// prep the first portion (reverse the coordinates)
var part1 = split.features[0];
part1.geometry.coordinates = part1.geometry.coordinates.reverse();
// the second portion
var part2 = split.features[1];
Тогда вы можете использовать
var distance = 0.5; //unit: meters
turf.along(part1, distance, {units: 'meters'});
или
turf.along(part2, distance, {units: 'meters'});
Рабочий код
var line = turf.lineString([
[-83, 30],
[-84, 36],
[-78, 41]
]);
var splitter = turf.point(line.geometry.coordinates[1]);
var split = turf.lineSplit(line, splitter);
var part1 = split.features[0];
var part2 = split.features[1];
// part 2
var distance = 0.5;
var p2 = turf.along(part2, 0.5, {
units: 'meters'
});
console.log("P2 (x,y) on part2: " + p2.geometry.coordinates);
// part 1
console.log("Original list of (x,y) of part1: " + part1.geometry.coordinates);
part1.geometry.coordinates = part1.geometry.coordinates.reverse();
console.log("List of (x,y) of part1: " + part1.geometry.coordinates);
<script src='https://npmcdn.com/@turf/turf/turf.min.js'></script>