diff --git a/src/ol/geom/flat/segmentsflatgeom.js b/src/ol/geom/flat/segmentsflatgeom.js index 8c6aac24fd..b834eecbdc 100644 --- a/src/ol/geom/flat/segmentsflatgeom.js +++ b/src/ol/geom/flat/segmentsflatgeom.js @@ -9,20 +9,22 @@ goog.provide('ol.geom.flat.segments'); * @param {number} offset Offset. * @param {number} end End. * @param {number} stride Stride. - * @param {function(ol.Coordinate, ol.Coordinate): T} callback Function + * @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 + * @template T,S */ ol.geom.flat.segments.forEach = - function(flatCoordinates, offset, end, stride, callback) { + function(flatCoordinates, offset, end, stride, callback, opt_this) { var point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]]; var point2 = []; var ret; for (; (offset + stride) < end; offset += stride) { point2[0] = flatCoordinates[offset + stride]; point2[1] = flatCoordinates[offset + stride + 1]; - ret = callback(point1, point2); + ret = callback.call(opt_this, point1, point2); if (ret) { return ret; } diff --git a/src/ol/geom/linestring.js b/src/ol/geom/linestring.js index 3a89e81de5..08c99fc771 100644 --- a/src/ol/geom/linestring.js +++ b/src/ol/geom/linestring.js @@ -113,15 +113,17 @@ ol.geom.LineString.prototype.closestPointXY = * If the callback returns a truthy value the function returns that * value immediately. Otherwise the function returns `false`. * - * @param {function(ol.Coordinate, ol.Coordinate): T} callback Function + * @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 + * @template T,S * @api */ -ol.geom.LineString.prototype.forEachSegment = function(callback) { +ol.geom.LineString.prototype.forEachSegment = function(callback, opt_this) { return ol.geom.flat.segments.forEach(this.flatCoordinates, 0, - this.flatCoordinates.length, this.stride, callback); + this.flatCoordinates.length, this.stride, callback, opt_this); };