@deck.gl/carto 9.0.16 → 9.0.18
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.
- package/dist/api/carto-api-error.d.ts +3 -1
- package/dist/api/carto-api-error.d.ts.map +1 -1
- package/dist/api/carto-api-error.js +2 -1
- package/dist/api/common.d.ts +0 -8
- package/dist/api/common.d.ts.map +1 -1
- package/dist/api/common.js +0 -9
- package/dist/api/request-with-parameters.d.ts +1 -1
- package/dist/api/request-with-parameters.d.ts.map +1 -1
- package/dist/api/request-with-parameters.js +48 -15
- package/dist/api/types.d.ts +5 -5
- package/dist/api/types.d.ts.map +1 -1
- package/dist/cartoRasterTile-worker.js +1 -1
- package/dist/cartoSpatialTile-worker.js +1 -1
- package/dist/cartoVectorTile-worker.js +1 -1
- package/dist/dist.dev.js +494 -560
- package/dist/index.cjs +445 -358
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/layers/heatmap-tile-layer.d.ts +36 -0
- package/dist/layers/heatmap-tile-layer.d.ts.map +1 -0
- package/dist/layers/heatmap-tile-layer.js +165 -0
- package/dist/layers/heatmap.d.ts +5 -0
- package/dist/layers/heatmap.d.ts.map +1 -1
- package/dist/layers/heatmap.js +17 -15
- package/dist/layers/schema/carto-raster-tile-loader.js +1 -1
- package/dist/layers/schema/carto-spatial-tile-loader.js +1 -1
- package/dist/layers/schema/carto-vector-tile-loader.js +1 -1
- package/dist/layers/vector-tile-layer.d.ts +1 -1
- package/dist/layers/vector-tile-layer.d.ts.map +1 -1
- package/dist/layers/vector-tile-layer.js +5 -10
- package/dist/sources/raster-source.d.ts +2 -2
- package/dist/sources/raster-source.d.ts.map +1 -1
- package/dist/sources/raster-source.js +4 -1
- package/dist.min.js +37 -31
- package/package.json +2 -2
- package/src/api/carto-api-error.ts +10 -1
- package/src/api/common.ts +0 -12
- package/src/api/request-with-parameters.ts +55 -19
- package/src/api/types.ts +5 -5
- package/src/index.ts +3 -3
- package/src/layers/heatmap-tile-layer.ts +236 -0
- package/src/layers/heatmap.ts +31 -18
- package/src/layers/vector-tile-layer.ts +4 -14
- package/src/sources/raster-source.ts +10 -5
- package/dist/layers/quadbin-heatmap-tile-layer.d.ts +0 -24
- package/dist/layers/quadbin-heatmap-tile-layer.d.ts.map +0 -1
- package/dist/layers/quadbin-heatmap-tile-layer.js +0 -84
- package/src/layers/quadbin-heatmap-tile-layer.ts +0 -125
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quadbin-heatmap-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/quadbin-heatmap-tile-layer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AAGjG,OAAO,EAAC,YAAY,EAAU,qBAAkB;AAEhD,OAAyB,EAAC,qBAAqB,EAAC,gCAA6B;AAE7E,OAAO,EAAC,cAAc,EAAC,sBAAmB;AAiD1C,2DAA2D;AAC3D,MAAM,MAAM,4BAA4B,CAAC,KAAK,GAAG,OAAO,IAAI,6BAA6B,CAAC,KAAK,CAAC,GAC9F,mBAAmB,GAAG;IACpB,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACvD,CAAC;AAEJ,mDAAmD;AACnD,KAAK,6BAA6B,CAAC,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,GACtE,YAAY,GAAG;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAEJ,cAAM,uBAAuB,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,cAAc,CAC3F,UAAU,GAAG,QAAQ,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAC5D;IACC,MAAM,CAAC,SAAS,SAA6B;IAC7C,MAAM,CAAC,YAAY,sDAAgB;IAEnC,YAAY,IAAI,KAAK;CAyCtB;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { getResolution } from 'quadbin';
|
|
2
|
-
import { CompositeLayer } from '@deck.gl/core';
|
|
3
|
-
import { SolidPolygonLayer } from '@deck.gl/layers';
|
|
4
|
-
import { heatmap } from "./heatmap.js";
|
|
5
|
-
import { RTTModifier, PostProcessModifier } from "./post-process-utils.js";
|
|
6
|
-
import QuadbinTileLayer from "./quadbin-tile-layer.js";
|
|
7
|
-
import { TilejsonPropType } from "./utils.js";
|
|
8
|
-
// Modified polygon layer to draw offscreen and output value expected by heatmap
|
|
9
|
-
class RTTSolidPolygonLayer extends RTTModifier(SolidPolygonLayer) {
|
|
10
|
-
static { this.layerName = 'RTTSolidPolygonLayer'; }
|
|
11
|
-
getShaders(type) {
|
|
12
|
-
const shaders = super.getShaders(type);
|
|
13
|
-
shaders.inject = {
|
|
14
|
-
'vs:#decl': 'uniform float cellResolution;',
|
|
15
|
-
'vs:DECKGL_FILTER_COLOR': `
|
|
16
|
-
const vec3 SHIFT = vec3(1.0, 256.0, 256.0 * 256.0);
|
|
17
|
-
float value = 255.0 * dot(SHIFT, color.rgb);
|
|
18
|
-
|
|
19
|
-
// Keep "power" delivered to screen constant when tiles update
|
|
20
|
-
float relativeZoom = log2(project_uScale) - cellResolution + 3.5; // range 0-1
|
|
21
|
-
float relativeArea = pow(2.0, -2.0 * relativeZoom); // range 0.25-1
|
|
22
|
-
value *= relativeArea;
|
|
23
|
-
|
|
24
|
-
// Pack float into 3 channels to pass to heatmap shader
|
|
25
|
-
color = vec4(mod(vec3(value, floor(value / SHIFT.yz)), 256.0), 255.0) / 255.0;
|
|
26
|
-
`
|
|
27
|
-
};
|
|
28
|
-
return shaders;
|
|
29
|
-
}
|
|
30
|
-
draw(opts) {
|
|
31
|
-
const cell0 = this.props.data[0];
|
|
32
|
-
const cellResolution = Number(getResolution(cell0.id));
|
|
33
|
-
for (const model of this.state.models) {
|
|
34
|
-
model.setUniforms({ cellResolution });
|
|
35
|
-
}
|
|
36
|
-
super.draw(opts);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// Modify QuadbinTileLayer to apply heatmap post process effect
|
|
40
|
-
const PostProcessQuadbinTileLayer = PostProcessModifier(QuadbinTileLayer, heatmap);
|
|
41
|
-
function encodeWeight(w) {
|
|
42
|
-
return [w % 256, Math.floor(w / 256), Math.floor(w / (256 * 256))];
|
|
43
|
-
}
|
|
44
|
-
const defaultProps = {
|
|
45
|
-
data: TilejsonPropType,
|
|
46
|
-
getWeight: { type: 'accessor', value: 1 }
|
|
47
|
-
};
|
|
48
|
-
class QuadbinHeatmapTileLayer extends CompositeLayer {
|
|
49
|
-
static { this.layerName = 'QuadbinHeatmapTileLayer'; }
|
|
50
|
-
static { this.defaultProps = defaultProps; }
|
|
51
|
-
renderLayers() {
|
|
52
|
-
const { getWeight, colorDomain, colorRange, radiusPixels, _subLayerProps } = this.props;
|
|
53
|
-
// Inject modified polygon layer as sublayer into TileLayer
|
|
54
|
-
const subLayerProps = {
|
|
55
|
-
..._subLayerProps,
|
|
56
|
-
cell: {
|
|
57
|
-
..._subLayerProps?.cell,
|
|
58
|
-
_subLayerProps: {
|
|
59
|
-
..._subLayerProps?.cell?._subLayerProps,
|
|
60
|
-
fill: {
|
|
61
|
-
..._subLayerProps?.cell?._subLayerProps?.fill,
|
|
62
|
-
type: RTTSolidPolygonLayer
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
const getFillColor = typeof getWeight === 'function'
|
|
68
|
-
? (d, info) => encodeWeight(getWeight(d, info))
|
|
69
|
-
: encodeWeight(getWeight);
|
|
70
|
-
return new PostProcessQuadbinTileLayer(this.getSubLayerProps({
|
|
71
|
-
id: 'heatmap',
|
|
72
|
-
data: this.props.data,
|
|
73
|
-
getFillColor,
|
|
74
|
-
colorDomain,
|
|
75
|
-
colorRange,
|
|
76
|
-
radiusPixels,
|
|
77
|
-
_subLayerProps: subLayerProps,
|
|
78
|
-
updateTriggers: {
|
|
79
|
-
getPosition: this.props.updateTriggers.getWeight
|
|
80
|
-
}
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
export default QuadbinHeatmapTileLayer;
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import {getResolution} from 'quadbin';
|
|
2
|
-
|
|
3
|
-
import {Accessor, CompositeLayer, CompositeLayerProps, DefaultProps, Layer} from '@deck.gl/core';
|
|
4
|
-
import {SolidPolygonLayer} from '@deck.gl/layers';
|
|
5
|
-
|
|
6
|
-
import {HeatmapProps, heatmap} from './heatmap';
|
|
7
|
-
import {RTTModifier, PostProcessModifier} from './post-process-utils';
|
|
8
|
-
import QuadbinTileLayer, {QuadbinTileLayerProps} from './quadbin-tile-layer';
|
|
9
|
-
import {TilejsonPropType} from './utils';
|
|
10
|
-
import {TilejsonResult} from '../sources';
|
|
11
|
-
|
|
12
|
-
// Modified polygon layer to draw offscreen and output value expected by heatmap
|
|
13
|
-
class RTTSolidPolygonLayer extends RTTModifier(SolidPolygonLayer) {
|
|
14
|
-
static layerName = 'RTTSolidPolygonLayer';
|
|
15
|
-
|
|
16
|
-
getShaders(type) {
|
|
17
|
-
const shaders = super.getShaders(type);
|
|
18
|
-
shaders.inject = {
|
|
19
|
-
'vs:#decl': 'uniform float cellResolution;',
|
|
20
|
-
'vs:DECKGL_FILTER_COLOR': `
|
|
21
|
-
const vec3 SHIFT = vec3(1.0, 256.0, 256.0 * 256.0);
|
|
22
|
-
float value = 255.0 * dot(SHIFT, color.rgb);
|
|
23
|
-
|
|
24
|
-
// Keep "power" delivered to screen constant when tiles update
|
|
25
|
-
float relativeZoom = log2(project_uScale) - cellResolution + 3.5; // range 0-1
|
|
26
|
-
float relativeArea = pow(2.0, -2.0 * relativeZoom); // range 0.25-1
|
|
27
|
-
value *= relativeArea;
|
|
28
|
-
|
|
29
|
-
// Pack float into 3 channels to pass to heatmap shader
|
|
30
|
-
color = vec4(mod(vec3(value, floor(value / SHIFT.yz)), 256.0), 255.0) / 255.0;
|
|
31
|
-
`
|
|
32
|
-
};
|
|
33
|
-
return shaders;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
draw(this, opts: any) {
|
|
37
|
-
const cell0 = this.props!.data[0];
|
|
38
|
-
const cellResolution = Number(getResolution(cell0.id));
|
|
39
|
-
for (const model of this.state.models) {
|
|
40
|
-
model.setUniforms({cellResolution});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
super.draw(opts);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Modify QuadbinTileLayer to apply heatmap post process effect
|
|
48
|
-
const PostProcessQuadbinTileLayer = PostProcessModifier(QuadbinTileLayer, heatmap);
|
|
49
|
-
|
|
50
|
-
function encodeWeight(w: number) {
|
|
51
|
-
return [w % 256, Math.floor(w / 256), Math.floor(w / (256 * 256))];
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const defaultProps: DefaultProps<QuadbinHeatmapTileLayerProps> = {
|
|
55
|
-
data: TilejsonPropType,
|
|
56
|
-
getWeight: {type: 'accessor', value: 1}
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
/** All properties supported by QuadbinHeatmapTileLayer. */
|
|
60
|
-
export type QuadbinHeatmapTileLayerProps<DataT = unknown> = _QuadbinHeatmapTileLayerProps<DataT> &
|
|
61
|
-
CompositeLayerProps & {
|
|
62
|
-
data: null | TilejsonResult | Promise<TilejsonResult>;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
/** Properties added by QuadbinHeatmapTileLayer. */
|
|
66
|
-
type _QuadbinHeatmapTileLayerProps<DataT> = QuadbinTileLayerProps<DataT> &
|
|
67
|
-
HeatmapProps & {
|
|
68
|
-
/**
|
|
69
|
-
* The weight of each object.
|
|
70
|
-
*
|
|
71
|
-
* @default 1
|
|
72
|
-
*/
|
|
73
|
-
getWeight?: Accessor<DataT, number>;
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
class QuadbinHeatmapTileLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<
|
|
77
|
-
ExtraProps & Required<_QuadbinHeatmapTileLayerProps<DataT>>
|
|
78
|
-
> {
|
|
79
|
-
static layerName = 'QuadbinHeatmapTileLayer';
|
|
80
|
-
static defaultProps = defaultProps;
|
|
81
|
-
|
|
82
|
-
renderLayers(): Layer {
|
|
83
|
-
const {getWeight, colorDomain, colorRange, radiusPixels, _subLayerProps} = this.props;
|
|
84
|
-
|
|
85
|
-
// Inject modified polygon layer as sublayer into TileLayer
|
|
86
|
-
const subLayerProps = {
|
|
87
|
-
..._subLayerProps,
|
|
88
|
-
cell: {
|
|
89
|
-
..._subLayerProps?.cell,
|
|
90
|
-
_subLayerProps: {
|
|
91
|
-
..._subLayerProps?.cell?._subLayerProps,
|
|
92
|
-
fill: {
|
|
93
|
-
..._subLayerProps?.cell?._subLayerProps?.fill,
|
|
94
|
-
type: RTTSolidPolygonLayer
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
const getFillColor =
|
|
101
|
-
typeof getWeight === 'function'
|
|
102
|
-
? (d, info) => encodeWeight(getWeight(d, info))
|
|
103
|
-
: encodeWeight(getWeight);
|
|
104
|
-
|
|
105
|
-
return new PostProcessQuadbinTileLayer(
|
|
106
|
-
this.getSubLayerProps({
|
|
107
|
-
id: 'heatmap',
|
|
108
|
-
data: this.props.data,
|
|
109
|
-
|
|
110
|
-
getFillColor,
|
|
111
|
-
|
|
112
|
-
colorDomain,
|
|
113
|
-
colorRange,
|
|
114
|
-
radiusPixels,
|
|
115
|
-
_subLayerProps: subLayerProps,
|
|
116
|
-
|
|
117
|
-
updateTriggers: {
|
|
118
|
-
getPosition: this.props.updateTriggers.getWeight
|
|
119
|
-
}
|
|
120
|
-
})
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
export default QuadbinHeatmapTileLayer;
|