@deck.gl/carto 9.0.36 → 9.0.38

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.
@@ -1,4 +1,4 @@
1
- import { CompositeLayer, Layer, LayersList } from '@deck.gl/core';
1
+ import { _ConstructorOf, CompositeLayer, Layer, LayersList } from '@deck.gl/core';
2
2
  type Constructor<T> = (new (...args: any[]) => T) & {
3
3
  layerName: string;
4
4
  };
@@ -10,18 +10,23 @@ type DrawableCompositeLayer = CompositeLayer & {
10
10
  * Resulting layer must be used as a sublayer of a layer created
11
11
  * with `PostProcessModifier`
12
12
  */
13
- export declare function RTTModifier(BaseLayer: any): {
14
- new (): {
15
- [x: string]: any;
16
- draw(this: any, opts: any): void;
17
- };
18
- [x: string]: any;
19
- layerName: string;
20
- };
13
+ export declare function RTTModifier<T extends _ConstructorOf<Layer>>(BaseLayer: T): T;
21
14
  /**
22
15
  * Modifier that returns the a modified Layer, which applies a
23
16
  * postprocess effect to all subLayers created using `RTTModifier`
24
17
  */
25
18
  export declare function PostProcessModifier<T extends Constructor<DrawableCompositeLayer>>(BaseLayer: T, effect: any): T;
19
+ /**
20
+ * Copy
21
+ * Simple module that just copies input color to output
22
+ */
23
+ export declare const copy: {
24
+ readonly name: "copy";
25
+ readonly fs: "vec4 copy_filterColor(vec4 color, vec2 texSize, vec2 texCoord) {\n return color;\n}\n";
26
+ readonly getUniforms: () => {};
27
+ readonly passes: [{
28
+ readonly filter: true;
29
+ }];
30
+ };
26
31
  export {};
27
32
  //# sourceMappingURL=post-process-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-process-utils.d.ts","sourceRoot":"","sources":["../../src/layers/post-process-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,KAAK,EAGL,UAAU,EAGX,MAAM,eAAe,CAAC;AAoBvB,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC;AACxE,KAAK,sBAAsB,GAAG,cAAc,GAAG;IAC7C,YAAY,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC;CAC/C,CAAC;AAwBF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,KAAA;;;8BAIN,GAAG;;;;EAiBjC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,WAAW,CAAC,sBAAsB,CAAC,EAC/E,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,GAAG,GACV,CAAC,CAwFH"}
1
+ {"version":3,"file":"post-process-utils.d.ts","sourceRoot":"","sources":["../../src/layers/post-process-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,EAGL,UAAU,EAGX,MAAM,eAAe,CAAC;AAoBvB,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC;AACxE,KAAK,sBAAsB,GAAG,cAAc,GAAG;IAC7C,YAAY,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC;CAC/C,CAAC;AAwBF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAuB5E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,WAAW,CAAC,sBAAsB,CAAC,EAC/E,SAAS,EAAE,CAAC,EACZ,MAAM,EAAE,GAAG,GACV,CAAC,CAgGH;AAQD;;;GAGG;AACH,eAAO,MAAM,IAAI;;;;;;;CAKkB,CAAC"}
@@ -34,6 +34,7 @@ DrawCallbackLayer.layerName = 'DrawCallbackLayer';
34
34
  */
35
35
  export function RTTModifier(BaseLayer) {
36
36
  var _a;
37
+ // @ts-expect-error initializeState is abstract
37
38
  return _a = class RTTLayer extends BaseLayer {
38
39
  draw(opts) {
39
40
  const { moduleParameters } = opts;
@@ -49,6 +50,7 @@ export function RTTModifier(BaseLayer) {
49
50
  }
50
51
  }
51
52
  },
53
+ // @ts-expect-error typescript doesn't see static property
52
54
  _a.layerName = `RTT-${BaseLayer.layerName}`,
53
55
  _a;
54
56
  }
@@ -128,7 +130,29 @@ export function PostProcessModifier(BaseLayer, effect) {
128
130
  });
129
131
  this.internalState.renderInProgress = false;
130
132
  }
133
+ _finalize() {
134
+ this.internalState.renderBuffers.forEach((fbo) => {
135
+ fbo.destroy();
136
+ });
137
+ this.internalState.renderBuffers = null;
138
+ this.internalState.postProcess.cleanup();
139
+ }
131
140
  },
132
141
  _a.layerName = `PostProcess${BaseLayer.layerName}`,
133
142
  _a;
134
143
  }
144
+ const fs = /* glsl */ `\
145
+ vec4 copy_filterColor(vec4 color, vec2 texSize, vec2 texCoord) {
146
+ return color;
147
+ }
148
+ `;
149
+ /**
150
+ * Copy
151
+ * Simple module that just copies input color to output
152
+ */
153
+ export const copy = {
154
+ name: 'copy',
155
+ fs,
156
+ getUniforms: () => ({}),
157
+ passes: [{ filter: true }]
158
+ };
@@ -1,3 +1,3 @@
1
- declare const _default: "#version 300 es\n#define SHADER_NAME raster-layer-vertex-shader\n\nin vec3 positions;\nin vec3 normals;\n\nin float instanceElevations;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\n\nin vec3 instancePickingColors;\n\n// Custom uniforms\nuniform float opacity;\nuniform bool extruded;\nuniform bool stroked;\nuniform bool isStroke;\nuniform float coverage;\nuniform float elevationScale;\nuniform float widthScale;\nuniform vec3 offset;\n\n// Result\nout vec4 vColor;\n#ifdef FLAT_SHADING\nout vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n // Rather than positioning using attribute, layout pixel grid using gl_InstanceID\n vec2 common_position = offset.xy;\n float scale = offset.z;\n\n int yIndex = - (gl_InstanceID / BLOCK_WIDTH);\n int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);\n common_position += scale * vec2(float(xIndex), float(yIndex - 1));\n\n vec4 color = isStroke ? instanceLineColors : instanceFillColors;\n\n // if alpha == 0.0 or z < 0.0, do not render element\n float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\n float cellWidth = coverage * scale;\n\n // Get position directly from quadbin, rather than projecting\n // Important to set geometry.position before using project_ methods below\n // as geometry.worldPosition is not set (we don't know our lat/long)\n geometry.position = vec4(common_position, 0.0, 1.0);\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n geometry.position.xyz -= project_uCommonOrigin;\n }\n\n // calculate elevation, if 3d not enabled set to 0\n // cylindar geometry height are between -1.0 to 1.0, transform it to between 0, 1\n float elevation = 0.0;\n // calculate stroke offset\n float strokeOffsetRatio = 1.0;\n\n if (extruded) {\n elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\n } else if (stroked) {\n float halfOffset = project_pixel_size(widthScale) / cellWidth;\n if (isStroke) {\n strokeOffsetRatio -= sign(positions.z) * halfOffset;\n } else {\n strokeOffsetRatio -= halfOffset;\n }\n }\n\n geometry.pickingColor = instancePickingColors;\n\n // project center of column\n vec2 offset = (vec2(0.5) + positions.xy * strokeOffsetRatio) * cellWidth * shouldRender;\n vec3 pos = vec3(offset, project_size(elevation));\n DECKGL_FILTER_SIZE(pos, geometry);\n\n geometry.position.xyz += pos;\n gl_Position = project_common_position_to_clipspace(geometry.position);\n\n geometry.normal = project_normal(normals);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n // Light calculations\n if (extruded && !isStroke) {\n#ifdef FLAT_SHADING\n position_commonspace = geometry.position;\n vColor = vec4(color.rgb, color.a * opacity);\n#else\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, color.a * opacity);\n#endif\n } else {\n vColor = vec4(color.rgb, color.a * opacity);\n }\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
1
+ declare const _default: "#version 300 es\n#define SHADER_NAME raster-layer-vertex-shader\n\nin vec3 positions;\nin vec3 normals;\n\nin float instanceElevations;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\n\nin vec3 instancePickingColors;\n\n// Custom uniforms\nuniform float opacity;\nuniform bool extruded;\nuniform bool stroked;\nuniform bool isStroke;\nuniform float coverage;\nuniform float elevationScale;\nuniform float widthScale;\nuniform vec3 offset;\n\n// Result\nout vec4 vColor;\n#ifdef FLAT_SHADING\nout vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n // Rather than positioning using attribute, layout pixel grid using gl_InstanceID\n vec2 tileOrigin = offset.xy;\n float scale = offset.z;\n\n int yIndex = - (gl_InstanceID / BLOCK_WIDTH);\n int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);\n\n // Avoid precision issues by applying 0.5 offset here, rather than when laying out vertices\n vec2 cellCenter = scale * vec2(float(xIndex) + 0.5, float(yIndex) - 0.5);\n\n vec4 color = isStroke ? instanceLineColors : instanceFillColors;\n\n // if alpha == 0.0 or z < 0.0, do not render element\n float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\n float cellWidth = coverage * scale;\n\n // Get position directly from quadbin, rather than projecting\n // Important to set geometry.position before using project_ methods below\n // as geometry.worldPosition is not set (we don't know our lat/long)\n geometry.position = vec4(tileOrigin + cellCenter, 0.0, 1.0);\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n geometry.position.xyz -= project_uCommonOrigin;\n }\n\n // calculate elevation, if 3d not enabled set to 0\n // cylindar geometry height are between -1.0 to 1.0, transform it to between 0, 1\n float elevation = 0.0;\n // calculate stroke offset\n float strokeOffsetRatio = 1.0;\n\n if (extruded) {\n elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\n } else if (stroked) {\n float halfOffset = project_pixel_size(widthScale) / cellWidth;\n if (isStroke) {\n strokeOffsetRatio -= sign(positions.z) * halfOffset;\n } else {\n strokeOffsetRatio -= halfOffset;\n }\n }\n\n geometry.pickingColor = instancePickingColors;\n\n // Cell coordinates centered on origin\n vec2 base = positions.xy * scale * strokeOffsetRatio * coverage * shouldRender;\n vec3 cell = vec3(base, project_size(elevation));\n DECKGL_FILTER_SIZE(cell, geometry);\n\n geometry.position.xyz += cell;\n gl_Position = project_common_position_to_clipspace(geometry.position);\n\n geometry.normal = project_normal(normals);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n // Light calculations\n if (extruded && !isStroke) {\n#ifdef FLAT_SHADING\n position_commonspace = geometry.position;\n vColor = vec4(color.rgb, color.a * opacity);\n#else\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, color.a * opacity);\n#endif\n } else {\n vColor = vec4(color.rgb, color.a * opacity);\n }\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
2
2
  export default _default;
3
3
  //# sourceMappingURL=raster-layer-vertex.glsl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"raster-layer-vertex.glsl.d.ts","sourceRoot":"","sources":["../../src/layers/raster-layer-vertex.glsl.ts"],"names":[],"mappings":";AAAA,wBAiGE"}
1
+ {"version":3,"file":"raster-layer-vertex.glsl.d.ts","sourceRoot":"","sources":["../../src/layers/raster-layer-vertex.glsl.ts"],"names":[],"mappings":";AAAA,wBAmGE"}
@@ -20,15 +20,15 @@ out vec4 vColor;
20
20
  out vec4 position_commonspace;
21
21
  #endif
22
22
  void main(void) {
23
- vec2 common_position = offset.xy;
23
+ vec2 tileOrigin = offset.xy;
24
24
  float scale = offset.z;
25
25
  int yIndex = - (gl_InstanceID / BLOCK_WIDTH);
26
26
  int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);
27
- common_position += scale * vec2(float(xIndex), float(yIndex - 1));
27
+ vec2 cellCenter = scale * vec2(float(xIndex) + 0.5, float(yIndex) - 0.5);
28
28
  vec4 color = isStroke ? instanceLineColors : instanceFillColors;
29
29
  float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);
30
30
  float cellWidth = coverage * scale;
31
- geometry.position = vec4(common_position, 0.0, 1.0);
31
+ geometry.position = vec4(tileOrigin + cellCenter, 0.0, 1.0);
32
32
  if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
33
33
  geometry.position.xyz -= project_uCommonOrigin;
34
34
  }
@@ -45,10 +45,10 @@ strokeOffsetRatio -= halfOffset;
45
45
  }
46
46
  }
47
47
  geometry.pickingColor = instancePickingColors;
48
- vec2 offset = (vec2(0.5) + positions.xy * strokeOffsetRatio) * cellWidth * shouldRender;
49
- vec3 pos = vec3(offset, project_size(elevation));
50
- DECKGL_FILTER_SIZE(pos, geometry);
51
- geometry.position.xyz += pos;
48
+ vec2 base = positions.xy * scale * strokeOffsetRatio * coverage * shouldRender;
49
+ vec3 cell = vec3(base, project_size(elevation));
50
+ DECKGL_FILTER_SIZE(cell, geometry);
51
+ geometry.position.xyz += cell;
52
52
  gl_Position = project_common_position_to_clipspace(geometry.position);
53
53
  geometry.normal = project_normal(normals);
54
54
  DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
@@ -1 +1 @@
1
- {"version":3,"file":"raster-layer.d.ts","sourceRoot":"","sources":["../../src/layers/raster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAc,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAyD9D,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IAAI,iBAAiB,GAC/D,gBAAgB,CAAC,KAAK,CAAC,GACvB,mBAAmB,CAAC;AAEtB,uCAAuC;AACvC,KAAK,iBAAiB,GAAG;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAYF,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,EAAE,CAAE,SAAQ,cAAc,CACnF,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAC/C;IACC,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,YAAY,0CAAgB;IAEnC,KAAK,EAAG;QACN,sBAAsB,EAAE,MAAM,CAAC;QAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IAEF,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;IA4CzC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;IAetF,cAAc,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;IAa1B,oBAAoB,CAAC,IAAI,EAAE,WAAW;CAoBvC"}
1
+ {"version":3,"file":"raster-layer.d.ts","sourceRoot":"","sources":["../../src/layers/raster-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAc,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AA2D9D,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IAAI,iBAAiB,GAC/D,gBAAgB,CAAC,KAAK,CAAC,GACvB,mBAAmB,CAAC;AAEtB,uCAAuC;AACvC,KAAK,iBAAiB,GAAG;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAYF,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,EAAE,CAAE,SAAQ,cAAc,CACnF,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAC/C;IACC,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,YAAY,0CAAgB;IAEnC,KAAK,EAAG;QACN,sBAAsB,EAAE,MAAM,CAAC;QAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IAEF,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;IAuDzC,SAAS,CAAC,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;IAetF,cAAc,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;IAa1B,oBAAoB,CAAC,IAAI,EAAE,WAAW;CAoBvC"}
@@ -3,6 +3,7 @@ import { ColumnLayer } from '@deck.gl/layers';
3
3
  import { quadbinToOffset } from "./quadbin-utils.js";
4
4
  import vs from "./raster-layer-vertex.glsl.js";
5
5
  import { createBinaryProxy } from "../utils.js";
6
+ import { RTTModifier } from "./post-process-utils.js";
6
7
  const defaultProps = {
7
8
  ...ColumnLayer.defaultProps,
8
9
  extruded: false,
@@ -15,7 +16,8 @@ const defaultProps = {
15
16
  ]
16
17
  };
17
18
  // Modified ColumnLayer with custom vertex shader
18
- class RasterColumnLayer extends ColumnLayer {
19
+ // Use RTT to avoid inter-tile seams
20
+ class RasterColumnLayer extends RTTModifier(ColumnLayer) {
19
21
  getShaders() {
20
22
  const shaders = super.getShaders();
21
23
  const data = this.props.data;
@@ -81,7 +83,17 @@ class RasterLayer extends CompositeLayer {
81
83
  dataComparator: wrappedDataComparator,
82
84
  offset,
83
85
  highlightedObjectIndex,
84
- highlightColor
86
+ highlightColor,
87
+ // RTT requires blending otherwise opacity < 1 blends with black
88
+ // render target
89
+ parameters: {
90
+ blendColorSrcFactor: 'one',
91
+ blendAlphaSrcFactor: 'one',
92
+ blendColorDstFactor: 'zero',
93
+ blendAlphaDstFactor: 'zero',
94
+ blendColorOperation: 'add',
95
+ blendAlphaOperation: 'add'
96
+ }
85
97
  });
86
98
  }
87
99
  getSubLayerAccessor(accessor) {
@@ -1 +1 @@
1
- {"version":3,"file":"raster-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/raster-tile-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AACnG,OAAO,WAAW,EAAE,EAAC,gBAAgB,EAAC,0BAAuB;AAE7D,OAAO,KAAK,EAAC,cAAc,EAAC,4BAAyB;AAGrD,OAAO,EAAY,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAE9D,eAAO,MAAM,eAAe;;SAI3B,CAAC;AAOF,mDAAmD;AACnD,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,OAAO,IAAI,qBAAqB,CAAC,KAAK,CAAC,GAC9E,mBAAmB,CAAC;AAEtB,2CAA2C;AAC3C,KAAK,qBAAqB,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GACvE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG;IACpC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACvD,CAAC;AAEJ,MAAM,CAAC,OAAO,OAAO,eAAe,CAClC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,EAAE,GAAG,EAAE,CAC1B,SAAQ,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,SAAS,SAAqB;IACrC,MAAM,CAAC,YAAY,8CAAgB;IAEnC,cAAc,IAAI,GAAG;IAOrB,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;CAiB1C"}
1
+ {"version":3,"file":"raster-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/raster-tile-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,YAAY,EAEZ,KAAK,EACL,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,WAAW,EAAE,EAAC,gBAAgB,EAAC,0BAAuB;AAE7D,OAAO,KAAK,EAAC,cAAc,EAAC,4BAAyB;AAGrD,OAAO,EAAY,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAG9D,eAAO,MAAM,eAAe;;SAI3B,CAAC;AAQF,mDAAmD;AACnD,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,OAAO,IAAI,qBAAqB,CAAC,KAAK,CAAC,GAC9E,mBAAmB,CAAC;AAEtB,2CAA2C;AAC3C,KAAK,qBAAqB,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GACvE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG;IACpC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACvD,CAAC;AAYJ,MAAM,CAAC,OAAO,OAAO,eAAe,CAClC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,EAAE,GAAG,EAAE,CAC1B,SAAQ,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,SAAS,SAAqB;IACrC,MAAM,CAAC,YAAY,8CAAgB;IAEnC,cAAc,IAAI,GAAG;IAOrB,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;CAiB1C"}
@@ -4,6 +4,7 @@ import QuadbinTileset2D from "./quadbin-tileset-2d.js";
4
4
  import { injectAccessToken, TilejsonPropType } from "./utils.js";
5
5
  import { DEFAULT_TILE_SIZE } from "../constants.js";
6
6
  import { TileLayer } from '@deck.gl/geo-layers';
7
+ import { copy, PostProcessModifier } from "./post-process-utils.js";
7
8
  export const renderSubLayers = props => {
8
9
  const tileIndex = props.tile?.index?.q;
9
10
  if (!tileIndex)
@@ -12,8 +13,18 @@ export const renderSubLayers = props => {
12
13
  };
13
14
  const defaultProps = {
14
15
  data: TilejsonPropType,
16
+ refinementStrategy: 'no-overlap',
15
17
  tileSize: DEFAULT_TILE_SIZE
16
18
  };
19
+ class PostProcessTileLayer extends PostProcessModifier(TileLayer, copy) {
20
+ filterSubLayer(context) {
21
+ // Handle DrawCallbackLayer
22
+ const { tile } = context.layer.props;
23
+ if (!tile)
24
+ return true;
25
+ return super.filterSubLayer(context);
26
+ }
27
+ }
17
28
  class RasterTileLayer extends CompositeLayer {
18
29
  getLoadOptions() {
19
30
  const loadOptions = super.getLoadOptions() || {};
@@ -26,7 +37,7 @@ class RasterTileLayer extends CompositeLayer {
26
37
  if (!tileJSON)
27
38
  return null;
28
39
  const { tiles: data, minzoom: minZoom, maxzoom: maxZoom } = tileJSON;
29
- const SubLayerClass = this.getSubLayerClass('tile', TileLayer);
40
+ const SubLayerClass = this.getSubLayerClass('tile', PostProcessTileLayer);
30
41
  return new SubLayerClass(this.props, {
31
42
  id: `raster-tile-layer-${this.props.id}`,
32
43
  data,
@@ -1,7 +1,7 @@
1
1
  import { TileReader } from "./carto-raster-tile.js";
2
2
  import { parsePbf } from "./tile-loader-utils.js";
3
3
  import { getWorkerUrl } from "../../utils.js";
4
- const VERSION = typeof "9.0.36" !== 'undefined' ? "9.0.36" : 'latest';
4
+ const VERSION = typeof "9.0.38" !== 'undefined' ? "9.0.38" : 'latest';
5
5
  const id = 'cartoRasterTile';
6
6
  const DEFAULT_OPTIONS = {
7
7
  cartoRasterTile: {
@@ -2,7 +2,7 @@ import { TileReader } from "./carto-spatial-tile.js";
2
2
  import { parsePbf } from "./tile-loader-utils.js";
3
3
  import { getWorkerUrl } from "../../utils.js";
4
4
  import { binaryToSpatialjson } from "./spatialjson-utils.js";
5
- const VERSION = typeof "9.0.36" !== 'undefined' ? "9.0.36" : 'latest';
5
+ const VERSION = typeof "9.0.38" !== 'undefined' ? "9.0.38" : 'latest';
6
6
  const id = 'cartoSpatialTile';
7
7
  const DEFAULT_OPTIONS = {
8
8
  cartoSpatialTile: {
@@ -2,7 +2,7 @@ import earcut from 'earcut';
2
2
  import { TileReader } from "./carto-tile.js";
3
3
  import { parsePbf } from "./tile-loader-utils.js";
4
4
  import { getWorkerUrl } from "../../utils.js";
5
- const VERSION = typeof "9.0.36" !== 'undefined' ? "9.0.36" : 'latest';
5
+ const VERSION = typeof "9.0.38" !== 'undefined' ? "9.0.38" : 'latest';
6
6
  const id = 'cartoVectorTile';
7
7
  const DEFAULT_OPTIONS = {
8
8
  cartoVectorTile: {