ol 9.0.0-dev.1707154322322 → 9.0.0-dev.1707413332477

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/Map.d.ts +5 -10
  2. package/Map.d.ts.map +1 -1
  3. package/Map.js +3 -17
  4. package/VectorRenderTile.d.ts +0 -7
  5. package/VectorRenderTile.d.ts.map +1 -1
  6. package/VectorRenderTile.js +0 -6
  7. package/dist/ol.d.ts +2 -0
  8. package/dist/ol.d.ts.map +1 -1
  9. package/dist/ol.js +2 -2
  10. package/dist/ol.js.map +1 -1
  11. package/layer/BaseVector.d.ts +7 -22
  12. package/layer/BaseVector.d.ts.map +1 -1
  13. package/layer/BaseVector.js +12 -20
  14. package/layer/Layer.d.ts +12 -0
  15. package/layer/Layer.d.ts.map +1 -1
  16. package/layer/Layer.js +23 -0
  17. package/layer/VectorImage.d.ts +10 -6
  18. package/layer/VectorImage.d.ts.map +1 -1
  19. package/layer/VectorImage.js +5 -3
  20. package/layer/VectorTile.d.ts +22 -30
  21. package/layer/VectorTile.d.ts.map +1 -1
  22. package/layer/VectorTile.js +10 -14
  23. package/package.json +1 -1
  24. package/render/VectorContext.d.ts +22 -11
  25. package/render/VectorContext.d.ts.map +1 -1
  26. package/render/VectorContext.js +22 -11
  27. package/render/canvas/Builder.d.ts +2 -1
  28. package/render/canvas/Builder.d.ts.map +1 -1
  29. package/render/canvas/Builder.js +19 -3
  30. package/render/canvas/Executor.d.ts +18 -7
  31. package/render/canvas/Executor.d.ts.map +1 -1
  32. package/render/canvas/Executor.js +101 -57
  33. package/render/canvas/ExecutorGroup.d.ts +39 -9
  34. package/render/canvas/ExecutorGroup.d.ts.map +1 -1
  35. package/render/canvas/ExecutorGroup.js +96 -25
  36. package/render/canvas/ImageBuilder.d.ts +1 -1
  37. package/render/canvas/ImageBuilder.d.ts.map +1 -1
  38. package/render/canvas/ImageBuilder.js +30 -8
  39. package/render/canvas/Immediate.d.ts +11 -0
  40. package/render/canvas/Immediate.d.ts.map +1 -1
  41. package/render/canvas/LineStringBuilder.d.ts.map +1 -1
  42. package/render/canvas/LineStringBuilder.js +6 -4
  43. package/render/canvas/PolygonBuilder.d.ts.map +1 -1
  44. package/render/canvas/PolygonBuilder.js +9 -6
  45. package/render/canvas/TextBuilder.d.ts +4 -0
  46. package/render/canvas/TextBuilder.d.ts.map +1 -1
  47. package/render/canvas/TextBuilder.js +15 -6
  48. package/render/canvas/ZIndexContext.d.ts +56 -0
  49. package/render/canvas/ZIndexContext.d.ts.map +1 -0
  50. package/render/canvas/ZIndexContext.js +112 -0
  51. package/render/canvas/style.d.ts.map +1 -1
  52. package/render/canvas/style.js +9 -2
  53. package/render/canvas.d.ts +2 -2
  54. package/render/canvas.d.ts.map +1 -1
  55. package/render/canvas.js +6 -2
  56. package/renderer/Composite.d.ts +3 -2
  57. package/renderer/Composite.d.ts.map +1 -1
  58. package/renderer/Composite.js +26 -19
  59. package/renderer/Layer.d.ts +4 -0
  60. package/renderer/Layer.d.ts.map +1 -1
  61. package/renderer/Layer.js +5 -0
  62. package/renderer/Map.d.ts +0 -4
  63. package/renderer/Map.d.ts.map +1 -1
  64. package/renderer/Map.js +0 -5
  65. package/renderer/canvas/Layer.d.ts +4 -0
  66. package/renderer/canvas/Layer.d.ts.map +1 -1
  67. package/renderer/canvas/Layer.js +32 -0
  68. package/renderer/canvas/VectorImageLayer.d.ts.map +1 -1
  69. package/renderer/canvas/VectorImageLayer.js +8 -1
  70. package/renderer/canvas/VectorLayer.d.ts +6 -5
  71. package/renderer/canvas/VectorLayer.d.ts.map +1 -1
  72. package/renderer/canvas/VectorLayer.js +55 -58
  73. package/renderer/canvas/VectorTileLayer.d.ts +14 -3
  74. package/renderer/canvas/VectorTileLayer.d.ts.map +1 -1
  75. package/renderer/canvas/VectorTileLayer.js +129 -60
  76. package/renderer/vector.d.ts +3 -2
  77. package/renderer/vector.d.ts.map +1 -1
  78. package/renderer/vector.js +68 -126
  79. package/renderer/webgl/PointsLayer.d.ts +1 -0
  80. package/renderer/webgl/PointsLayer.d.ts.map +1 -1
  81. package/renderer/webgl/PointsLayer.js +2 -0
  82. package/source/Raster.js +1 -1
  83. package/source/WMTS.js +1 -1
  84. package/style/Circle.d.ts +2 -2
  85. package/style/Circle.d.ts.map +1 -1
  86. package/style/Circle.js +1 -1
  87. package/style/Icon.d.ts +1 -1
  88. package/style/Icon.d.ts.map +1 -1
  89. package/style/Icon.js +1 -1
  90. package/style/Image.d.ts +7 -6
  91. package/style/Image.d.ts.map +1 -1
  92. package/style/Image.js +4 -3
  93. package/style/RegularShape.d.ts +2 -2
  94. package/style/RegularShape.d.ts.map +1 -1
  95. package/style/RegularShape.js +1 -1
  96. package/style/Style.d.ts +17 -0
  97. package/style/Style.d.ts.map +1 -1
  98. package/style/Style.js +10 -0
  99. package/style/Text.d.ts +16 -0
  100. package/style/Text.d.ts.map +1 -1
  101. package/style/Text.js +17 -0
  102. package/style/flat.d.ts +11 -6
  103. package/style/flat.d.ts.map +1 -1
  104. package/style/flat.js +4 -3
  105. package/util.js +1 -1
@@ -3,7 +3,11 @@
3
3
  */
4
4
  import CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';
5
5
  import CanvasLayerRenderer, {canvasPool} from './Layer.js';
6
- import ExecutorGroup from '../../render/canvas/ExecutorGroup.js';
6
+ import ExecutorGroup, {
7
+ ALL,
8
+ DECLUTTER,
9
+ NON_DECLUTTER,
10
+ } from '../../render/canvas/ExecutorGroup.js';
7
11
  import RenderEventType from '../../render/EventType.js';
8
12
  import ViewHint from '../../ViewHint.js';
9
13
  import {
@@ -139,11 +143,6 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
139
143
  */
140
144
  this.replayGroupChanged = true;
141
145
 
142
- /**
143
- * @type {import("../../render/canvas/ExecutorGroup").default}
144
- */
145
- this.declutterExecutorGroup = null;
146
-
147
146
  /**
148
147
  * Clipping to be performed by `renderFrame()`
149
148
  * @type {boolean}
@@ -166,9 +165,10 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
166
165
  /**
167
166
  * @param {ExecutorGroup} executorGroup Executor group.
168
167
  * @param {import("../../Map.js").FrameState} frameState Frame state.
169
- * @param {import("rbush").default} [declutterTree] Declutter tree.
168
+ * @param {boolean} [declutterable] `true` to only render declutterable items,
169
+ * `false` to only render non-declutterable items, `undefined` to render all.
170
170
  */
171
- renderWorlds(executorGroup, frameState, declutterTree) {
171
+ renderWorlds(executorGroup, frameState, declutterable) {
172
172
  const extent = frameState.extent;
173
173
  const viewState = frameState.viewState;
174
174
  const center = viewState.center;
@@ -177,6 +177,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
177
177
  const rotation = viewState.rotation;
178
178
  const projectionExtent = projection.getExtent();
179
179
  const vectorSource = this.getLayer().getSource();
180
+ const declutter = this.getLayer().getDeclutter();
180
181
  const pixelRatio = frameState.pixelRatio;
181
182
  const viewHints = frameState.viewHints;
182
183
  const snapToPixel = !(
@@ -206,12 +207,18 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
206
207
  );
207
208
  executorGroup.execute(
208
209
  context,
209
- 1,
210
+ [context.canvas.width, context.canvas.height],
210
211
  transform,
211
212
  rotation,
212
213
  snapToPixel,
213
- undefined,
214
- declutterTree,
214
+ declutterable === undefined
215
+ ? ALL
216
+ : declutterable
217
+ ? DECLUTTER
218
+ : NON_DECLUTTER,
219
+ declutterable
220
+ ? declutter && frameState.declutter[declutter]
221
+ : undefined,
215
222
  );
216
223
  } while (++world < endWorld);
217
224
  }
@@ -246,15 +253,21 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
246
253
  * @param {import("../../Map.js").FrameState} frameState Frame state.
247
254
  */
248
255
  renderDeclutter(frameState) {
249
- if (this.declutterExecutorGroup) {
250
- this.setupCompositionContext_();
251
- this.renderWorlds(
252
- this.declutterExecutorGroup,
253
- frameState,
254
- frameState.declutterTree,
255
- );
256
- this.releaseCompositionContext_();
256
+ const declutter = this.getLayer().getDeclutter();
257
+ if (!declutter) {
258
+ return;
257
259
  }
260
+ this.setupCompositionContext_(); //FIXME Check if this works, or if we need to defer something.
261
+ this.renderWorlds(this.replayGroup_, frameState, true);
262
+ this.releaseCompositionContext_();
263
+ }
264
+
265
+ /**
266
+ * Render deferred instructions.
267
+ * @param {import("../../Map.js").FrameState} frameState Frame state.
268
+ */
269
+ renderDeferredInternal(frameState) {
270
+ this.replayGroup_.renderDeferred();
258
271
  }
259
272
 
260
273
  /**
@@ -278,10 +291,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
278
291
  const canvas = context.canvas;
279
292
 
280
293
  const replayGroup = this.replayGroup_;
281
- const declutterExecutorGroup = this.declutterExecutorGroup;
282
- let render =
283
- (replayGroup && !replayGroup.isEmpty()) ||
284
- (declutterExecutorGroup && !declutterExecutorGroup.isEmpty());
294
+ let render = replayGroup && !replayGroup.isEmpty();
285
295
  if (!render) {
286
296
  const hasRenderListeners =
287
297
  this.getLayer().hasListener(RenderEventType.PRERENDER) ||
@@ -324,7 +334,11 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
324
334
  }
325
335
 
326
336
  if (render) {
327
- this.renderWorlds(replayGroup, frameState);
337
+ this.renderWorlds(
338
+ replayGroup,
339
+ frameState,
340
+ this.getLayer().getDeclutter() ? false : undefined,
341
+ );
328
342
  }
329
343
 
330
344
  if (clipped) {
@@ -501,9 +515,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
501
515
 
502
516
  let result;
503
517
  const executorGroups = [this.replayGroup_];
504
- if (this.declutterExecutorGroup) {
505
- executorGroups.push(this.declutterExecutorGroup);
506
- }
518
+ const declutter = this.getLayer().getDeclutter();
507
519
  executorGroups.some((executorGroup) => {
508
520
  return (result = executorGroup.forEachFeatureAtCoordinate(
509
521
  coordinate,
@@ -511,9 +523,8 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
511
523
  rotation,
512
524
  hitTolerance,
513
525
  featureCallback,
514
- executorGroup === this.declutterExecutorGroup &&
515
- frameState.declutterTree
516
- ? frameState.declutterTree.all().map((item) => item.value)
526
+ declutter && frameState.declutter[declutter]
527
+ ? frameState.declutter[declutter].all().map((item) => item.value)
517
528
  : null,
518
529
  ));
519
530
  });
@@ -653,16 +664,6 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
653
664
  pixelRatio,
654
665
  );
655
666
 
656
- let declutterBuilderGroup;
657
- if (this.getLayer().getDeclutter()) {
658
- declutterBuilderGroup = new CanvasBuilderGroup(
659
- getRenderTolerance(resolution, pixelRatio),
660
- extent,
661
- resolution,
662
- pixelRatio,
663
- );
664
- }
665
-
666
667
  const userProjection = getUserProjection();
667
668
  let userTransform;
668
669
  if (userProjection) {
@@ -687,8 +688,9 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
687
688
  const render =
688
689
  /**
689
690
  * @param {import("../../Feature.js").default} feature Feature.
691
+ * @param {number} index Index.
690
692
  */
691
- (feature) => {
693
+ (feature, index) => {
692
694
  let styles;
693
695
  const styleFunction =
694
696
  feature.getStyleFunction() || vectorLayer.getStyleFunction();
@@ -702,7 +704,8 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
702
704
  styles,
703
705
  replayGroup,
704
706
  userTransform,
705
- declutterBuilderGroup,
707
+ this.getLayer().getDeclutter(),
708
+ index,
706
709
  );
707
710
  ready = ready && !dirty;
708
711
  }
@@ -715,7 +718,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
715
718
  features.sort(vectorLayerRenderOrder);
716
719
  }
717
720
  for (let i = 0, ii = features.length; i < ii; ++i) {
718
- render(features[i]);
721
+ render(features[i], i);
719
722
  }
720
723
  this.renderedFeatures_ = features;
721
724
  this.ready = ready;
@@ -728,19 +731,9 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
728
731
  vectorSource.getOverlaps(),
729
732
  replayGroupInstructions,
730
733
  vectorLayer.getRenderBuffer(),
734
+ !!frameState.declutter,
731
735
  );
732
736
 
733
- if (declutterBuilderGroup) {
734
- this.declutterExecutorGroup = new ExecutorGroup(
735
- extent,
736
- resolution,
737
- pixelRatio,
738
- vectorSource.getOverlaps(),
739
- declutterBuilderGroup.finish(),
740
- vectorLayer.getRenderBuffer(),
741
- );
742
- }
743
-
744
737
  this.renderedResolution_ = resolution;
745
738
  this.renderedRevision_ = vectorLayerRevision;
746
739
  this.renderedRenderOrder_ = vectorLayerRenderOrder;
@@ -762,7 +755,8 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
762
755
  * @param {import("../../style/Style.js").default|Array<import("../../style/Style.js").default>} styles The style or array of styles.
763
756
  * @param {import("../../render/canvas/BuilderGroup.js").default} builderGroup Builder group.
764
757
  * @param {import("../../proj.js").TransformFunction} [transform] Transform from user to view projection.
765
- * @param {import("../../render/canvas/BuilderGroup.js").default} [declutterBuilderGroup] Builder for decluttering.
758
+ * @param {boolean} [declutter] Enable decluttering.
759
+ * @param {number} [index] Render order index.
766
760
  * @return {boolean} `true` if an image is loading.
767
761
  */
768
762
  renderFeature(
@@ -771,7 +765,8 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
771
765
  styles,
772
766
  builderGroup,
773
767
  transform,
774
- declutterBuilderGroup,
768
+ declutter,
769
+ index,
775
770
  ) {
776
771
  if (!styles) {
777
772
  return false;
@@ -787,7 +782,8 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
787
782
  squaredTolerance,
788
783
  this.boundHandleStyleImageChange_,
789
784
  transform,
790
- declutterBuilderGroup,
785
+ declutter,
786
+ index,
791
787
  ) || loading;
792
788
  }
793
789
  } else {
@@ -798,7 +794,8 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer {
798
794
  squaredTolerance,
799
795
  this.boundHandleStyleImageChange_,
800
796
  transform,
801
- declutterBuilderGroup,
797
+ declutter,
798
+ index,
802
799
  );
803
800
  }
804
801
  return loading;
@@ -27,11 +27,21 @@ declare class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer<impo
27
27
  * @type {number}
28
28
  */
29
29
  private renderedRotation_;
30
+ /**
31
+ * @private
32
+ * @type {number}
33
+ */
34
+ private renderedOpacity_;
30
35
  /**
31
36
  * @private
32
37
  * @type {import("../../transform.js").Transform}
33
38
  */
34
39
  private tmpTransform_;
40
+ /**
41
+ * @private
42
+ * @type {Array<ZIndexContext>}
43
+ */
44
+ private tileClipContexts_;
35
45
  /**
36
46
  * @param {import("../../VectorRenderTile.js").default} tile Tile.
37
47
  * @param {number} pixelRatio Pixel ratio.
@@ -67,16 +77,18 @@ declare class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer<impo
67
77
  * @param {import("../../layer/Layer.js").State} layerState Layer state.
68
78
  */
69
79
  renderDeclutter(frameState: import("../../Map.js").FrameState, layerState: import("../../layer/Layer.js").State): void;
80
+ renderDeferredInternal(): void;
70
81
  getTileRenderTransform(tile: any, frameState: any): number[];
71
82
  /**
72
83
  * @param {import("../../Feature.js").FeatureLike} feature Feature.
73
84
  * @param {number} squaredTolerance Squared tolerance.
74
85
  * @param {import("../../style/Style.js").default|Array<import("../../style/Style.js").default>} styles The style or array of styles.
75
86
  * @param {import("../../render/canvas/BuilderGroup.js").default} builderGroup Replay group.
76
- * @param {import("../../render/canvas/BuilderGroup.js").default} [declutterBuilderGroup] Builder group for decluttering.
87
+ * @param {boolean} [declutter] Enable decluttering.
88
+ * @param {number} [index] Render order index.
77
89
  * @return {boolean} `true` if an image is loading.
78
90
  */
79
- renderFeature(feature: import("../../Feature.js").FeatureLike, squaredTolerance: number, styles: import("../../style/Style.js").default | Array<import("../../style/Style.js").default>, builderGroup: import("../../render/canvas/BuilderGroup.js").default, declutterBuilderGroup?: CanvasBuilderGroup | undefined): boolean;
91
+ renderFeature(feature: import("../../Feature.js").FeatureLike, squaredTolerance: number, styles: import("../../style/Style.js").default | Array<import("../../style/Style.js").default>, builderGroup: import("../../render/canvas/BuilderGroup.js").default, declutter?: boolean | undefined, index?: number | undefined): boolean;
80
92
  /**
81
93
  * @param {import("../../VectorRenderTile.js").default} tile Tile.
82
94
  * @return {boolean} A new tile image was rendered.
@@ -91,5 +103,4 @@ declare class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer<impo
91
103
  private renderTileImage_;
92
104
  }
93
105
  import CanvasTileLayerRenderer from './TileLayer.js';
94
- import CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';
95
106
  //# sourceMappingURL=VectorTileLayer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VectorTileLayer.d.ts","sourceRoot":"","sources":["VectorTileLayer.js"],"names":[],"mappings":";AAwDA;;;;;GAKG;AACH;IACE;;OAEG;IACH,mBAFW,OAAO,2BAA2B,EAAE,OAAO,EA+BrD;IA1BC,eAAe;IACf,qCAA2E;IAE3E;;;OAGG;IACH,+BAA2B;IAE3B;;;OAGG;IACH,4CAA+C;IAE/C;;;OAGG;IACH,0BAAsB;IAEtB;;;OAGG;IACH,sBAAsC;IAGxC;;;;;OAKG;IACH,kBALW,OAAO,2BAA2B,EAAE,OAAO,cAC3C,MAAM,cACN,OAAO,uBAAuB,EAAE,OAAO,GACtC,OAAO,GAAC,SAAS,CAY5B;IAkCD;;;OAGG;IACH,qBAHW,OAAO,2BAA2B,EAAE,OAAO,GAC1C,OAAO,CAUlB;IAED;;OAEG;IACH,6BAEC;IAgBD;;;;;OAKG;IACH,6BAmIC;IA6ND;;;;OAIG;IACH,gCAEC;IAED;;;;OAIG;IACH,4BAHW,OAAO,cAAc,EAAE,UAAU,cACjC,OAAO,sBAAsB,EAAE,KAAK,QAiC9C;IAED,6DA+BC;IAgHD;;;;;;;OAOG;IACH,uBAPW,OAAO,kBAAkB,EAAE,WAAW,oBACtC,MAAM,UACN,OAAO,sBAAsB,EAAE,OAAO,GAAC,MAAM,OAAO,sBAAsB,EAAE,OAAO,CAAC,gBACpF,OAAO,qCAAqC,EAAE,OAAO,2DAEpD,OAAO,CAsClB;IAED;;;;OAIG;IACH,8BAcC;IAED;;;;OAIG;IACH,yBAoDC;CACF;oCAl1BmC,gBAAgB;+BAFrB,qCAAqC"}
1
+ {"version":3,"file":"VectorTileLayer.d.ts","sourceRoot":"","sources":["VectorTileLayer.js"],"names":[],"mappings":";AA4DA;;;;;GAKG;AACH;IACE;;OAEG;IACH,mBAFW,OAAO,2BAA2B,EAAE,OAAO,EA2CrD;IAtCC,eAAe;IACf,qCAA2E;IAE3E;;;OAGG;IACH,+BAA2B;IAE3B;;;OAGG;IACH,4CAA+C;IAE/C;;;OAGG;IACH,0BAAsB;IAEtB;;;OAGG;IACH,yBAAyB;IAEzB;;;OAGG;IACH,sBAAsC;IAEtC;;;OAGG;IACH,0BAA6B;IAG/B;;;;;OAKG;IACH,kBALW,OAAO,2BAA2B,EAAE,OAAO,cAC3C,MAAM,cACN,OAAO,uBAAuB,EAAE,OAAO,GACtC,OAAO,GAAC,SAAS,CAY5B;IAkCD;;;OAGG;IACH,qBAHW,OAAO,2BAA2B,EAAE,OAAO,GAC1C,OAAO,CAUlB;IAED;;OAEG;IACH,6BAEC;IAgBD;;;;;OAKG;IACH,6BAqHC;IAyND;;;;OAIG;IACH,gCAEC;IAED;;;;OAIG;IACH,4BAHW,OAAO,cAAc,EAAE,UAAU,cACjC,OAAO,sBAAsB,EAAE,KAAK,QAiC9C;IAED,+BA6CC;IAED,6DA+BC;IAgID;;;;;;;;OAQG;IACH,uBARW,OAAO,kBAAkB,EAAE,WAAW,oBACtC,MAAM,UACN,OAAO,sBAAsB,EAAE,OAAO,GAAC,MAAM,OAAO,sBAAsB,EAAE,OAAO,CAAC,gBACpF,OAAO,qCAAqC,EAAE,OAAO,gEAGpD,OAAO,CAyClB;IAED;;;;OAIG;IACH,8BAcC;IAED;;;;OAIG;IACH,yBAwDC;CACF;oCAr5BmC,gBAAgB"}