Merge pull request #11990 from ahocevar/remove-vectortile-image-mode
Remove renderMode: 'image' for vector tile layers
This commit is contained in:
@@ -1,5 +1,11 @@
|
|||||||
## Upgrade notes
|
## Upgrade notes
|
||||||
|
|
||||||
|
### Next version
|
||||||
|
|
||||||
|
#### Deprecation of `image` render mode for vector tile layers
|
||||||
|
|
||||||
|
`renderMode: 'image'` for vector tile layers has been deprecated. Applications continue to work, but a warning will be issued to the console. To get rid of the warning, simply remove the `renderMode` option.
|
||||||
|
|
||||||
### v6.5.0
|
### v6.5.0
|
||||||
|
|
||||||
#### Units of the `hitTolerance` option fixed
|
#### Units of the `hitTolerance` option fixed
|
||||||
|
|||||||
+1
-1
@@ -111,7 +111,7 @@ Features for `updates` must have an id set by the feature reader or `ol.Feature#
|
|||||||
|
|
||||||
### 28
|
### 28
|
||||||
|
|
||||||
`renderMode` must be `'image'`, `'hybrid'` or `'vector'`.
|
`renderMode` must be `'hybrid'` or `'vector'`.
|
||||||
|
|
||||||
### 29
|
### 29
|
||||||
|
|
||||||
|
|||||||
@@ -193,10 +193,6 @@ const SourceType = {
|
|||||||
* the largest possible buffer of the used tiles. It should be at least the size of the largest
|
* the largest possible buffer of the used tiles. It should be at least the size of the largest
|
||||||
* point symbol or line width.
|
* point symbol or line width.
|
||||||
* @property {import("./VectorTileRenderType.js").default|string} [renderMode='hybrid'] Render mode for vector tiles:
|
* @property {import("./VectorTileRenderType.js").default|string} [renderMode='hybrid'] Render mode for vector tiles:
|
||||||
* * `'image'`: Vector tiles are rendered as images. Great performance, but point symbols and texts
|
|
||||||
* are always rotated with the view and pixels are scaled during zoom animations. When `declutter`
|
|
||||||
* is set to `true`, the decluttering is done per tile resulting in labels and point symbols getting
|
|
||||||
* cut off at tile boundaries.
|
|
||||||
* * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom
|
* * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom
|
||||||
* animations. Point symbols and texts are accurately rendered as vectors and can stay upright on
|
* animations. Point symbols and texts are accurately rendered as vectors and can stay upright on
|
||||||
* rotated views.
|
* rotated views.
|
||||||
|
|||||||
@@ -36,10 +36,6 @@ import {assign} from '../obj.js';
|
|||||||
* the largest possible buffer of the used tiles. It should be at least the size of the largest
|
* the largest possible buffer of the used tiles. It should be at least the size of the largest
|
||||||
* point symbol or line width.
|
* point symbol or line width.
|
||||||
* @property {import("./VectorTileRenderType.js").default|string} [renderMode='hybrid'] Render mode for vector tiles:
|
* @property {import("./VectorTileRenderType.js").default|string} [renderMode='hybrid'] Render mode for vector tiles:
|
||||||
* * `'image'`: Vector tiles are rendered as images. Only available when `declutter` is set to `false` (default).
|
|
||||||
* Otherwise, `'hybrid'` mode will used instead. Great performance, but point symbols and texts
|
|
||||||
* are always rotated with the view and pixels are scaled during zoom animations. Labels and point symbols will
|
|
||||||
* get cut off at tile boundaries.
|
|
||||||
* * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom
|
* * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom
|
||||||
* animations. Point symbols and texts are accurately rendered as vectors and can stay upright on
|
* animations. Point symbols and texts are accurately rendered as vectors and can stay upright on
|
||||||
* rotated views.
|
* rotated views.
|
||||||
@@ -93,14 +89,19 @@ class VectorTileLayer extends BaseVectorLayer {
|
|||||||
|
|
||||||
super(/** @type {import("./BaseVector.js").Options} */ (baseOptions));
|
super(/** @type {import("./BaseVector.js").Options} */ (baseOptions));
|
||||||
|
|
||||||
const renderMode = options.renderMode || VectorTileRenderType.HYBRID;
|
let renderMode = options.renderMode || VectorTileRenderType.HYBRID;
|
||||||
|
if (renderMode === VectorTileRenderType.IMAGE) {
|
||||||
|
//FIXME deprecated - remove this check in v7.
|
||||||
|
//eslint-disable-next-line
|
||||||
|
console.warn('renderMode: "image" is deprecated. Option ignored.')
|
||||||
|
renderMode = undefined;
|
||||||
|
}
|
||||||
assert(
|
assert(
|
||||||
renderMode == undefined ||
|
renderMode == undefined ||
|
||||||
renderMode == VectorTileRenderType.IMAGE ||
|
|
||||||
renderMode == VectorTileRenderType.HYBRID ||
|
renderMode == VectorTileRenderType.HYBRID ||
|
||||||
renderMode == VectorTileRenderType.VECTOR,
|
renderMode == VectorTileRenderType.VECTOR,
|
||||||
28
|
28
|
||||||
); // `renderMode` must be `'image'`, `'hybrid'` or `'vector'`.
|
); // `renderMode` must be `'hybrid'` or `'vector'`.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
|
|||||||
@@ -5,20 +5,30 @@
|
|||||||
/**
|
/**
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
* Render mode for vector tiles:
|
* Render mode for vector tiles:
|
||||||
* * `'image'`: Vector tiles are rendered as images. Great performance, but
|
|
||||||
* point symbols and texts are always rotated with the view and pixels are
|
|
||||||
* scaled during zoom animations.
|
|
||||||
* * `'hybrid'`: Polygon and line elements are rendered as images, so pixels
|
|
||||||
* are scaled during zoom animations. Point symbols and texts are accurately
|
|
||||||
* rendered as vectors and can stay upright on rotated views.
|
|
||||||
* * `'vector'`: Everything is rendered as vectors. Use this mode for improved
|
|
||||||
* performance on vector tile layers with only a few rendered features (e.g.
|
|
||||||
* for highlighting a subset of features of another layer with the same
|
|
||||||
* source).
|
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
export default {
|
export default {
|
||||||
|
/**
|
||||||
|
* Vector tiles are rendered as images. Great performance, but
|
||||||
|
* point symbols and texts are always rotated with the view and pixels are
|
||||||
|
* scaled during zoom animations
|
||||||
|
* @api
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
IMAGE: 'image',
|
IMAGE: 'image',
|
||||||
|
/**
|
||||||
|
* Polygon and line elements are rendered as images, so pixels
|
||||||
|
* are scaled during zoom animations. Point symbols and texts are accurately
|
||||||
|
* rendered as vectors and can stay upright on rotated views.
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
HYBRID: 'hybrid',
|
HYBRID: 'hybrid',
|
||||||
|
/**
|
||||||
|
* Everything is rendered as vectors. Use this mode for improved
|
||||||
|
* performance on vector tile layers with only a few rendered features (e.g.
|
||||||
|
* for highlighting a subset of features of another layer with the same
|
||||||
|
* source).
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
VECTOR: 'vector',
|
VECTOR: 'vector',
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ const IMAGE_REPLAYS = {
|
|||||||
* @type {!Object<string, Array<import("../../render/canvas/BuilderType.js").default>>}
|
* @type {!Object<string, Array<import("../../render/canvas/BuilderType.js").default>>}
|
||||||
*/
|
*/
|
||||||
const VECTOR_REPLAYS = {
|
const VECTOR_REPLAYS = {
|
||||||
'image': [ReplayType.DEFAULT],
|
|
||||||
'hybrid': [ReplayType.IMAGE, ReplayType.TEXT, ReplayType.DEFAULT],
|
'hybrid': [ReplayType.IMAGE, ReplayType.TEXT, ReplayType.DEFAULT],
|
||||||
'vector': [
|
'vector': [
|
||||||
ReplayType.POLYGON,
|
ReplayType.POLYGON,
|
||||||
@@ -686,9 +685,6 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
|
|||||||
|
|
||||||
const layer = /** @type {import("../../layer/VectorTile.js").default} */ (this.getLayer());
|
const layer = /** @type {import("../../layer/VectorTile.js").default} */ (this.getLayer());
|
||||||
const renderMode = layer.getRenderMode();
|
const renderMode = layer.getRenderMode();
|
||||||
if (renderMode === VectorTileRenderType.IMAGE) {
|
|
||||||
return this.container;
|
|
||||||
}
|
|
||||||
|
|
||||||
const source = layer.getSource();
|
const source = layer.getSource();
|
||||||
// Unqueue tiles from the image queue when we don't need any more
|
// Unqueue tiles from the image queue when we don't need any more
|
||||||
|
|||||||
@@ -43,11 +43,6 @@ describe('ol.layer.VectorTile', function () {
|
|||||||
source: new VectorTileSource({}),
|
source: new VectorTileSource({}),
|
||||||
});
|
});
|
||||||
expect(layer.getRenderMode()).to.be('hybrid');
|
expect(layer.getRenderMode()).to.be('hybrid');
|
||||||
layer = new VectorTileLayer({
|
|
||||||
renderMode: 'image',
|
|
||||||
source: new VectorTileSource({}),
|
|
||||||
});
|
|
||||||
expect(layer.getRenderMode()).to.be('image');
|
|
||||||
expect(function () {
|
expect(function () {
|
||||||
layer = new VectorTileLayer({
|
layer = new VectorTileLayer({
|
||||||
renderMode: 'foo',
|
renderMode: 'foo',
|
||||||
|
|||||||
@@ -117,23 +117,6 @@ describe('ol.renderer.canvas.VectorTileLayer', function () {
|
|||||||
expect(renderer.getLayer()).to.be(layer);
|
expect(renderer.getLayer()).to.be(layer);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does not render replays for pure image rendering', function () {
|
|
||||||
const testLayer = new VectorTileLayer({
|
|
||||||
renderMode: VectorTileRenderType.IMAGE,
|
|
||||||
source: source,
|
|
||||||
style: layerStyle,
|
|
||||||
});
|
|
||||||
map.removeLayer(layer);
|
|
||||||
map.addLayer(testLayer);
|
|
||||||
const spy = sinon.spy(
|
|
||||||
CanvasVectorTileLayerRenderer.prototype,
|
|
||||||
'getRenderTransform'
|
|
||||||
);
|
|
||||||
map.renderSync();
|
|
||||||
expect(spy.callCount).to.be(0);
|
|
||||||
spy.restore();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('does not render images for pure vector rendering', function () {
|
it('does not render images for pure vector rendering', function () {
|
||||||
const testLayer = new VectorTileLayer({
|
const testLayer = new VectorTileLayer({
|
||||||
renderMode: VectorTileRenderType.VECTOR,
|
renderMode: VectorTileRenderType.VECTOR,
|
||||||
|
|||||||
Reference in New Issue
Block a user