37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
/**
|
|
* @module ol/geom/flat/segments
|
|
*/
|
|
|
|
|
|
/**
|
|
* This function calls `callback` for each segment of the flat coordinates
|
|
* array. If the callback returns a truthy value the function returns that
|
|
* value immediately. Otherwise the function returns `false`.
|
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
|
* @param {number} offset Offset.
|
|
* @param {number} end End.
|
|
* @param {number} stride Stride.
|
|
* @param {function(this: S, ol.Coordinate, ol.Coordinate): T} callback Function
|
|
* called for each segment.
|
|
* @param {S=} opt_this The object to be used as the value of 'this'
|
|
* within callback.
|
|
* @return {T|boolean} Value.
|
|
* @template T,S
|
|
*/
|
|
export function forEach(flatCoordinates, offset, end, stride, callback, opt_this) {
|
|
const point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];
|
|
const point2 = [];
|
|
let ret;
|
|
for (; (offset + stride) < end; offset += stride) {
|
|
point2[0] = flatCoordinates[offset + stride];
|
|
point2[1] = flatCoordinates[offset + stride + 1];
|
|
ret = callback.call(opt_this, point1, point2);
|
|
if (ret) {
|
|
return ret;
|
|
}
|
|
point1[0] = point2[0];
|
|
point1[1] = point2[1];
|
|
}
|
|
return false;
|
|
}
|