Add ol.geom.flat.lineStringsCoordinateAtM
This commit is contained in:
@@ -371,6 +371,60 @@ ol.geom.flat.lineStringCoordinateAtM =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||||
|
* @param {number} offset Offset.
|
||||||
|
* @param {Array.<number>} ends Ends.
|
||||||
|
* @param {number} stride Stride.
|
||||||
|
* @param {number} m M.
|
||||||
|
* @param {boolean} extrapolate Extrapolate.
|
||||||
|
* @param {boolean} interpolate Interpolate.
|
||||||
|
* @return {ol.Coordinate} Coordinate.
|
||||||
|
*/
|
||||||
|
ol.geom.flat.lineStringsCoordinateAtM = function(
|
||||||
|
flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) {
|
||||||
|
if (interpolate) {
|
||||||
|
return ol.geom.flat.lineStringCoordinateAtM(
|
||||||
|
flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate);
|
||||||
|
}
|
||||||
|
var coordinate;
|
||||||
|
if (m < flatCoordinates[stride - 1]) {
|
||||||
|
if (extrapolate) {
|
||||||
|
coordinate = flatCoordinates.slice(0, stride);
|
||||||
|
coordinate[stride - 1] = m;
|
||||||
|
return coordinate;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flatCoordinates[flatCoordinates.length - 1] < m) {
|
||||||
|
if (extrapolate) {
|
||||||
|
coordinate = flatCoordinates.slice(flatCoordinates.length - stride);
|
||||||
|
coordinate[stride - 1] = m;
|
||||||
|
return coordinate;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var i, ii;
|
||||||
|
for (i = 0, ii = ends.length; i < ii; ++i) {
|
||||||
|
var end = ends[i];
|
||||||
|
if (offset == end) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (m < flatCoordinates[offset + stride - 1]) {
|
||||||
|
return null;
|
||||||
|
} else if (m <= flatCoordinates[end - 1]) {
|
||||||
|
return ol.geom.flat.lineStringCoordinateAtM(
|
||||||
|
flatCoordinates, offset, end, stride, m, false);
|
||||||
|
}
|
||||||
|
offset = end;
|
||||||
|
}
|
||||||
|
goog.asserts.fail();
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||||
* @param {number} offset Offset.
|
* @param {number} offset Offset.
|
||||||
|
|||||||
Reference in New Issue
Block a user