diff --git a/changelog/upgrade-notes.md b/changelog/upgrade-notes.md
index e6d186a0be..c43d94ccbd 100644
--- a/changelog/upgrade-notes.md
+++ b/changelog/upgrade-notes.md
@@ -1,5 +1,11 @@
## Upgrade notes
+### Next release
+
+#### Renamed `exceedLength` option of `ol.style.Text` to `overflow`
+
+To update your applications, simply replace `exceedLength` with `overflow`.
+
### v4.5.0
#### Removed GeoJSON crs workaround for GeoServer
diff --git a/examples/vector-label-decluttering.html b/examples/vector-label-decluttering.html
index f070b32af6..9bbc13b512 100644
--- a/examples/vector-label-decluttering.html
+++ b/examples/vector-label-decluttering.html
@@ -5,7 +5,7 @@ shortdesc: Label decluttering with a custom renderer.
resources:
- https://cdn.polyfill.io/v2/polyfill.min.js?features=Set"
docs: >
- Decluttering is used to avoid overlapping labels with `exceedLength: true` set on the text style. For MultiPolygon geometries, only the widest polygon is selected in a custom `geometry` function.
+ Decluttering is used to avoid overlapping labels with `overflow: true` set on the text style. For MultiPolygon geometries, only the widest polygon is selected in a custom `geometry` function.
tags: "vector, decluttering, labels"
---
diff --git a/examples/vector-label-decluttering.js b/examples/vector-label-decluttering.js
index 6f58b4862e..27ecb61dbb 100644
--- a/examples/vector-label-decluttering.js
+++ b/examples/vector-label-decluttering.js
@@ -37,7 +37,7 @@ var labelStyle = new ol.style.Style({
},
text: new ol.style.Text({
font: '12px Calibri,sans-serif',
- exceedLength: true,
+ overflow: true,
fill: new ol.style.Fill({
color: '#000'
}),
diff --git a/examples/vector-labels.html b/examples/vector-labels.html
index 69c6acf50f..4478a1f06f 100644
--- a/examples/vector-labels.html
+++ b/examples/vector-labels.html
@@ -95,7 +95,7 @@ tags: "geojson, vector, openstreetmap, label"
-
-
+
@@ -313,7 +313,7 @@ tags: "geojson, vector, openstreetmap, label"
-
+
diff --git a/examples/vector-labels.js b/examples/vector-labels.js
index 75aded09a9..29237f9082 100644
--- a/examples/vector-labels.js
+++ b/examples/vector-labels.js
@@ -38,7 +38,7 @@ var myDom = {
weight: document.getElementById('lines-weight'),
placement: document.getElementById('lines-placement'),
maxangle: document.getElementById('lines-maxangle'),
- exceedlength: document.getElementById('lines-exceedlength'),
+ overflow: document.getElementById('lines-overflow'),
size: document.getElementById('lines-size'),
offsetX: document.getElementById('lines-offset-x'),
offsetY: document.getElementById('lines-offset-y'),
@@ -56,7 +56,7 @@ var myDom = {
weight: document.getElementById('polygons-weight'),
placement: document.getElementById('polygons-placement'),
maxangle: document.getElementById('polygons-maxangle'),
- exceedlength: document.getElementById('polygons-exceedlength'),
+ overflow: document.getElementById('polygons-overflow'),
size: document.getElementById('polygons-size'),
offsetX: document.getElementById('polygons-offset-x'),
offsetY: document.getElementById('polygons-offset-y'),
@@ -95,7 +95,7 @@ var createTextStyle = function(feature, resolution, dom) {
var weight = dom.weight.value;
var placement = dom.placement ? dom.placement.value : undefined;
var maxAngle = dom.maxangle ? parseFloat(dom.maxangle.value) : undefined;
- var exceedLength = dom.exceedlength ? (dom.exceedlength.value == 'true') : undefined;
+ var overflow = dom.overflow ? (dom.overflow.value == 'true') : undefined;
var rotation = parseFloat(dom.rotation.value);
if (dom.font.value == '\'Open Sans\'' && !openSansAdded) {
var openSans = document.createElement('link');
@@ -120,7 +120,7 @@ var createTextStyle = function(feature, resolution, dom) {
offsetY: offsetY,
placement: placement,
maxAngle: maxAngle,
- exceedLength: exceedLength,
+ overflow: overflow,
rotation: rotation
});
};
diff --git a/externs/olx.js b/externs/olx.js
index 04f2e30660..332870a03e 100644
--- a/externs/olx.js
+++ b/externs/olx.js
@@ -7853,6 +7853,7 @@ olx.style.StrokeOptions.prototype.width;
* maxAngle: (number|undefined),
* offsetX: (number|undefined),
* offsetY: (number|undefined),
+ * overflow: (boolean|undefined),
* placement: (ol.style.TextPlacement|string|undefined),
* scale: (number|undefined),
* rotateWithView: (boolean|undefined),
@@ -7870,10 +7871,13 @@ olx.style.TextOptions;
/**
+ * **Deprecated**. Use the `overflow` option instead.
+ *
* For polygon labels or when `placement` is set to `'line'`, allow text to
- * exceed the width of the polygon at the the label position or the length of
+ * exceed the width of the polygon at the label position or the length of
* the path that it follows. Default is `false`.
* @type {boolean|undefined}
+ * @deprecated
* @api
*/
olx.style.TextOptions.prototype.exceedLength;
@@ -7917,6 +7921,16 @@ olx.style.TextOptions.prototype.offsetX;
olx.style.TextOptions.prototype.offsetY;
+/**
+ * For polygon labels or when `placement` is set to `'line'`, allow text to
+ * exceed the width of the polygon at the label position or the length of
+ * the path that it follows. Default is `false`.
+ * @type {boolean|undefined}
+ * @api
+ */
+olx.style.TextOptions.prototype.overflow;
+
+
/**
* Text placement.
* @type {ol.style.TextPlacement|undefined}
diff --git a/src/ol/render/canvas/replay.js b/src/ol/render/canvas/replay.js
index 89e8dd84fc..81e168e410 100644
--- a/src/ol/render/canvas/replay.js
+++ b/src/ol/render/canvas/replay.js
@@ -691,7 +691,7 @@ ol.render.canvas.Replay.prototype.replay_ = function(
var end = /** @type {number} */ (instruction[2]);
var baseline = /** @type {number} */ (instruction[3]);
declutterGroup = /** @type {ol.DeclutterGroup} */ (instruction[4]);
- var exceedLength = /** @type {number} */ (instruction[5]);
+ var overflow = /** @type {number} */ (instruction[5]);
var fillKey = /** @type {string} */ (instruction[6]);
var maxAngle = /** @type {number} */ (instruction[7]);
var measure = /** @type {function(string):number} */ (instruction[8]);
@@ -704,7 +704,7 @@ ol.render.canvas.Replay.prototype.replay_ = function(
var pathLength = ol.geom.flat.length.lineString(pixelCoordinates, begin, end, 2);
var textLength = measure(text);
- if (exceedLength || textLength <= pathLength) {
+ if (overflow || textLength <= pathLength) {
var textAlign = /** @type {ol.render.canvas.TextReplay} */ (this).textStates[textKey].textAlign;
var startM = (pathLength - textLength) * ol.render.replay.TEXT_ALIGN[textAlign];
var parts = ol.geom.flat.textpath.lineString(
diff --git a/src/ol/render/canvas/textreplay.js b/src/ol/render/canvas/textreplay.js
index afeee12b23..d19beae119 100644
--- a/src/ol/render/canvas/textreplay.js
+++ b/src/ol/render/canvas/textreplay.js
@@ -239,7 +239,7 @@ ol.render.canvas.TextReplay.prototype.drawText = function(geometry, feature) {
break;
case ol.geom.GeometryType.POLYGON:
flatCoordinates = /** @type {ol.geom.Polygon} */ (geometry).getFlatInteriorPoint();
- if (!textState.exceedLength && flatCoordinates[2] / this.resolution < width) {
+ if (!textState.overflow && flatCoordinates[2] / this.resolution < width) {
return;
}
stride = 3;
@@ -248,7 +248,7 @@ ol.render.canvas.TextReplay.prototype.drawText = function(geometry, feature) {
var interiorPoints = /** @type {ol.geom.MultiPolygon} */ (geometry).getFlatInteriorPoints();
flatCoordinates = [];
for (i = 0, ii = interiorPoints.length; i < ii; i += 3) {
- if (textState.exceedLength || interiorPoints[i + 2] / this.resolution >= width) {
+ if (textState.overflow || interiorPoints[i + 2] / this.resolution >= width) {
flatCoordinates.push(interiorPoints[i], interiorPoints[i + 1]);
}
}
@@ -434,7 +434,7 @@ ol.render.canvas.TextReplay.prototype.drawChars_ = function(begin, end, declutte
}
this.instructions.push([ol.render.canvas.Instruction.DRAW_CHARS,
begin, end, baseline, declutterGroup,
- textState.exceedLength, fillKey, textState.maxAngle,
+ textState.overflow, fillKey, textState.maxAngle,
function(text) {
var width = widths[text];
if (!width) {
@@ -446,7 +446,7 @@ ol.render.canvas.TextReplay.prototype.drawChars_ = function(begin, end, declutte
]);
this.hitDetectionInstructions.push([ol.render.canvas.Instruction.DRAW_CHARS,
begin, end, baseline, declutterGroup,
- textState.exceedLength, fillKey, textState.maxAngle,
+ textState.overflow, fillKey, textState.maxAngle,
function(text) {
var width = widths[text];
if (!width) {
@@ -510,7 +510,7 @@ ol.render.canvas.TextReplay.prototype.setTextStyle = function(textStyle, declutt
var font = textStyle.getFont() || ol.render.canvas.defaultFont;
ol.render.canvas.checkFont(font);
var textScale = textStyle.getScale();
- textState.exceedLength = textStyle.getExceedLength();
+ textState.overflow = textStyle.getOverflow();
textState.font = font;
textState.maxAngle = textStyle.getMaxAngle();
textState.placement = textStyle.getPlacement();
diff --git a/src/ol/style/text.js b/src/ol/style/text.js
index c17d173a79..bfd91b98f8 100644
--- a/src/ol/style/text.js
+++ b/src/ol/style/text.js
@@ -82,7 +82,7 @@ ol.style.Text = function(opt_options) {
* @private
* @type {boolean}
*/
- this.exceedLength_ = options.exceedLength !== undefined ? options.exceedLength : false;
+ this.overflow_ = options.overflow !== undefined ? options.overflow : false;
/**
* @private
@@ -142,7 +142,7 @@ ol.style.Text.prototype.clone = function() {
font: this.getFont(),
placement: this.getPlacement(),
maxAngle: this.getMaxAngle(),
- exceedLength: this.getExceedLength(),
+ overflow: this.getOverflow(),
rotation: this.getRotation(),
rotateWithView: this.getRotateWithView(),
scale: this.getScale(),
@@ -158,12 +158,12 @@ ol.style.Text.prototype.clone = function() {
/**
- * Get the `exceedLength` configuration.
- * @return {boolean} Let text exceed the length of the path they follow.
+ * Get the `overflow` configuration.
+ * @return {boolean} Let text overflow the length of the path they follow.
* @api
*/
-ol.style.Text.prototype.getExceedLength = function() {
- return this.exceedLength_;
+ol.style.Text.prototype.getOverflow = function() {
+ return this.overflow_;
};
@@ -328,13 +328,13 @@ ol.style.Text.prototype.getPadding = function() {
/**
- * Set the `exceedLength` property.
+ * Set the `overflow` property.
*
- * @param {boolean} exceedLength Let text exceed the path that it follows.
+ * @param {boolean} overflow Let text overflow the path that it follows.
* @api
*/
-ol.style.Text.prototype.setExceedLength = function(exceedLength) {
- this.exceedLength_ = exceedLength;
+ol.style.Text.prototype.setOverflow = function(overflow) {
+ this.overflow_ = overflow;
};
diff --git a/test/rendering/ol/style/text.test.js b/test/rendering/ol/style/text.test.js
index e28f81d07b..320cd855ee 100644
--- a/test/rendering/ol/style/text.test.js
+++ b/test/rendering/ol/style/text.test.js
@@ -382,7 +382,7 @@ describe('ol.rendering.style.Text', function() {
text: 'Hello world',
font: 'bold 24px sans-serif',
placement: 'line',
- exceedLength: true
+ overflow: true
})
}));
vectorSource.addFeature(feature);
@@ -406,7 +406,7 @@ describe('ol.rendering.style.Text', function() {
text: 'Hello world',
font: 'bold 24px sans-serif',
placement: 'line',
- exceedLength: true
+ overflow: true
})
}));
vectorSource.addFeature(feature);