diff --git a/src/ol/render/canvas/Builder.js b/src/ol/render/canvas/Builder.js index 9c0b1f9e18..c8522547cf 100644 --- a/src/ol/render/canvas/Builder.js +++ b/src/ol/render/canvas/Builder.js @@ -186,7 +186,8 @@ class CanvasBuilder extends VectorContext { closed, skipFirst ) { - let myEnd = this.coordinates.length; + const coordinates = this.coordinates; + let myEnd = coordinates.length; const extent = this.getBufferedMaxExtent(); if (skipFirst) { offset += stride; @@ -203,15 +204,15 @@ class CanvasBuilder extends VectorContext { nextRel = coordinateRelationship(extent, nextCoord); if (nextRel !== lastRel) { if (skipped) { - this.coordinates[myEnd++] = lastXCoord; - this.coordinates[myEnd++] = lastYCoord; + coordinates[myEnd++] = lastXCoord; + coordinates[myEnd++] = lastYCoord; + skipped = false; } - this.coordinates[myEnd++] = nextCoord[0]; - this.coordinates[myEnd++] = nextCoord[1]; - skipped = false; + coordinates[myEnd++] = nextCoord[0]; + coordinates[myEnd++] = nextCoord[1]; } else if (nextRel === Relationship.INTERSECTING) { - this.coordinates[myEnd++] = nextCoord[0]; - this.coordinates[myEnd++] = nextCoord[1]; + coordinates[myEnd++] = nextCoord[0]; + coordinates[myEnd++] = nextCoord[1]; skipped = false; } else { skipped = true; @@ -223,8 +224,8 @@ class CanvasBuilder extends VectorContext { // Last coordinate equals first or only one point to append: if ((closed && skipped) || i === offset + stride) { - this.coordinates[myEnd++] = lastXCoord; - this.coordinates[myEnd++] = lastYCoord; + coordinates[myEnd++] = lastXCoord; + coordinates[myEnd++] = lastYCoord; } return myEnd; } diff --git a/src/ol/render/canvas/TextBuilder.js b/src/ol/render/canvas/TextBuilder.js index 6fc793130c..a008f66bba 100644 --- a/src/ol/render/canvas/TextBuilder.js +++ b/src/ol/render/canvas/TextBuilder.js @@ -169,11 +169,11 @@ class CanvasTextBuilder extends CanvasBuilder { return; } - let begin = this.coordinates.length; + const coordinates = this.coordinates; + let begin = coordinates.length; const geometryType = geometry.getType(); let flatCoordinates = null; - let end = 2; let stride = geometry.getStride(); let i, ii; @@ -217,9 +217,9 @@ class CanvasTextBuilder extends CanvasBuilder { flatEnd = ends[o]; } for (i = flatOffset; i < flatEnd; i += stride) { - this.coordinates.push(flatCoordinates[i], flatCoordinates[i + 1]); + coordinates.push(flatCoordinates[i], flatCoordinates[i + 1]); } - end = this.coordinates.length; + const end = coordinates.length; flatOffset = ends[o]; const declutterGroup = this.declutterGroups_ ? o === 0 @@ -231,15 +231,11 @@ class CanvasTextBuilder extends CanvasBuilder { } this.endGeometry(feature); } else { - let geometryWidths = null; - if (!textState.overflow) { - geometryWidths = []; - } + const geometryWidths = textState.overflow ? null : []; switch (geometryType) { case GeometryType.POINT: case GeometryType.MULTI_POINT: flatCoordinates = /** @type {import("../../geom/MultiPoint.js").default} */ (geometry).getFlatCoordinates(); - end = flatCoordinates.length; break; case GeometryType.LINE_STRING: flatCoordinates = /** @type {import("../../geom/LineString.js").default} */ (geometry).getFlatMidpoint(); @@ -250,7 +246,6 @@ class CanvasTextBuilder extends CanvasBuilder { case GeometryType.MULTI_LINE_STRING: flatCoordinates = /** @type {import("../../geom/MultiLineString.js").default} */ (geometry).getFlatMidpoints(); stride = 2; - end = flatCoordinates.length; break; case GeometryType.POLYGON: flatCoordinates = /** @type {import("../../geom/Polygon.js").default} */ (geometry).getFlatInteriorPoint(); @@ -268,20 +263,22 @@ class CanvasTextBuilder extends CanvasBuilder { } flatCoordinates.push(interiorPoints[i], interiorPoints[i + 1]); } - stride = 2; - end = flatCoordinates.length; - if (end == 0) { + if (flatCoordinates.length === 0) { return; } + stride = 2; break; default: } - end = this.appendFlatPointCoordinates( + const end = this.appendFlatPointCoordinates( flatCoordinates, 0, - end, + flatCoordinates.length, stride ); + if (end === begin) { + return; + } this.saveTextStates_();