@deck.gl/carto 9.0.14 → 9.0.16
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/basemap.d.ts +17 -0
- package/dist/api/basemap.d.ts.map +1 -0
- package/dist/api/basemap.js +76 -0
- package/dist/api/fetch-map.d.ts +10 -12
- package/dist/api/fetch-map.d.ts.map +1 -1
- package/dist/api/fetch-map.js +7 -3
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/parse-map.d.ts +21 -1
- package/dist/api/parse-map.d.ts.map +1 -1
- package/dist/api/parse-map.js +1 -0
- package/dist/api/query.d.ts.map +1 -1
- package/dist/api/query.js +4 -3
- package/dist/api/request-with-parameters.js +1 -1
- package/dist/api/types.d.ts +82 -1
- package/dist/api/types.d.ts.map +1 -1
- package/dist/basemap.d.ts +17 -0
- package/dist/basemap.d.ts.map +1 -1
- package/dist/basemap.js +97 -7
- 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 +1733 -2359
- package/dist/index.cjs +259 -81
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/layers/heatmap.d.ts +3 -2
- package/dist/layers/heatmap.d.ts.map +1 -1
- package/dist/layers/heatmap.js +18 -6
- package/dist/layers/quadbin-heatmap-tile-layer.d.ts +5 -2
- package/dist/layers/quadbin-heatmap-tile-layer.d.ts.map +1 -1
- package/dist/layers/quadbin-heatmap-tile-layer.js +2 -1
- 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/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -0
- package/dist.min.js +20 -14
- package/package.json +6 -6
- package/src/api/basemap.ts +100 -0
- package/src/api/fetch-map.ts +20 -6
- package/src/api/index.ts +11 -2
- package/src/api/parse-map.ts +24 -3
- package/src/api/query.ts +4 -2
- package/src/api/request-with-parameters.ts +1 -1
- package/src/api/types.ts +103 -1
- package/src/basemap.ts +134 -7
- package/src/index.ts +14 -2
- package/src/layers/heatmap.ts +23 -8
- package/src/layers/quadbin-heatmap-tile-layer.ts +7 -4
- package/src/utils.ts +5 -0
package/src/layers/heatmap.ts
CHANGED
|
@@ -12,6 +12,7 @@ const glsl = (s: TemplateStringsArray) => `${s}`;
|
|
|
12
12
|
|
|
13
13
|
const fs = glsl`\
|
|
14
14
|
uniform heatmapUniforms {
|
|
15
|
+
vec2 delta;
|
|
15
16
|
float radiusPixels;
|
|
16
17
|
vec2 colorDomain;
|
|
17
18
|
vec3 color1;
|
|
@@ -57,11 +58,15 @@ vec3 colorGradient(float value) {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
const vec3 SHIFT = vec3(1.0, 256.0, 256.0 * 256.0);
|
|
61
|
+
vec4 pack(float value) {
|
|
62
|
+
return vec4(mod(vec3(value, floor(value / SHIFT.yz)), 256.0), 255.0) / 255.0;
|
|
63
|
+
}
|
|
60
64
|
float unpack(vec3 color) {
|
|
61
65
|
return 255.0 * dot(color, SHIFT);
|
|
62
66
|
}
|
|
63
67
|
|
|
64
68
|
vec4 heatmap_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
|
|
69
|
+
bool firstPass = (heatmap.delta.y < 0.5);
|
|
65
70
|
float accumulator = 0.0;
|
|
66
71
|
|
|
67
72
|
// Randomize the lookup values to hide the fixed number of samples
|
|
@@ -70,11 +75,10 @@ vec4 heatmap_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
|
|
|
70
75
|
// Gaussian normalization parameters
|
|
71
76
|
const float sigma = SUPPORT / 3.0;
|
|
72
77
|
const float a = -0.5 / (sigma * sigma);
|
|
73
|
-
const float w0 =
|
|
78
|
+
const float w0 = 0.3989422804014327 / sigma; // 1D normalization
|
|
74
79
|
|
|
75
80
|
for (float t = -SUPPORT; t <= SUPPORT; t++) {
|
|
76
|
-
|
|
77
|
-
vec2 percent = (vec2(s, t) + offset - 0.5) / SUPPORT;
|
|
81
|
+
vec2 percent = (t * heatmap.delta + offset - 0.5) / SUPPORT;
|
|
78
82
|
vec2 delta = percent * heatmap.radiusPixels / texSize;
|
|
79
83
|
vec4 offsetColor = texture(source, texCoord + delta);
|
|
80
84
|
|
|
@@ -82,10 +86,13 @@ vec4 heatmap_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
|
|
|
82
86
|
float value = unpack(offsetColor.rgb);
|
|
83
87
|
|
|
84
88
|
// Gaussian
|
|
85
|
-
float weight = w0 * exp(a *
|
|
89
|
+
float weight = w0 * exp(a * t * t);
|
|
86
90
|
|
|
87
91
|
accumulator += value * weight;
|
|
88
92
|
}
|
|
93
|
+
|
|
94
|
+
if (firstPass) {
|
|
95
|
+
return pack(accumulator);
|
|
89
96
|
}
|
|
90
97
|
|
|
91
98
|
// Apply domain
|
|
@@ -114,9 +121,9 @@ const defaultColorRange: Color[] = [
|
|
|
114
121
|
|
|
115
122
|
export type HeatmapProps = {
|
|
116
123
|
/**
|
|
117
|
-
* Radius of the
|
|
124
|
+
* Radius of the heatmap blur in pixels, to which the weight of a cell is distributed.
|
|
118
125
|
*
|
|
119
|
-
* @default
|
|
126
|
+
* @default 20
|
|
120
127
|
*/
|
|
121
128
|
radiusPixels?: number;
|
|
122
129
|
/**
|
|
@@ -135,6 +142,7 @@ export type HeatmapProps = {
|
|
|
135
142
|
};
|
|
136
143
|
|
|
137
144
|
export type HeatmapUniforms = {
|
|
145
|
+
delta?: [number, number];
|
|
138
146
|
radiusPixels?: number;
|
|
139
147
|
colorDomain?: [number, number];
|
|
140
148
|
color1?: [number, number, number];
|
|
@@ -149,6 +157,7 @@ export type HeatmapUniforms = {
|
|
|
149
157
|
export const heatmap: ShaderPass<HeatmapProps, HeatmapUniforms> = {
|
|
150
158
|
name: 'heatmap',
|
|
151
159
|
uniformPropTypes: {
|
|
160
|
+
delta: {value: [0, 1]},
|
|
152
161
|
radiusPixels: {value: 20, min: 0, softMax: 100},
|
|
153
162
|
colorDomain: {value: [0, 1]},
|
|
154
163
|
color1: {value: [0, 0, 0]},
|
|
@@ -160,6 +169,7 @@ export const heatmap: ShaderPass<HeatmapProps, HeatmapUniforms> = {
|
|
|
160
169
|
opacity: {value: 1, min: 0, max: 1}
|
|
161
170
|
},
|
|
162
171
|
uniformTypes: {
|
|
172
|
+
delta: 'vec2<f32>',
|
|
163
173
|
radiusPixels: 'f32',
|
|
164
174
|
colorDomain: 'vec2<f32>',
|
|
165
175
|
color1: 'vec3<f32>',
|
|
@@ -172,13 +182,15 @@ export const heatmap: ShaderPass<HeatmapProps, HeatmapUniforms> = {
|
|
|
172
182
|
},
|
|
173
183
|
getUniforms: opts => {
|
|
174
184
|
const {
|
|
185
|
+
delta = [1, 0],
|
|
175
186
|
colorRange = defaultColorRange,
|
|
176
187
|
radiusPixels = 20,
|
|
177
188
|
colorDomain = [0, 1],
|
|
178
189
|
opacity = 1
|
|
179
|
-
} = opts as HeatmapProps;
|
|
190
|
+
} = opts as HeatmapProps & {delta: [number, number]};
|
|
180
191
|
const [color1, color2, color3, color4, color5, color6] = colorRange;
|
|
181
192
|
return {
|
|
193
|
+
delta,
|
|
182
194
|
color1,
|
|
183
195
|
color2,
|
|
184
196
|
color3,
|
|
@@ -192,5 +204,8 @@ export const heatmap: ShaderPass<HeatmapProps, HeatmapUniforms> = {
|
|
|
192
204
|
},
|
|
193
205
|
dependencies: [random],
|
|
194
206
|
fs,
|
|
195
|
-
passes: [
|
|
207
|
+
passes: [
|
|
208
|
+
{sampler: true, uniforms: {delta: [1, 0]}},
|
|
209
|
+
{sampler: true, uniforms: {delta: [0, 1]}}
|
|
210
|
+
]
|
|
196
211
|
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import {getResolution} from 'quadbin';
|
|
2
2
|
|
|
3
|
-
import {Accessor, CompositeLayer, DefaultProps, Layer} from '@deck.gl/core';
|
|
3
|
+
import {Accessor, CompositeLayer, CompositeLayerProps, DefaultProps, Layer} from '@deck.gl/core';
|
|
4
4
|
import {SolidPolygonLayer} from '@deck.gl/layers';
|
|
5
5
|
|
|
6
6
|
import {HeatmapProps, heatmap} from './heatmap';
|
|
7
7
|
import {RTTModifier, PostProcessModifier} from './post-process-utils';
|
|
8
8
|
import QuadbinTileLayer, {QuadbinTileLayerProps} from './quadbin-tile-layer';
|
|
9
|
+
import {TilejsonPropType} from './utils';
|
|
10
|
+
import {TilejsonResult} from '../sources';
|
|
9
11
|
|
|
10
12
|
// Modified polygon layer to draw offscreen and output value expected by heatmap
|
|
11
13
|
class RTTSolidPolygonLayer extends RTTModifier(SolidPolygonLayer) {
|
|
@@ -50,14 +52,15 @@ function encodeWeight(w: number) {
|
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
const defaultProps: DefaultProps<QuadbinHeatmapTileLayerProps> = {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
data: TilejsonPropType,
|
|
55
56
|
getWeight: {type: 'accessor', value: 1}
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
/** All properties supported by QuadbinHeatmapTileLayer. */
|
|
59
60
|
export type QuadbinHeatmapTileLayerProps<DataT = unknown> = _QuadbinHeatmapTileLayerProps<DataT> &
|
|
60
|
-
|
|
61
|
+
CompositeLayerProps & {
|
|
62
|
+
data: null | TilejsonResult | Promise<TilejsonResult>;
|
|
63
|
+
};
|
|
61
64
|
|
|
62
65
|
/** Properties added by QuadbinHeatmapTileLayer. */
|
|
63
66
|
type _QuadbinHeatmapTileLayerProps<DataT> = QuadbinTileLayerProps<DataT> &
|
package/src/utils.ts
CHANGED
|
@@ -59,3 +59,8 @@ export function scaleIdentity() {
|
|
|
59
59
|
|
|
60
60
|
return scale;
|
|
61
61
|
}
|
|
62
|
+
|
|
63
|
+
export const isObject: (x: unknown) => boolean = x => x !== null && typeof x === 'object';
|
|
64
|
+
|
|
65
|
+
export const isPureObject: (x: any) => boolean = x =>
|
|
66
|
+
isObject(x) && x.constructor === {}.constructor;
|