ol 7.0.1-dev.1661279677876 → 7.0.1-dev.1661441168710

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.
@@ -99,7 +99,7 @@ export type Options = {
99
99
  /**
100
100
  * Style for sketch features.
101
101
  */
102
- style?: import("../style/Style.js").StyleLike | undefined;
102
+ style?: import("../style/Style.js").StyleLike | import("../style/flat.js").FlatStyleLike | undefined;
103
103
  /**
104
104
  * Function that is called when a geometry's coordinates are updated.
105
105
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Draw.d.ts","sourceRoot":"","sources":["Draw.js"],"names":[],"mappings":"AAgzDA;;;;;;;;;;;;GAYG;AACH,8FAHY,gBAAgB,CAmC3B;AAED;;;;;;GAMG;AACH,6BAHY,gBAAgB,CAiC3B;AA/sDD;;;;GAIG;AACH;IACE;;;OAGG;IACH,kBAHW,aAAa,WACb,OAAO,EAWjB;IANC;;;;OAIG;IACH,SAHU,OAAO,CAGK;CAEzB;;;;;;;UA5Ja,OAAO,qBAAqB,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA4DnC,OAAO,kBAAkB,EAAE,UAAU;;;;4BAKrC,MAAM,OAAO,kBAAkB,EAAE,UAAU,CAAC;;;;4BAK5C,MAAM,MAAM,OAAO,kBAAkB,EAAE,UAAU,CAAC,CAAC;;;;8BAKnD,wCAA0C;;;;;YAKzC,OAAO;;;;;;;;;;;;;;;;;;;iBASP,MAAM,OAAO,kBAAkB,EAAE,UAAU,CAAC;;;;UAC5C,OAAO;;;;;gBACP,MAAM;;;;cAEN,MAAM;;;;;;;;sCAQG,eAAe,QAAE,OAAO,2BAA2B,EAAE,OAAO,QAClF,OAAa,uBAAuB,EAAE,OAAO,KAC7C,OAAa,2BAA2B,EAAE,OAAO;;;;;mBAIrC,OAAO,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ;;;;;WAiM5C,MAAM;;;;cACN,MAAM;;;;;;WA6IN,MAAM;;;;qBACN,MAAM;;;;;sCAsEP,OAAO,eAAe,EAAE,WAAW,CAAC,OAAO,eAAe,EAAE,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,GACjI,OAAW,eAAe,EAAE,WAAW,CAAC,OAAO,oBAAoB,EAAE,KAAK,GAC1E,eAAqB,EAAE,OAAO,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,GAC/D,OAAW,eAAe,EAAE,WAAW,CAAC,WAAW,GAAC,SAAS,GAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,GAC7F,OAAW,eAAe,EAAE,mBAAmB,CAAC,OAAO,eAAe,EAAE,UAAU,GAAC,OAAO,oBAAoB,EAAE,KAAK,GACrH,eAAqB,GAAC,WAAW,GAAC,SAAS,GAAC,WAAW,EAAE,MAAM,CAAC;;;qBArZvD,MAAM;;;;;;AA8YhB;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH;IACE;;OAEG;IACH,qBAFW,OAAO,EA2VjB;IA/UC;;OAEG;IACH,IAFU,gBAAgB,OAAO,WAAW,EAAE,SAAS,CAAC,CAEjD;IAEP;;OAEG;IACH,MAFU,gBAAgB,OAAO,WAAW,EAAE,SAAS,CAAC,CAE/C;IAET;;OAEG;IACH,IAFU,gBAAgB,IAAI,CAAC,CAExB;IAEP;;;OAGG;IACH,sBAA0B;IAE1B;;;OAGG;IACH,gBAAmB;IAEnB;;;OAGG;IACH,qBAAiB;IAEjB;;;OAGG;IACH,sBAAkB;IAElB;;;;OAIG;IACH,qBAAiB;IAEjB;;;OAGG;IACH,kBAAsB;IAEtB;;;;OAIG;IACH,gBAAqD;IAErD;;;;OAIG;IACH,kBAA2D;IAE3D;;;;OAIG;IACH,uBAAwE;IAExE;;;;OAIG;IACH,cAEC;IAED;;;;OAIG;IACH,cAAgC;IAEhC;;;;;OAKG;IACH,mBAAqC;IAErC;;;;;;OAMG;IACH,mBAIK;IAEL;;;;;OAKG;IACH,mBAKc;IAEd;;;;OAIG;IACH,yBAEQ;IAER;;;OAGG;IACH,wBAEQ;IAsER;;;OAGG;IACH,0BAAyC;IAEzC;;;OAGG;IACH,yBACuE;IAEvE;;;;;OAKG;IACH,0BAA6B;IAE7B;;;;OAIG;IACH,uBAA0B;IAE1B;;;;OAIG;IACH,qBAAwB;IAExB;;;;OAIG;IACH,sBAAyB;IAEzB;;;;OAIG;IACH,oBAAuB;IAEvB;;;;OAIG;IACH,0BAA6B;IAE7B;;;;;;OAMG;IACH,+BAEM;IAEN;;;;OAIG;IACH,iBAOE;IAEF;;;;OAIG;IACH,sBAAyC;IAEzC;;;OAGG;IACH,mBAAwE;IAExE;;;OAGG;IACH,2BAAuB;IASvB;;;OAGG;IACH,wBAAoB;IAGpB;;;OAGG;IACH,oBAAkC;IAElC;;;OAGG;IACH,qBAAiE;IAKnE;;;;;OAKG;IACH,gBAHW,OAAO,GAAC,OAAO,wBAAwB,EAAE,SAAS,QAa5D;IAED;;;;;OAKG;IACH,YAFW,OAAO,WAAW,EAAE,OAAO,QAKrC;IAED;;;;OAIG;IACH,+BAEC;IA4GD;;OAEG;IACH,yBAEC;IAED;;;;OAIG;IACH,0BAkCC;IAED;;;;OAIG;IACH,sCA2BC;IAED;;;;OAIG;IACH,iCAyBC;IAED;;;;;OAKG;IACH,8BA+BC;IAED;;;;OAIG;IACH,qBAmDC;IAmDD;;;;OAIG;IACH,2BA2BC;IAED;;;;;;OAMG;IACH,kBA8CC;IAED;;;OAGG;IACH,mCAQC;IAED;;;OAGG;IACH,wCAmBC;IAED;;;;OAIG;IACH,sBAgCC;IAED;;;;OAIG;IACH,uBAwCC;IAED;;;;OAIG;IACH,sBAsCC;IAED;;OAEG;IACH,qBAFW,MAAM,QA8ChB;IAED;;;;OAIG;IACH,wBAEC;IAED;;;;;OAKG;IACH,sBA4CC;IAED;;;;OAIG;IACH,sBASC;IAED;;;OAGG;IACH,qBAKC;IAED;;;;;;;;OAQG;IACH,oDAmCC;IAED;;;;;;;;;;;OAWG;IACH,gBAHY,QAAQ,UAAU,CAAC,QAgB9B;IAED;;;OAGG;IACH,8BAcC;IAED;;OAEG;IACH,qBAOC;CACF"}
1
+ {"version":3,"file":"Draw.d.ts","sourceRoot":"","sources":["Draw.js"],"names":[],"mappings":"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"}
@@ -70,7 +70,7 @@ import {getStrideForLayout} from '../geom/SimpleGeometry.js';
70
70
  * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a
71
71
  * boolean to indicate whether the drawing can be finished. Not used when drawing
72
72
  * POINT or MULTI_POINT geometries.
73
- * @property {import("../style/Style.js").StyleLike} [style]
73
+ * @property {import("../style/Style.js").StyleLike|import("../style/flat.js").FlatStyleLike} [style]
74
74
  * Style for sketch features.
75
75
  * @property {GeometryFunction} [geometryFunction]
76
76
  * Function that is called when a geometry's coordinates are updated.
@@ -355,10 +355,12 @@ const sharedUpdateInfo = {index: -1, endIndex: NaN};
355
355
  /**
356
356
  * @param {import("../coordinate.js").Coordinate} coordinate The coordinate.
357
357
  * @param {TraceState} traceState The trace state.
358
+ * @param {import("../Map.js").default} map The map.
359
+ * @param {number} snapTolerance The snap tolerance.
358
360
  * @return {TraceTargetUpdateInfo} Information about the new trace target. The returned
359
361
  * object is reused between calls and must not be modified by the caller.
360
362
  */
361
- function getTraceTargetUpdate(coordinate, traceState) {
363
+ function getTraceTargetUpdate(coordinate, traceState, map, snapTolerance) {
362
364
  const x = coordinate[0];
363
365
  const y = coordinate[1];
364
366
 
@@ -412,14 +414,24 @@ function getTraceTargetUpdate(coordinate, traceState) {
412
414
  }
413
415
  }
414
416
 
415
- if (
416
- traceState.targetIndex !== newTargetIndex &&
417
- traceState.targets[newTargetIndex].ring
418
- ) {
419
- const target = traceState.targets[newTargetIndex];
420
- const coordinates = target.coordinates;
417
+ const newTarget = traceState.targets[newTargetIndex];
418
+ let considerBothDirections = newTarget.ring;
419
+ if (traceState.targetIndex === newTargetIndex && considerBothDirections) {
420
+ // only consider switching trace direction if close to the start
421
+ const newCoordinate = interpolateCoordinate(
422
+ newTarget.coordinates,
423
+ newEndIndex
424
+ );
425
+ const pixel = map.getPixelFromCoordinate(newCoordinate);
426
+ if (distance(pixel, traceState.startPx) > snapTolerance) {
427
+ considerBothDirections = false;
428
+ }
429
+ }
430
+
431
+ if (considerBothDirections) {
432
+ const coordinates = newTarget.coordinates;
421
433
  const count = coordinates.length;
422
- const startIndex = target.startIndex;
434
+ const startIndex = newTarget.startIndex;
423
435
  const endIndex = newEndIndex;
424
436
  if (startIndex < endIndex) {
425
437
  const forwardDistance = getCumulativeSquaredDistance(
@@ -1239,7 +1251,9 @@ class Draw extends PointerInteraction {
1239
1251
 
1240
1252
  const updatedTraceTarget = getTraceTargetUpdate(
1241
1253
  event.coordinate,
1242
- traceState
1254
+ traceState,
1255
+ this.getMap(),
1256
+ this.snapTolerance_
1243
1257
  );
1244
1258
 
1245
1259
  if (traceState.targetIndex !== updatedTraceTarget.index) {
@@ -25,7 +25,7 @@
25
25
  * features. Default is {@link module:ol/events/condition.always}.
26
26
  * @property {number} [pixelTolerance=10] Pixel tolerance for considering the
27
27
  * pointer close enough to a segment or vertex for editing.
28
- * @property {import("../style/Style.js").StyleLike} [style]
28
+ * @property {import("../style/Style.js").StyleLike|import("../style/flat.js").FlatStyleLike} [style]
29
29
  * Style used for the modification point or vertex. For linestrings and polygons, this will
30
30
  * be the affected vertex, for circles a point along the circle, and for points the actual
31
31
  * point. If not configured, the default edit style is used (see {@link module:ol/style/Style~Style}).
@@ -142,7 +142,7 @@ export type Options = {
142
142
  * in the same order. The `geometries` are only useful when modifying geometry collections, where
143
143
  * the geometry will be the particular geometry from the collection that is being modified.
144
144
  */
145
- style?: import("../style/Style.js").StyleLike | undefined;
145
+ style?: import("../style/Style.js").StyleLike | import("../style/flat.js").FlatStyleLike | undefined;
146
146
  /**
147
147
  * The vector source with
148
148
  * features to modify. If a vector source is not provided, a feature collection
@@ -106,7 +106,7 @@ const ModifyEventType = {
106
106
  * features. Default is {@link module:ol/events/condition.always}.
107
107
  * @property {number} [pixelTolerance=10] Pixel tolerance for considering the
108
108
  * pointer close enough to a segment or vertex for editing.
109
- * @property {import("../style/Style.js").StyleLike} [style]
109
+ * @property {import("../style/Style.js").StyleLike|import("../style/flat.js").FlatStyleLike} [style]
110
110
  * Style used for the modification point or vertex. For linestrings and polygons, this will
111
111
  * be the affected vertex, for circles a point along the circle, and for points the actual
112
112
  * point. If not configured, the default edit style is used (see {@link module:ol/style/Style~Style}).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol",
3
- "version": "7.0.1-dev.1661279677876",
3
+ "version": "7.0.1-dev.1661441168710",
4
4
  "description": "OpenLayers mapping library",
5
5
  "keywords": [
6
6
  "map",
@@ -1 +1 @@
1
- {"version":3,"file":"TileLayer.d.ts","sourceRoot":"","sources":["TileLayer.js"],"names":[],"mappings":";AA8BA;;;;;;GAMG;AACH;IACE;;OAEG;IACH,uBAFW,SAAS,EA0DnB;IArDC;;;OAGG;IACH,eAFU,OAAO,CAEQ;IAEzB;;;OAGG;IACH,wBAA2B;IAE3B;;;OAGG;IACH,8BAFU,MAAM,CAEO;IAEvB;;;OAGG;IACH,8BAFU,OAAO,0BAA0B,EAAE,OAAO,CAEtB;IAE9B;;;OAGG;IACH,4BAFU,MAAM,CAEK;IAErB;;;OAGG;IACH,yBAFW,MAAM,OAAO,eAAe,EAAE,OAAO,CAAC,CAE1B;IAEvB;;;OAGG;IACH,kBAAsB;IAEtB;;;OAGG;IACH,qBAFU,OAAO,iBAAiB,EAAE,MAAM,CAEZ;IAE9B;;;OAGG;IACH,sBAA8C;IAGhD;;;;OAIG;IACH,+BAHW,OAAO,eAAe,EAAE,OAAO,GAC9B,OAAO,CAWlB;IAED;;;;;;OAMG;IACH,WANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,OAAO,cAAc,EAAE,UAAU,GAC/B,OAAO,eAAe,EAAE,OAAO,CAkB3C;IAED;;;OAGG;IACH,eAHW,OAAO,gBAAgB,EAAE,KAAK,GAC7B,iBAAiB,CAyE5B;IAoWD;;;;;;;;;OASG;IACH,oBATW,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,cAAc,EAAE,UAAU,KACjC,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,UACN,MAAM,cACN,OAAO,QAqCjB;IAED;;OAEG;IACH,YAFY,iBAAiB,CAK5B;IAED;;;;;OAKG;IACH,6BAJW,OAAO,oBAAoB,EAAE,OAAO,GACnC,iBAAiB,GAAC,gBAAgB,GAAC,gBAAgB,CAK9D;IAED;;;;OAIG;IACH,0CAJW,OAAO,cAAc,EAAE,UAAU,cACjC,OAAO,sBAAsB,EAAE,OAAO,QA0BhD;IAED;;;;;OAKG;IACH;YALmB,MAAM;gBAAU,MAAM,GAAE,OAAO;;mBACvC,OAAO,sBAAsB,EAAE,OAAO,QACtC,OAAO,eAAe,EAAE,OAAO,QAUzC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,wCAXW,OAAO,cAAc,EAAE,UAAU,cACjC,OAAO,sBAAsB,EAAE,OAAO,YACtC,OAAO,4BAA4B,EAAE,OAAO,cAC5C,MAAM,cACN,OAAO,0BAA0B,EAAE,OAAO,UAC1C,OAAO,iBAAiB,EAAE,MAAM,YAChC,MAAM,WACN,MAAM,yBACG,OAAO,eAAe,EAAE,OAAO,KAAE,IAAI,qBAmExD;CACF"}
1
+ {"version":3,"file":"TileLayer.d.ts","sourceRoot":"","sources":["TileLayer.js"],"names":[],"mappings":";AA8BA;;;;;;GAMG;AACH;IACE;;OAEG;IACH,uBAFW,SAAS,EA0DnB;IArDC;;;OAGG;IACH,eAFU,OAAO,CAEQ;IAEzB;;;OAGG;IACH,wBAA2B;IAE3B;;;OAGG;IACH,8BAFU,MAAM,CAEO;IAEvB;;;OAGG;IACH,8BAFU,OAAO,0BAA0B,EAAE,OAAO,CAEtB;IAE9B;;;OAGG;IACH,4BAFU,MAAM,CAEK;IAErB;;;OAGG;IACH,yBAFW,MAAM,OAAO,eAAe,EAAE,OAAO,CAAC,CAE1B;IAEvB;;;OAGG;IACH,kBAAsB;IAEtB;;;OAGG;IACH,qBAFU,OAAO,iBAAiB,EAAE,MAAM,CAEZ;IAE9B;;;OAGG;IACH,sBAA8C;IAGhD;;;;OAIG;IACH,+BAHW,OAAO,eAAe,EAAE,OAAO,GAC9B,OAAO,CAWlB;IAED;;;;;;OAMG;IACH,WANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,OAAO,cAAc,EAAE,UAAU,GAC/B,OAAO,eAAe,EAAE,OAAO,CAkB3C;IAED;;;OAGG;IACH,eAHW,OAAO,gBAAgB,EAAE,KAAK,GAC7B,iBAAiB,CA4E5B;IAoWD;;;;;;;;;OASG;IACH,oBATW,OAAO,oBAAoB,EAAE,OAAO,cACpC,OAAO,cAAc,EAAE,UAAU,KACjC,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,UACN,MAAM,cACN,OAAO,QAqCjB;IAED;;OAEG;IACH,YAFY,iBAAiB,CAK5B;IAED;;;;;OAKG;IACH,6BAJW,OAAO,oBAAoB,EAAE,OAAO,GACnC,iBAAiB,GAAC,gBAAgB,GAAC,gBAAgB,CAK9D;IAED;;;;OAIG;IACH,0CAJW,OAAO,cAAc,EAAE,UAAU,cACjC,OAAO,sBAAsB,EAAE,OAAO,QA0BhD;IAED;;;;;OAKG;IACH;YALmB,MAAM;gBAAU,MAAM,GAAE,OAAO;;mBACvC,OAAO,sBAAsB,EAAE,OAAO,QACtC,OAAO,eAAe,EAAE,OAAO,QAUzC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,wCAXW,OAAO,cAAc,EAAE,UAAU,cACjC,OAAO,sBAAsB,EAAE,OAAO,YACtC,OAAO,4BAA4B,EAAE,OAAO,cAC5C,MAAM,cACN,OAAO,0BAA0B,EAAE,OAAO,UAC1C,OAAO,iBAAiB,EAAE,MAAM,YAChC,MAAM,WACN,MAAM,yBACG,OAAO,eAAe,EAAE,OAAO,KAAE,IAAI,qBAmExD;CACF"}
@@ -181,7 +181,10 @@ class CanvasTileLayerRenderer extends CanvasLayerRenderer {
181
181
  pixelRatio,
182
182
  projection
183
183
  );
184
- if (!(tile instanceof ImageTile || tile instanceof ReprojTile)) {
184
+ if (
185
+ !(tile instanceof ImageTile || tile instanceof ReprojTile) ||
186
+ (tile instanceof ReprojTile && tile.getState() === TileState.EMPTY)
187
+ ) {
185
188
  return null;
186
189
  }
187
190
 
@@ -158,10 +158,11 @@ declare class WebGLTileLayerRenderer extends WebGLLayerRenderer<import("../../la
158
158
  * @param {import("../../extent.js").Extent} extent The extent to be rendered.
159
159
  * @param {number} initialZ The zoom level.
160
160
  * @param {Object<number, Array<TileTexture>>} tileTexturesByZ The zoom level.
161
+ * @param {number} preload Number of additional levels to load.
161
162
  */
162
163
  enqueueTiles(frameState: import("../../Map.js").FrameState, extent: import("../../extent.js").Extent, initialZ: number, tileTexturesByZ: {
163
164
  [x: number]: Array<TileTexture>;
164
- }): void;
165
+ }, preload: number): void;
165
166
  /**
166
167
  * Render the layer.
167
168
  * @param {import("../../Map.js").FrameState} frameState Frame state.
@@ -1 +1 @@
1
- {"version":3,"file":"TileLayer.d.ts","sourceRoot":"","sources":["TileLayer.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;kBAiIc,MAAM;;;;oBACN,MAAM;;;;;;;;;;;;;;;;;wBAQP,OAAO,0BAA0B,EAAE,OAAO;AAXvD;;;;;;;;GAQG;AAEH;;GAEG;AAEH;;;;;GAKG;AACH;IACE;;;OAGG;IACH,uBAHW,SAAS,WACT,OAAO,EAmGjB;IA5FC;;;OAGG;IACH,gBAFU,OAAO,CAEU;IAE3B;;;;OAIG;IACH,uBAAuC;IAEvC;;;OAGG;IACH,kBAA6B;IAE7B;;;OAGG;IACH,uBAA+C;IAE/C;;;OAGG;IACH,uBAA8C;IAE9C;;;OAGG;IACH,kBAAuB;IAEvB;;;OAGG;IACH,iBAAa;IAEb;;OAEG;IACH,sBAAyC;IAEzC;;OAEG;IACH,wBAA6C;IAE7C;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAuE;IAKvE;;;OAGG;IACH,0BAAgD;IAEhD;;;OAGG;IACH,yBAAqD;IAErD;;;OAGG;IACH,oBAAuB;IAGzB;;OAEG;IACH,eAFW,OAAO,QAgBjB;IAWD;;;;OAIG;IACH,wBASC;IAoBD;;;;;OAKG;IACH,yBALW,OAAO,cAAc,EAAE,UAAU,UACjC,OAAO,iBAAiB,EAAE,MAAM,YAChC,MAAM;YACC,MAAM,GAAE,MAAM,WAAW,CAAC;aA6F3C;IAED;;;;OAIG;IACH,wBAHW,OAAO,cAAc,EAAE,UAAU,GAChC,WAAW,CA6QtB;IAED;;;OAGG;IACH,eAHW,OAAO,gBAAgB,EAAE,KAAK,GAC7B,iBAAiB,GAAC,UAAU,GAAC,YAAY,GAAC,QAAQ,CAqF7D;IAED;;;;;;;;;;OAUG;IACH,sBA+BC;CA+BF"}
1
+ {"version":3,"file":"TileLayer.d.ts","sourceRoot":"","sources":["TileLayer.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;kBAkIc,MAAM;;;;oBACN,MAAM;;;;;;;;;;;;;;;;;wBAQP,OAAO,0BAA0B,EAAE,OAAO;AAXvD;;;;;;;;GAQG;AAEH;;GAEG;AAEH;;;;;GAKG;AACH;IACE;;;OAGG;IACH,uBAHW,SAAS,WACT,OAAO,EAmGjB;IA5FC;;;OAGG;IACH,gBAFU,OAAO,CAEU;IAE3B;;;;OAIG;IACH,uBAAuC;IAEvC;;;OAGG;IACH,kBAA6B;IAE7B;;;OAGG;IACH,uBAA+C;IAE/C;;;OAGG;IACH,uBAA8C;IAE9C;;;OAGG;IACH,kBAAuB;IAEvB;;;OAGG;IACH,iBAAa;IAEb;;OAEG;IACH,sBAAyC;IAEzC;;OAEG;IACH,wBAA6C;IAE7C;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAuE;IAKvE;;;OAGG;IACH,0BAAgD;IAEhD;;;OAGG;IACH,yBAAqD;IAErD;;;OAGG;IACH,oBAAuB;IAGzB;;OAEG;IACH,eAFW,OAAO,QAgBjB;IAWD;;;;OAIG;IACH,wBASC;IAoBD;;;;;;OAMG;IACH,yBANW,OAAO,cAAc,EAAE,UAAU,UACjC,OAAO,iBAAiB,EAAE,MAAM,YAChC,MAAM;YACC,MAAM,GAAE,MAAM,WAAW,CAAC;gBACjC,MAAM,QAwGhB;IAED;;;;OAIG;IACH,wBAHW,OAAO,cAAc,EAAE,UAAU,GAChC,WAAW,CAkStB;IAED;;;OAGG;IACH,eAHW,OAAO,gBAAgB,EAAE,KAAK,GAC7B,iBAAiB,GAAC,UAAU,GAAC,YAAY,GAAC,QAAQ,CAyF7D;IAED;;;;;;;;;;OAUG;IACH,sBA+BC;CA+BF"}
@@ -2,6 +2,7 @@
2
2
  * @module ol/renderer/webgl/TileLayer
3
3
  */
4
4
  import LRUCache from '../../structs/LRUCache.js';
5
+ import ReprojTile from '../../reproj/Tile.js';
5
6
  import TileRange from '../../TileRange.js';
6
7
  import TileState from '../../TileState.js';
7
8
  import TileTexture from '../../webgl/TileTexture.js';
@@ -316,8 +317,9 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer {
316
317
  * @param {import("../../extent.js").Extent} extent The extent to be rendered.
317
318
  * @param {number} initialZ The zoom level.
318
319
  * @param {Object<number, Array<TileTexture>>} tileTexturesByZ The zoom level.
320
+ * @param {number} preload Number of additional levels to load.
319
321
  */
320
- enqueueTiles(frameState, extent, initialZ, tileTexturesByZ) {
322
+ enqueueTiles(frameState, extent, initialZ, tileTexturesByZ, preload) {
321
323
  const viewState = frameState.viewState;
322
324
  const tileLayer = this.getLayer();
323
325
  const tileSource = tileLayer.getRenderSource();
@@ -330,12 +332,23 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer {
330
332
  }
331
333
 
332
334
  const wantedTiles = frameState.wantedTiles[tileSourceKey];
333
-
334
335
  const tileTextureCache = this.tileTextureCache_;
336
+
337
+ const map = tileLayer.getMapInternal();
335
338
  const minZ = Math.max(
336
- initialZ - tileLayer.getPreload(),
339
+ initialZ - preload,
337
340
  tileGrid.getMinZoom(),
338
- tileLayer.getMinZoom()
341
+ tileGrid.getZForResolution(
342
+ Math.min(
343
+ tileLayer.getMaxResolution(),
344
+ map
345
+ ? map
346
+ .getView()
347
+ .getResolutionForZoom(Math.max(tileLayer.getMinZoom(), 0))
348
+ : tileGrid.getResolution(0)
349
+ ),
350
+ tileSource.zDirection
351
+ )
339
352
  );
340
353
  for (let z = initialZ; z >= minZ; --z) {
341
354
  const tileRange = tileGrid.getTileRangeForExtentAndZ(
@@ -437,16 +450,34 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer {
437
450
  */
438
451
  const tileTexturesByZ = {};
439
452
 
453
+ const preload = tileLayer.getPreload();
440
454
  if (frameState.nextExtent) {
441
455
  const targetZ = tileGrid.getZForResolution(
442
456
  viewState.nextResolution,
443
457
  tileSource.zDirection
444
458
  );
445
459
  const nextExtent = getRenderExtent(frameState, frameState.nextExtent);
446
- this.enqueueTiles(frameState, nextExtent, targetZ, tileTexturesByZ);
460
+ this.enqueueTiles(
461
+ frameState,
462
+ nextExtent,
463
+ targetZ,
464
+ tileTexturesByZ,
465
+ preload
466
+ );
447
467
  }
448
468
 
449
- this.enqueueTiles(frameState, extent, z, tileTexturesByZ);
469
+ this.enqueueTiles(frameState, extent, z, tileTexturesByZ, 0);
470
+ if (preload > 0) {
471
+ setTimeout(() => {
472
+ this.enqueueTiles(
473
+ frameState,
474
+ extent,
475
+ z - 1,
476
+ tileTexturesByZ,
477
+ preload - 1
478
+ );
479
+ }, 0);
480
+ }
450
481
 
451
482
  /**
452
483
  * A lookup of alpha values for tiles at the target rendering resolution
@@ -465,6 +496,9 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer {
465
496
  for (let i = 0, ii = tileTextures.length; i < ii; ++i) {
466
497
  const tileTexture = tileTextures[i];
467
498
  const tile = tileTexture.tile;
499
+ if (tile instanceof ReprojTile && tile.getState() === TileState.EMPTY) {
500
+ continue;
501
+ }
468
502
  const tileCoord = tile.tileCoord;
469
503
 
470
504
  if (tileTexture.loaded) {
@@ -753,6 +787,10 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer {
753
787
  continue;
754
788
  }
755
789
  const tileTexture = tileTextureCache.get(cacheKey);
790
+ const tile = tileTexture.tile;
791
+ if (tile instanceof ReprojTile && tile.getState() === TileState.EMPTY) {
792
+ return null;
793
+ }
756
794
  if (!tileTexture.loaded) {
757
795
  continue;
758
796
  }
package/util.js CHANGED
@@ -33,4 +33,4 @@ export function getUid(obj) {
33
33
  * OpenLayers version.
34
34
  * @type {string}
35
35
  */
36
- export const VERSION = '7.0.1-dev.1661279677876';
36
+ export const VERSION = '7.0.1-dev.1661441168710';