@deck.gl/carto 8.10.0-alpha.1 → 8.10.0-alpha.4
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/LICENSE +1 -1
- package/dist/cartoRasterTile-worker.js +1084 -0
- package/dist/cartoSpatialTile-worker.js +1469 -0
- package/dist/cartoVectorTile-worker.js +1727 -0
- package/dist/dist.dev.js +1740 -883
- package/dist/es5/api/layer-map.js +3 -7
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-api-common.js +0 -1
- package/dist/es5/api/maps-api-common.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +5 -20
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/index.js +74 -6
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/carto-layer.js +7 -5
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/es5/layers/h3-tile-layer.js +23 -41
- package/dist/es5/layers/h3-tile-layer.js.map +1 -1
- package/dist/es5/layers/quadbin-layer.js +3 -0
- package/dist/es5/layers/quadbin-layer.js.map +1 -1
- package/dist/es5/layers/quadbin-tile-layer.js +21 -42
- package/dist/es5/layers/quadbin-tile-layer.js.map +1 -1
- package/dist/es5/layers/raster-tile-layer.js +23 -39
- package/dist/es5/layers/raster-tile-layer.js.map +1 -1
- package/dist/es5/layers/schema/carto-raster-tile-loader.js +13 -4
- package/dist/es5/layers/schema/carto-raster-tile-loader.js.map +1 -1
- package/dist/es5/layers/schema/carto-spatial-tile-loader.js +14 -8
- package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
- package/dist/es5/layers/schema/carto-tile.js +1 -1
- package/dist/es5/layers/schema/carto-tile.js.map +1 -1
- package/dist/es5/layers/schema/carto-vector-tile-loader.js +64 -4
- package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +1 -1
- package/dist/es5/layers/utils.js +29 -0
- package/dist/es5/layers/utils.js.map +1 -0
- package/dist/es5/layers/{carto-tile-layer.js → vector-tile-layer.js} +49 -24
- package/dist/es5/layers/vector-tile-layer.js.map +1 -0
- package/dist/es5/sources/base-source.js +100 -0
- package/dist/es5/sources/base-source.js.map +1 -0
- package/dist/es5/sources/common.js +48 -0
- package/dist/es5/sources/common.js.map +1 -0
- package/dist/es5/sources/h3-query-source.js +58 -0
- package/dist/es5/sources/h3-query-source.js.map +1 -0
- package/dist/es5/sources/h3-table-source.js +58 -0
- package/dist/es5/sources/h3-table-source.js.map +1 -0
- package/dist/es5/sources/h3-tileset-source.js +43 -0
- package/dist/es5/sources/h3-tileset-source.js.map +1 -0
- package/dist/es5/sources/index.js +94 -0
- package/dist/es5/sources/index.js.map +1 -0
- package/dist/es5/sources/quadbin-query-source.js +58 -0
- package/dist/es5/sources/quadbin-query-source.js.map +1 -0
- package/dist/es5/sources/quadbin-table-source.js +58 -0
- package/dist/es5/sources/quadbin-table-source.js.map +1 -0
- package/dist/es5/sources/quadbin-tileset-source.js +43 -0
- package/dist/es5/sources/quadbin-tileset-source.js.map +1 -0
- package/dist/es5/sources/raster-source.js +43 -0
- package/dist/es5/sources/raster-source.js.map +1 -0
- package/dist/es5/sources/utils.js +136 -0
- package/dist/es5/sources/utils.js.map +1 -0
- package/dist/es5/sources/vector-query-source.js +52 -0
- package/dist/es5/sources/vector-query-source.js.map +1 -0
- package/dist/es5/sources/vector-table-source.js +52 -0
- package/dist/es5/sources/vector-table-source.js.map +1 -0
- package/dist/es5/sources/vector-tileset-source.js +43 -0
- package/dist/es5/sources/vector-tileset-source.js.map +1 -0
- package/dist/es5/utils.js +5 -0
- package/dist/es5/utils.js.map +1 -1
- package/dist/es5/workers/cartoRasterTile.js +10 -0
- package/dist/es5/workers/cartoRasterTile.js.map +1 -0
- package/dist/es5/workers/cartoSpatialTile.js +10 -0
- package/dist/es5/workers/cartoSpatialTile.js.map +1 -0
- package/dist/es5/workers/cartoVectorTile.js +10 -0
- package/dist/es5/workers/cartoVectorTile.js.map +1 -0
- package/dist/esm/api/layer-map.js +3 -7
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-api-common.js +0 -1
- package/dist/esm/api/maps-api-common.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +2 -12
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/index.js +5 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/carto-layer.js +5 -3
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist/esm/layers/h3-tile-layer.js +21 -37
- package/dist/esm/layers/h3-tile-layer.js.map +1 -1
- package/dist/esm/layers/quadbin-layer.js +4 -1
- package/dist/esm/layers/quadbin-layer.js.map +1 -1
- package/dist/esm/layers/quadbin-tile-layer.js +18 -38
- package/dist/esm/layers/quadbin-tile-layer.js.map +1 -1
- package/dist/esm/layers/raster-tile-layer.js +19 -34
- package/dist/esm/layers/raster-tile-layer.js.map +1 -1
- package/dist/esm/layers/schema/carto-raster-tile-loader.js +12 -4
- package/dist/esm/layers/schema/carto-raster-tile-loader.js.map +1 -1
- package/dist/esm/layers/schema/carto-spatial-tile-loader.js +13 -8
- package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
- package/dist/esm/layers/schema/carto-tile.js +1 -1
- package/dist/esm/layers/schema/carto-tile.js.map +1 -1
- package/dist/esm/layers/schema/carto-vector-tile-loader.js +63 -4
- package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +1 -1
- package/dist/esm/layers/utils.js +14 -0
- package/dist/esm/layers/utils.js.map +1 -0
- package/dist/esm/layers/{carto-tile-layer.js → vector-tile-layer.js} +39 -15
- package/dist/esm/layers/vector-tile-layer.js.map +1 -0
- package/dist/esm/sources/base-source.js +49 -0
- package/dist/esm/sources/base-source.js.map +1 -0
- package/dist/esm/sources/common.js +26 -0
- package/dist/esm/sources/common.js.map +1 -0
- package/dist/esm/sources/h3-query-source.js +32 -0
- package/dist/esm/sources/h3-query-source.js.map +1 -0
- package/dist/esm/sources/h3-table-source.js +32 -0
- package/dist/esm/sources/h3-table-source.js.map +1 -0
- package/dist/esm/sources/h3-tileset-source.js +14 -0
- package/dist/esm/sources/h3-tileset-source.js.map +1 -0
- package/dist/esm/sources/index.js +12 -0
- package/dist/esm/sources/index.js.map +1 -0
- package/dist/esm/sources/quadbin-query-source.js +32 -0
- package/dist/esm/sources/quadbin-query-source.js.map +1 -0
- package/dist/esm/sources/quadbin-table-source.js +32 -0
- package/dist/esm/sources/quadbin-table-source.js.map +1 -0
- package/dist/esm/sources/quadbin-tileset-source.js +14 -0
- package/dist/esm/sources/quadbin-tileset-source.js.map +1 -0
- package/dist/esm/sources/raster-source.js +14 -0
- package/dist/esm/sources/raster-source.js.map +1 -0
- package/dist/esm/sources/utils.js +69 -0
- package/dist/esm/sources/utils.js.map +1 -0
- package/dist/esm/sources/vector-query-source.js +25 -0
- package/dist/esm/sources/vector-query-source.js.map +1 -0
- package/dist/esm/sources/vector-table-source.js +25 -0
- package/dist/esm/sources/vector-table-source.js.map +1 -0
- package/dist/esm/sources/vector-tileset-source.js +14 -0
- package/dist/esm/sources/vector-tileset-source.js.map +1 -0
- package/dist/esm/utils.js +3 -0
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/workers/cartoRasterTile.js +4 -0
- package/dist/esm/workers/cartoRasterTile.js.map +1 -0
- package/dist/esm/workers/cartoSpatialTile.js +4 -0
- package/dist/esm/workers/cartoSpatialTile.js.map +1 -0
- package/dist/esm/workers/cartoVectorTile.js +4 -0
- package/dist/esm/workers/cartoVectorTile.js.map +1 -0
- package/dist.min.js +25 -25
- package/package.json +12 -9
- package/src/api/layer-map.ts +4 -8
- package/src/api/maps-api-common.ts +0 -1
- package/src/api/maps-v3-client.ts +6 -5
- package/src/index.ts +34 -5
- package/src/layers/carto-layer.ts +8 -2
- package/src/layers/h3-tile-layer.ts +22 -35
- package/src/layers/quadbin-layer.ts +2 -1
- package/src/layers/quadbin-tile-layer.ts +19 -33
- package/src/layers/raster-tile-layer.ts +22 -26
- package/src/layers/schema/carto-raster-tile-loader.ts +26 -6
- package/src/layers/schema/carto-spatial-tile-loader.ts +25 -11
- package/src/layers/schema/carto-tile.ts +1 -1
- package/src/layers/schema/carto-vector-tile-loader.ts +79 -9
- package/src/layers/utils.ts +11 -0
- package/src/layers/{carto-tile-layer.ts → vector-tile-layer.ts} +40 -21
- package/src/sources/base-source.ts +55 -0
- package/src/sources/common.ts +132 -0
- package/src/sources/h3-query-source.ts +45 -0
- package/src/sources/h3-table-source.ts +46 -0
- package/src/sources/h3-tileset-source.ts +16 -0
- package/src/sources/index.ts +32 -0
- package/src/sources/quadbin-query-source.ts +46 -0
- package/src/sources/quadbin-table-source.ts +46 -0
- package/src/sources/quadbin-tileset-source.ts +16 -0
- package/src/sources/raster-source.ts +16 -0
- package/src/sources/utils.ts +63 -0
- package/src/sources/vector-query-source.ts +23 -0
- package/src/sources/vector-table-source.ts +23 -0
- package/src/sources/vector-tileset-source.ts +16 -0
- package/src/utils.ts +6 -0
- package/src/workers/cartoRasterTile.ts +4 -0
- package/src/workers/cartoSpatialTile.ts +4 -0
- package/src/workers/cartoVectorTile.ts +4 -0
- package/typed/api/layer-map.d.ts +2 -3
- package/typed/api/layer-map.d.ts.map +1 -1
- package/typed/api/maps-api-common.d.ts +0 -1
- package/typed/api/maps-api-common.d.ts.map +1 -1
- package/typed/api/maps-v3-client.d.ts +0 -3
- package/typed/api/maps-v3-client.d.ts.map +1 -1
- package/typed/index.d.ts +6 -4
- package/typed/index.d.ts.map +1 -1
- package/typed/layers/carto-layer.d.ts.map +1 -1
- package/typed/layers/h3-tile-layer.d.ts +5 -8
- package/typed/layers/h3-tile-layer.d.ts.map +1 -1
- package/typed/layers/quadbin-layer.d.ts.map +1 -1
- package/typed/layers/quadbin-tile-layer.d.ts +5 -9
- package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
- package/typed/layers/raster-tile-layer.d.ts +6 -10
- package/typed/layers/raster-tile-layer.d.ts.map +1 -1
- package/typed/layers/schema/carto-raster-tile-loader.d.ts.map +1 -1
- package/typed/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -1
- package/typed/layers/schema/carto-vector-tile-loader.d.ts.map +1 -1
- package/typed/layers/utils.d.ts +5 -0
- package/typed/layers/utils.d.ts.map +1 -0
- package/typed/layers/{carto-tile-layer.d.ts → vector-tile-layer.d.ts} +11 -7
- package/typed/layers/vector-tile-layer.d.ts.map +1 -0
- package/typed/sources/base-source.d.ts +4 -0
- package/typed/sources/base-source.d.ts.map +1 -0
- package/typed/sources/common.d.ts +116 -0
- package/typed/sources/common.d.ts.map +1 -0
- package/typed/sources/h3-query-source.d.ts +5 -0
- package/typed/sources/h3-query-source.d.ts.map +1 -0
- package/typed/sources/h3-table-source.d.ts +5 -0
- package/typed/sources/h3-table-source.d.ts.map +1 -0
- package/typed/sources/h3-tileset-source.d.ts +5 -0
- package/typed/sources/h3-tileset-source.d.ts.map +1 -0
- package/typed/sources/index.d.ts +23 -0
- package/typed/sources/index.d.ts.map +1 -0
- package/typed/sources/quadbin-query-source.d.ts +5 -0
- package/typed/sources/quadbin-query-source.d.ts.map +1 -0
- package/typed/sources/quadbin-table-source.d.ts +5 -0
- package/typed/sources/quadbin-table-source.d.ts.map +1 -0
- package/typed/sources/quadbin-tileset-source.d.ts +5 -0
- package/typed/sources/quadbin-tileset-source.d.ts.map +1 -0
- package/typed/sources/raster-source.d.ts +5 -0
- package/typed/sources/raster-source.d.ts.map +1 -0
- package/typed/sources/utils.d.ts +15 -0
- package/typed/sources/utils.d.ts.map +1 -0
- package/typed/sources/vector-query-source.d.ts +5 -0
- package/typed/sources/vector-query-source.d.ts.map +1 -0
- package/typed/sources/vector-table-source.d.ts +5 -0
- package/typed/sources/vector-table-source.d.ts.map +1 -0
- package/typed/sources/vector-tileset-source.d.ts +5 -0
- package/typed/sources/vector-tileset-source.d.ts.map +1 -0
- package/typed/utils.d.ts +1 -0
- package/typed/utils.d.ts.map +1 -1
- package/typed/workers/cartoRasterTile.d.ts +2 -0
- package/typed/workers/cartoRasterTile.d.ts.map +1 -0
- package/typed/workers/cartoSpatialTile.d.ts +2 -0
- package/typed/workers/cartoSpatialTile.d.ts.map +1 -0
- package/typed/workers/cartoVectorTile.d.ts +2 -0
- package/typed/workers/cartoVectorTile.d.ts.map +1 -0
- package/dist/es5/layers/carto-tile-layer.js.map +0 -1
- package/dist/esm/layers/carto-tile-layer.js.map +0 -1
- package/typed/api/index.js +0 -3
- package/typed/api/layer-map.js +0 -264
- package/typed/api/maps-api-common.js +0 -50
- package/typed/api/maps-client.js +0 -125
- package/typed/api/maps-v3-client.js +0 -304
- package/typed/api/parseMap.js +0 -178
- package/typed/basemap.js +0 -9
- package/typed/config.js +0 -35
- package/typed/index.js +0 -10
- package/typed/layers/carto-layer.js +0 -173
- package/typed/layers/carto-tile-layer.d.ts.map +0 -1
- package/typed/layers/carto-tile-layer.js +0 -105
- package/typed/layers/h3-tile-layer.js +0 -47
- package/typed/layers/h3-tileset-2d.js +0 -85
- package/typed/layers/quadkey-tile-layer.d.ts +0 -21
- package/typed/layers/quadkey-tile-layer.d.ts.map +0 -1
- package/typed/layers/quadkey-tile-layer.js +0 -42
- package/typed/layers/quadkey-tileset-2d.d.ts +0 -15
- package/typed/layers/quadkey-tileset-2d.d.ts.map +0 -1
- package/typed/layers/quadkey-tileset-2d.js +0 -36
- package/typed/layers/schema/carto-tile.js +0 -161
- package/typed/layers/spatial-index-tile-layer.js +0 -40
- package/typed/style/color-bins-style.js +0 -12
- package/typed/style/color-categories-style.js +0 -16
- package/typed/style/color-continuous-style.js +0 -12
- package/typed/style/palette.js +0 -62
- package/typed/style/utils.js +0 -15
- package/typed/utils.js +0 -4
package/dist/dist.dev.js
CHANGED
|
@@ -3985,7 +3985,7 @@ var __exports__ = (() => {
|
|
|
3985
3985
|
if (moment2.version === void 0 && moment2.default) {
|
|
3986
3986
|
moment2 = moment2.default;
|
|
3987
3987
|
}
|
|
3988
|
-
var
|
|
3988
|
+
var VERSION4 = "0.5.35", zones = {}, links = {}, countries = {}, names = {}, guesses = {}, cachedGuess;
|
|
3989
3989
|
if (!moment2 || typeof moment2.version !== "string") {
|
|
3990
3990
|
logError("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/");
|
|
3991
3991
|
}
|
|
@@ -4361,7 +4361,7 @@ var __exports__ = (() => {
|
|
|
4361
4361
|
out.tz(name);
|
|
4362
4362
|
return out;
|
|
4363
4363
|
}
|
|
4364
|
-
tz.version =
|
|
4364
|
+
tz.version = VERSION4;
|
|
4365
4365
|
tz.dataVersion = "";
|
|
4366
4366
|
tz._zones = zones;
|
|
4367
4367
|
tz._links = links;
|
|
@@ -5348,6 +5348,13 @@ var __exports__ = (() => {
|
|
|
5348
5348
|
}
|
|
5349
5349
|
});
|
|
5350
5350
|
|
|
5351
|
+
// external-global-plugin:h3-js
|
|
5352
|
+
var require_h3_js = __commonJS({
|
|
5353
|
+
"external-global-plugin:h3-js"(exports, module) {
|
|
5354
|
+
module.exports = globalThis.h3 || {};
|
|
5355
|
+
}
|
|
5356
|
+
});
|
|
5357
|
+
|
|
5351
5358
|
// external-global-plugin:@loaders.gl/core
|
|
5352
5359
|
var require_core2 = __commonJS({
|
|
5353
5360
|
"external-global-plugin:@loaders.gl/core"(exports, module) {
|
|
@@ -6091,20 +6098,6 @@ var __exports__ = (() => {
|
|
|
6091
6098
|
}
|
|
6092
6099
|
});
|
|
6093
6100
|
|
|
6094
|
-
// external-global-plugin:@deck.gl/extensions
|
|
6095
|
-
var require_extensions = __commonJS({
|
|
6096
|
-
"external-global-plugin:@deck.gl/extensions"(exports, module) {
|
|
6097
|
-
module.exports = globalThis.deck;
|
|
6098
|
-
}
|
|
6099
|
-
});
|
|
6100
|
-
|
|
6101
|
-
// external-global-plugin:h3-js
|
|
6102
|
-
var require_h3_js = __commonJS({
|
|
6103
|
-
"external-global-plugin:h3-js"(exports, module) {
|
|
6104
|
-
module.exports = globalThis.h3 || {};
|
|
6105
|
-
}
|
|
6106
|
-
});
|
|
6107
|
-
|
|
6108
6101
|
// ../../node_modules/tilebelt/index.js
|
|
6109
6102
|
var require_tilebelt = __commonJS({
|
|
6110
6103
|
"../../node_modules/tilebelt/index.js"(exports, module) {
|
|
@@ -6330,11 +6323,11 @@ var __exports__ = (() => {
|
|
|
6330
6323
|
for (var i = 0; i < tiles2.length; i++) {
|
|
6331
6324
|
var t = tiles2[i];
|
|
6332
6325
|
if (t[0] % 2 === 0 && t[1] % 2 === 0) {
|
|
6333
|
-
var
|
|
6334
|
-
if (tileHash[
|
|
6326
|
+
var id22 = toID(t[0] + 1, t[1], z), id32 = toID(t[0], t[1] + 1, z), id4 = toID(t[0] + 1, t[1] + 1, z);
|
|
6327
|
+
if (tileHash[id22] && tileHash[id32] && tileHash[id4]) {
|
|
6335
6328
|
tileHash[toID(t[0], t[1], t[2])] = false;
|
|
6336
|
-
tileHash[
|
|
6337
|
-
tileHash[
|
|
6329
|
+
tileHash[id22] = false;
|
|
6330
|
+
tileHash[id32] = false;
|
|
6338
6331
|
tileHash[id4] = false;
|
|
6339
6332
|
var parentTile = [t[0] / 2, t[1] / 2, z - 1];
|
|
6340
6333
|
if (z - 1 === limits.min_zoom)
|
|
@@ -6372,8 +6365,8 @@ var __exports__ = (() => {
|
|
|
6372
6365
|
for (i = 0; i < intersections.length; i += 2) {
|
|
6373
6366
|
y = intersections[i][1];
|
|
6374
6367
|
for (var x = intersections[i][0] + 1; x < intersections[i + 1][0]; x++) {
|
|
6375
|
-
var
|
|
6376
|
-
if (!tileHash[
|
|
6368
|
+
var id4 = toID(x, y, zoom);
|
|
6369
|
+
if (!tileHash[id4]) {
|
|
6377
6370
|
tileArray.push([x, y, zoom]);
|
|
6378
6371
|
}
|
|
6379
6372
|
}
|
|
@@ -6424,13 +6417,487 @@ var __exports__ = (() => {
|
|
|
6424
6417
|
var dim = 2 * (1 << z);
|
|
6425
6418
|
return (dim * y + x) * 32 + z;
|
|
6426
6419
|
}
|
|
6427
|
-
function fromID(
|
|
6428
|
-
var z =
|
|
6420
|
+
function fromID(id4) {
|
|
6421
|
+
var z = id4 % 32, dim = 2 * (1 << z), xy = (id4 - z) / 32, x = xy % dim, y = (xy - x) / dim % dim;
|
|
6429
6422
|
return [x, y, z];
|
|
6430
6423
|
}
|
|
6431
6424
|
}
|
|
6432
6425
|
});
|
|
6433
6426
|
|
|
6427
|
+
// ../../node_modules/earcut/src/earcut.js
|
|
6428
|
+
var require_earcut = __commonJS({
|
|
6429
|
+
"../../node_modules/earcut/src/earcut.js"(exports, module) {
|
|
6430
|
+
"use strict";
|
|
6431
|
+
module.exports = earcut2;
|
|
6432
|
+
module.exports.default = earcut2;
|
|
6433
|
+
function earcut2(data, holeIndices, dim) {
|
|
6434
|
+
dim = dim || 2;
|
|
6435
|
+
var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data.length, outerNode = linkedList(data, 0, outerLen, dim, true), triangles = [];
|
|
6436
|
+
if (!outerNode || outerNode.next === outerNode.prev)
|
|
6437
|
+
return triangles;
|
|
6438
|
+
var minX, minY, maxX, maxY, x, y, invSize;
|
|
6439
|
+
if (hasHoles)
|
|
6440
|
+
outerNode = eliminateHoles(data, holeIndices, outerNode, dim);
|
|
6441
|
+
if (data.length > 80 * dim) {
|
|
6442
|
+
minX = maxX = data[0];
|
|
6443
|
+
minY = maxY = data[1];
|
|
6444
|
+
for (var i = dim; i < outerLen; i += dim) {
|
|
6445
|
+
x = data[i];
|
|
6446
|
+
y = data[i + 1];
|
|
6447
|
+
if (x < minX)
|
|
6448
|
+
minX = x;
|
|
6449
|
+
if (y < minY)
|
|
6450
|
+
minY = y;
|
|
6451
|
+
if (x > maxX)
|
|
6452
|
+
maxX = x;
|
|
6453
|
+
if (y > maxY)
|
|
6454
|
+
maxY = y;
|
|
6455
|
+
}
|
|
6456
|
+
invSize = Math.max(maxX - minX, maxY - minY);
|
|
6457
|
+
invSize = invSize !== 0 ? 1 / invSize : 0;
|
|
6458
|
+
}
|
|
6459
|
+
earcutLinked(outerNode, triangles, dim, minX, minY, invSize);
|
|
6460
|
+
return triangles;
|
|
6461
|
+
}
|
|
6462
|
+
function linkedList(data, start, end, dim, clockwise) {
|
|
6463
|
+
var i, last;
|
|
6464
|
+
if (clockwise === signedArea(data, start, end, dim) > 0) {
|
|
6465
|
+
for (i = start; i < end; i += dim)
|
|
6466
|
+
last = insertNode(i, data[i], data[i + 1], last);
|
|
6467
|
+
} else {
|
|
6468
|
+
for (i = end - dim; i >= start; i -= dim)
|
|
6469
|
+
last = insertNode(i, data[i], data[i + 1], last);
|
|
6470
|
+
}
|
|
6471
|
+
if (last && equals(last, last.next)) {
|
|
6472
|
+
removeNode(last);
|
|
6473
|
+
last = last.next;
|
|
6474
|
+
}
|
|
6475
|
+
return last;
|
|
6476
|
+
}
|
|
6477
|
+
function filterPoints(start, end) {
|
|
6478
|
+
if (!start)
|
|
6479
|
+
return start;
|
|
6480
|
+
if (!end)
|
|
6481
|
+
end = start;
|
|
6482
|
+
var p = start, again;
|
|
6483
|
+
do {
|
|
6484
|
+
again = false;
|
|
6485
|
+
if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {
|
|
6486
|
+
removeNode(p);
|
|
6487
|
+
p = end = p.prev;
|
|
6488
|
+
if (p === p.next)
|
|
6489
|
+
break;
|
|
6490
|
+
again = true;
|
|
6491
|
+
} else {
|
|
6492
|
+
p = p.next;
|
|
6493
|
+
}
|
|
6494
|
+
} while (again || p !== end);
|
|
6495
|
+
return end;
|
|
6496
|
+
}
|
|
6497
|
+
function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {
|
|
6498
|
+
if (!ear)
|
|
6499
|
+
return;
|
|
6500
|
+
if (!pass && invSize)
|
|
6501
|
+
indexCurve(ear, minX, minY, invSize);
|
|
6502
|
+
var stop = ear, prev, next;
|
|
6503
|
+
while (ear.prev !== ear.next) {
|
|
6504
|
+
prev = ear.prev;
|
|
6505
|
+
next = ear.next;
|
|
6506
|
+
if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {
|
|
6507
|
+
triangles.push(prev.i / dim);
|
|
6508
|
+
triangles.push(ear.i / dim);
|
|
6509
|
+
triangles.push(next.i / dim);
|
|
6510
|
+
removeNode(ear);
|
|
6511
|
+
ear = next.next;
|
|
6512
|
+
stop = next.next;
|
|
6513
|
+
continue;
|
|
6514
|
+
}
|
|
6515
|
+
ear = next;
|
|
6516
|
+
if (ear === stop) {
|
|
6517
|
+
if (!pass) {
|
|
6518
|
+
earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);
|
|
6519
|
+
} else if (pass === 1) {
|
|
6520
|
+
ear = cureLocalIntersections(filterPoints(ear), triangles, dim);
|
|
6521
|
+
earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);
|
|
6522
|
+
} else if (pass === 2) {
|
|
6523
|
+
splitEarcut(ear, triangles, dim, minX, minY, invSize);
|
|
6524
|
+
}
|
|
6525
|
+
break;
|
|
6526
|
+
}
|
|
6527
|
+
}
|
|
6528
|
+
}
|
|
6529
|
+
function isEar(ear) {
|
|
6530
|
+
var a = ear.prev, b = ear, c = ear.next;
|
|
6531
|
+
if (area(a, b, c) >= 0)
|
|
6532
|
+
return false;
|
|
6533
|
+
var p = ear.next.next;
|
|
6534
|
+
while (p !== ear.prev) {
|
|
6535
|
+
if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)
|
|
6536
|
+
return false;
|
|
6537
|
+
p = p.next;
|
|
6538
|
+
}
|
|
6539
|
+
return true;
|
|
6540
|
+
}
|
|
6541
|
+
function isEarHashed(ear, minX, minY, invSize) {
|
|
6542
|
+
var a = ear.prev, b = ear, c = ear.next;
|
|
6543
|
+
if (area(a, b, c) >= 0)
|
|
6544
|
+
return false;
|
|
6545
|
+
var minTX = a.x < b.x ? a.x < c.x ? a.x : c.x : b.x < c.x ? b.x : c.x, minTY = a.y < b.y ? a.y < c.y ? a.y : c.y : b.y < c.y ? b.y : c.y, maxTX = a.x > b.x ? a.x > c.x ? a.x : c.x : b.x > c.x ? b.x : c.x, maxTY = a.y > b.y ? a.y > c.y ? a.y : c.y : b.y > c.y ? b.y : c.y;
|
|
6546
|
+
var minZ = zOrder(minTX, minTY, minX, minY, invSize), maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);
|
|
6547
|
+
var p = ear.prevZ, n = ear.nextZ;
|
|
6548
|
+
while (p && p.z >= minZ && n && n.z <= maxZ) {
|
|
6549
|
+
if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)
|
|
6550
|
+
return false;
|
|
6551
|
+
p = p.prevZ;
|
|
6552
|
+
if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)
|
|
6553
|
+
return false;
|
|
6554
|
+
n = n.nextZ;
|
|
6555
|
+
}
|
|
6556
|
+
while (p && p.z >= minZ) {
|
|
6557
|
+
if (p !== ear.prev && p !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) && area(p.prev, p, p.next) >= 0)
|
|
6558
|
+
return false;
|
|
6559
|
+
p = p.prevZ;
|
|
6560
|
+
}
|
|
6561
|
+
while (n && n.z <= maxZ) {
|
|
6562
|
+
if (n !== ear.prev && n !== ear.next && pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) && area(n.prev, n, n.next) >= 0)
|
|
6563
|
+
return false;
|
|
6564
|
+
n = n.nextZ;
|
|
6565
|
+
}
|
|
6566
|
+
return true;
|
|
6567
|
+
}
|
|
6568
|
+
function cureLocalIntersections(start, triangles, dim) {
|
|
6569
|
+
var p = start;
|
|
6570
|
+
do {
|
|
6571
|
+
var a = p.prev, b = p.next.next;
|
|
6572
|
+
if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {
|
|
6573
|
+
triangles.push(a.i / dim);
|
|
6574
|
+
triangles.push(p.i / dim);
|
|
6575
|
+
triangles.push(b.i / dim);
|
|
6576
|
+
removeNode(p);
|
|
6577
|
+
removeNode(p.next);
|
|
6578
|
+
p = start = b;
|
|
6579
|
+
}
|
|
6580
|
+
p = p.next;
|
|
6581
|
+
} while (p !== start);
|
|
6582
|
+
return filterPoints(p);
|
|
6583
|
+
}
|
|
6584
|
+
function splitEarcut(start, triangles, dim, minX, minY, invSize) {
|
|
6585
|
+
var a = start;
|
|
6586
|
+
do {
|
|
6587
|
+
var b = a.next.next;
|
|
6588
|
+
while (b !== a.prev) {
|
|
6589
|
+
if (a.i !== b.i && isValidDiagonal(a, b)) {
|
|
6590
|
+
var c = splitPolygon(a, b);
|
|
6591
|
+
a = filterPoints(a, a.next);
|
|
6592
|
+
c = filterPoints(c, c.next);
|
|
6593
|
+
earcutLinked(a, triangles, dim, minX, minY, invSize);
|
|
6594
|
+
earcutLinked(c, triangles, dim, minX, minY, invSize);
|
|
6595
|
+
return;
|
|
6596
|
+
}
|
|
6597
|
+
b = b.next;
|
|
6598
|
+
}
|
|
6599
|
+
a = a.next;
|
|
6600
|
+
} while (a !== start);
|
|
6601
|
+
}
|
|
6602
|
+
function eliminateHoles(data, holeIndices, outerNode, dim) {
|
|
6603
|
+
var queue = [], i, len, start, end, list;
|
|
6604
|
+
for (i = 0, len = holeIndices.length; i < len; i++) {
|
|
6605
|
+
start = holeIndices[i] * dim;
|
|
6606
|
+
end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
|
|
6607
|
+
list = linkedList(data, start, end, dim, false);
|
|
6608
|
+
if (list === list.next)
|
|
6609
|
+
list.steiner = true;
|
|
6610
|
+
queue.push(getLeftmost(list));
|
|
6611
|
+
}
|
|
6612
|
+
queue.sort(compareX);
|
|
6613
|
+
for (i = 0; i < queue.length; i++) {
|
|
6614
|
+
eliminateHole(queue[i], outerNode);
|
|
6615
|
+
outerNode = filterPoints(outerNode, outerNode.next);
|
|
6616
|
+
}
|
|
6617
|
+
return outerNode;
|
|
6618
|
+
}
|
|
6619
|
+
function compareX(a, b) {
|
|
6620
|
+
return a.x - b.x;
|
|
6621
|
+
}
|
|
6622
|
+
function eliminateHole(hole, outerNode) {
|
|
6623
|
+
outerNode = findHoleBridge(hole, outerNode);
|
|
6624
|
+
if (outerNode) {
|
|
6625
|
+
var b = splitPolygon(outerNode, hole);
|
|
6626
|
+
filterPoints(b, b.next);
|
|
6627
|
+
}
|
|
6628
|
+
}
|
|
6629
|
+
function findHoleBridge(hole, outerNode) {
|
|
6630
|
+
var p = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m;
|
|
6631
|
+
do {
|
|
6632
|
+
if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {
|
|
6633
|
+
var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);
|
|
6634
|
+
if (x <= hx && x > qx) {
|
|
6635
|
+
qx = x;
|
|
6636
|
+
if (x === hx) {
|
|
6637
|
+
if (hy === p.y)
|
|
6638
|
+
return p;
|
|
6639
|
+
if (hy === p.next.y)
|
|
6640
|
+
return p.next;
|
|
6641
|
+
}
|
|
6642
|
+
m = p.x < p.next.x ? p : p.next;
|
|
6643
|
+
}
|
|
6644
|
+
}
|
|
6645
|
+
p = p.next;
|
|
6646
|
+
} while (p !== outerNode);
|
|
6647
|
+
if (!m)
|
|
6648
|
+
return null;
|
|
6649
|
+
if (hx === qx)
|
|
6650
|
+
return m;
|
|
6651
|
+
var stop = m, mx = m.x, my = m.y, tanMin = Infinity, tan;
|
|
6652
|
+
p = m;
|
|
6653
|
+
do {
|
|
6654
|
+
if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {
|
|
6655
|
+
tan = Math.abs(hy - p.y) / (hx - p.x);
|
|
6656
|
+
if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) {
|
|
6657
|
+
m = p;
|
|
6658
|
+
tanMin = tan;
|
|
6659
|
+
}
|
|
6660
|
+
}
|
|
6661
|
+
p = p.next;
|
|
6662
|
+
} while (p !== stop);
|
|
6663
|
+
return m;
|
|
6664
|
+
}
|
|
6665
|
+
function sectorContainsSector(m, p) {
|
|
6666
|
+
return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;
|
|
6667
|
+
}
|
|
6668
|
+
function indexCurve(start, minX, minY, invSize) {
|
|
6669
|
+
var p = start;
|
|
6670
|
+
do {
|
|
6671
|
+
if (p.z === null)
|
|
6672
|
+
p.z = zOrder(p.x, p.y, minX, minY, invSize);
|
|
6673
|
+
p.prevZ = p.prev;
|
|
6674
|
+
p.nextZ = p.next;
|
|
6675
|
+
p = p.next;
|
|
6676
|
+
} while (p !== start);
|
|
6677
|
+
p.prevZ.nextZ = null;
|
|
6678
|
+
p.prevZ = null;
|
|
6679
|
+
sortLinked(p);
|
|
6680
|
+
}
|
|
6681
|
+
function sortLinked(list) {
|
|
6682
|
+
var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;
|
|
6683
|
+
do {
|
|
6684
|
+
p = list;
|
|
6685
|
+
list = null;
|
|
6686
|
+
tail = null;
|
|
6687
|
+
numMerges = 0;
|
|
6688
|
+
while (p) {
|
|
6689
|
+
numMerges++;
|
|
6690
|
+
q = p;
|
|
6691
|
+
pSize = 0;
|
|
6692
|
+
for (i = 0; i < inSize; i++) {
|
|
6693
|
+
pSize++;
|
|
6694
|
+
q = q.nextZ;
|
|
6695
|
+
if (!q)
|
|
6696
|
+
break;
|
|
6697
|
+
}
|
|
6698
|
+
qSize = inSize;
|
|
6699
|
+
while (pSize > 0 || qSize > 0 && q) {
|
|
6700
|
+
if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {
|
|
6701
|
+
e = p;
|
|
6702
|
+
p = p.nextZ;
|
|
6703
|
+
pSize--;
|
|
6704
|
+
} else {
|
|
6705
|
+
e = q;
|
|
6706
|
+
q = q.nextZ;
|
|
6707
|
+
qSize--;
|
|
6708
|
+
}
|
|
6709
|
+
if (tail)
|
|
6710
|
+
tail.nextZ = e;
|
|
6711
|
+
else
|
|
6712
|
+
list = e;
|
|
6713
|
+
e.prevZ = tail;
|
|
6714
|
+
tail = e;
|
|
6715
|
+
}
|
|
6716
|
+
p = q;
|
|
6717
|
+
}
|
|
6718
|
+
tail.nextZ = null;
|
|
6719
|
+
inSize *= 2;
|
|
6720
|
+
} while (numMerges > 1);
|
|
6721
|
+
return list;
|
|
6722
|
+
}
|
|
6723
|
+
function zOrder(x, y, minX, minY, invSize) {
|
|
6724
|
+
x = 32767 * (x - minX) * invSize;
|
|
6725
|
+
y = 32767 * (y - minY) * invSize;
|
|
6726
|
+
x = (x | x << 8) & 16711935;
|
|
6727
|
+
x = (x | x << 4) & 252645135;
|
|
6728
|
+
x = (x | x << 2) & 858993459;
|
|
6729
|
+
x = (x | x << 1) & 1431655765;
|
|
6730
|
+
y = (y | y << 8) & 16711935;
|
|
6731
|
+
y = (y | y << 4) & 252645135;
|
|
6732
|
+
y = (y | y << 2) & 858993459;
|
|
6733
|
+
y = (y | y << 1) & 1431655765;
|
|
6734
|
+
return x | y << 1;
|
|
6735
|
+
}
|
|
6736
|
+
function getLeftmost(start) {
|
|
6737
|
+
var p = start, leftmost = start;
|
|
6738
|
+
do {
|
|
6739
|
+
if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y)
|
|
6740
|
+
leftmost = p;
|
|
6741
|
+
p = p.next;
|
|
6742
|
+
} while (p !== start);
|
|
6743
|
+
return leftmost;
|
|
6744
|
+
}
|
|
6745
|
+
function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {
|
|
6746
|
+
return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 && (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 && (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;
|
|
6747
|
+
}
|
|
6748
|
+
function isValidDiagonal(a, b) {
|
|
6749
|
+
return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && (area(a.prev, a, b.prev) || area(a, b.prev, b)) || equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);
|
|
6750
|
+
}
|
|
6751
|
+
function area(p, q, r) {
|
|
6752
|
+
return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
|
|
6753
|
+
}
|
|
6754
|
+
function equals(p1, p2) {
|
|
6755
|
+
return p1.x === p2.x && p1.y === p2.y;
|
|
6756
|
+
}
|
|
6757
|
+
function intersects(p1, q1, p2, q2) {
|
|
6758
|
+
var o1 = sign(area(p1, q1, p2));
|
|
6759
|
+
var o2 = sign(area(p1, q1, q2));
|
|
6760
|
+
var o3 = sign(area(p2, q2, p1));
|
|
6761
|
+
var o4 = sign(area(p2, q2, q1));
|
|
6762
|
+
if (o1 !== o2 && o3 !== o4)
|
|
6763
|
+
return true;
|
|
6764
|
+
if (o1 === 0 && onSegment(p1, p2, q1))
|
|
6765
|
+
return true;
|
|
6766
|
+
if (o2 === 0 && onSegment(p1, q2, q1))
|
|
6767
|
+
return true;
|
|
6768
|
+
if (o3 === 0 && onSegment(p2, p1, q2))
|
|
6769
|
+
return true;
|
|
6770
|
+
if (o4 === 0 && onSegment(p2, q1, q2))
|
|
6771
|
+
return true;
|
|
6772
|
+
return false;
|
|
6773
|
+
}
|
|
6774
|
+
function onSegment(p, q, r) {
|
|
6775
|
+
return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);
|
|
6776
|
+
}
|
|
6777
|
+
function sign(num) {
|
|
6778
|
+
return num > 0 ? 1 : num < 0 ? -1 : 0;
|
|
6779
|
+
}
|
|
6780
|
+
function intersectsPolygon(a, b) {
|
|
6781
|
+
var p = a;
|
|
6782
|
+
do {
|
|
6783
|
+
if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b))
|
|
6784
|
+
return true;
|
|
6785
|
+
p = p.next;
|
|
6786
|
+
} while (p !== a);
|
|
6787
|
+
return false;
|
|
6788
|
+
}
|
|
6789
|
+
function locallyInside(a, b) {
|
|
6790
|
+
return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;
|
|
6791
|
+
}
|
|
6792
|
+
function middleInside(a, b) {
|
|
6793
|
+
var p = a, inside = false, px = (a.x + b.x) / 2, py = (a.y + b.y) / 2;
|
|
6794
|
+
do {
|
|
6795
|
+
if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x)
|
|
6796
|
+
inside = !inside;
|
|
6797
|
+
p = p.next;
|
|
6798
|
+
} while (p !== a);
|
|
6799
|
+
return inside;
|
|
6800
|
+
}
|
|
6801
|
+
function splitPolygon(a, b) {
|
|
6802
|
+
var a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev;
|
|
6803
|
+
a.next = b;
|
|
6804
|
+
b.prev = a;
|
|
6805
|
+
a2.next = an;
|
|
6806
|
+
an.prev = a2;
|
|
6807
|
+
b2.next = a2;
|
|
6808
|
+
a2.prev = b2;
|
|
6809
|
+
bp.next = b2;
|
|
6810
|
+
b2.prev = bp;
|
|
6811
|
+
return b2;
|
|
6812
|
+
}
|
|
6813
|
+
function insertNode(i, x, y, last) {
|
|
6814
|
+
var p = new Node(i, x, y);
|
|
6815
|
+
if (!last) {
|
|
6816
|
+
p.prev = p;
|
|
6817
|
+
p.next = p;
|
|
6818
|
+
} else {
|
|
6819
|
+
p.next = last.next;
|
|
6820
|
+
p.prev = last;
|
|
6821
|
+
last.next.prev = p;
|
|
6822
|
+
last.next = p;
|
|
6823
|
+
}
|
|
6824
|
+
return p;
|
|
6825
|
+
}
|
|
6826
|
+
function removeNode(p) {
|
|
6827
|
+
p.next.prev = p.prev;
|
|
6828
|
+
p.prev.next = p.next;
|
|
6829
|
+
if (p.prevZ)
|
|
6830
|
+
p.prevZ.nextZ = p.nextZ;
|
|
6831
|
+
if (p.nextZ)
|
|
6832
|
+
p.nextZ.prevZ = p.prevZ;
|
|
6833
|
+
}
|
|
6834
|
+
function Node(i, x, y) {
|
|
6835
|
+
this.i = i;
|
|
6836
|
+
this.x = x;
|
|
6837
|
+
this.y = y;
|
|
6838
|
+
this.prev = null;
|
|
6839
|
+
this.next = null;
|
|
6840
|
+
this.z = null;
|
|
6841
|
+
this.prevZ = null;
|
|
6842
|
+
this.nextZ = null;
|
|
6843
|
+
this.steiner = false;
|
|
6844
|
+
}
|
|
6845
|
+
earcut2.deviation = function(data, holeIndices, dim, triangles) {
|
|
6846
|
+
var hasHoles = holeIndices && holeIndices.length;
|
|
6847
|
+
var outerLen = hasHoles ? holeIndices[0] * dim : data.length;
|
|
6848
|
+
var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));
|
|
6849
|
+
if (hasHoles) {
|
|
6850
|
+
for (var i = 0, len = holeIndices.length; i < len; i++) {
|
|
6851
|
+
var start = holeIndices[i] * dim;
|
|
6852
|
+
var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
|
|
6853
|
+
polygonArea -= Math.abs(signedArea(data, start, end, dim));
|
|
6854
|
+
}
|
|
6855
|
+
}
|
|
6856
|
+
var trianglesArea = 0;
|
|
6857
|
+
for (i = 0; i < triangles.length; i += 3) {
|
|
6858
|
+
var a = triangles[i] * dim;
|
|
6859
|
+
var b = triangles[i + 1] * dim;
|
|
6860
|
+
var c = triangles[i + 2] * dim;
|
|
6861
|
+
trianglesArea += Math.abs((data[a] - data[c]) * (data[b + 1] - data[a + 1]) - (data[a] - data[b]) * (data[c + 1] - data[a + 1]));
|
|
6862
|
+
}
|
|
6863
|
+
return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea);
|
|
6864
|
+
};
|
|
6865
|
+
function signedArea(data, start, end, dim) {
|
|
6866
|
+
var sum = 0;
|
|
6867
|
+
for (var i = start, j = end - dim; i < end; i += dim) {
|
|
6868
|
+
sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);
|
|
6869
|
+
j = i;
|
|
6870
|
+
}
|
|
6871
|
+
return sum;
|
|
6872
|
+
}
|
|
6873
|
+
earcut2.flatten = function(data) {
|
|
6874
|
+
var dim = data[0][0].length, result = {
|
|
6875
|
+
vertices: [],
|
|
6876
|
+
holes: [],
|
|
6877
|
+
dimensions: dim
|
|
6878
|
+
}, holeIndex = 0;
|
|
6879
|
+
for (var i = 0; i < data.length; i++) {
|
|
6880
|
+
for (var j = 0; j < data[i].length; j++) {
|
|
6881
|
+
for (var d = 0; d < dim; d++)
|
|
6882
|
+
result.vertices.push(data[i][j][d]);
|
|
6883
|
+
}
|
|
6884
|
+
if (i > 0) {
|
|
6885
|
+
holeIndex += data[i - 1].length;
|
|
6886
|
+
result.holes.push(holeIndex);
|
|
6887
|
+
}
|
|
6888
|
+
}
|
|
6889
|
+
return result;
|
|
6890
|
+
};
|
|
6891
|
+
}
|
|
6892
|
+
});
|
|
6893
|
+
|
|
6894
|
+
// external-global-plugin:@deck.gl/extensions
|
|
6895
|
+
var require_extensions = __commonJS({
|
|
6896
|
+
"external-global-plugin:@deck.gl/extensions"(exports, module) {
|
|
6897
|
+
module.exports = globalThis.deck;
|
|
6898
|
+
}
|
|
6899
|
+
});
|
|
6900
|
+
|
|
6434
6901
|
// ../../node_modules/colorbrewer/colorbrewer.js
|
|
6435
6902
|
var require_colorbrewer = __commonJS({
|
|
6436
6903
|
"../../node_modules/colorbrewer/colorbrewer.js"(exports, module) {
|
|
@@ -8652,15 +9119,26 @@ var __exports__ = (() => {
|
|
|
8652
9119
|
CartoAPIError: () => CartoAPIError,
|
|
8653
9120
|
CartoLayer: () => CartoLayer,
|
|
8654
9121
|
FORMATS: () => FORMATS,
|
|
9122
|
+
H3TileLayer: () => H3TileLayer,
|
|
8655
9123
|
MAP_TYPES: () => MAP_TYPES,
|
|
9124
|
+
QuadbinTileLayer: () => QuadbinTileLayer,
|
|
9125
|
+
RasterTileLayer: () => RasterTileLayer,
|
|
9126
|
+
SOURCE_DEFAULTS: () => SOURCE_DEFAULTS,
|
|
8656
9127
|
TILE_FORMATS: () => TILE_FORMATS,
|
|
8657
|
-
|
|
8658
|
-
_H3TileLayer: () => H3TileLayer,
|
|
9128
|
+
VectorTileLayer: () => VectorTileLayer,
|
|
8659
9129
|
_PointLabelLayer: () => PointLabelLayer,
|
|
8660
|
-
_QuadbinTileLayer: () => QuadbinTileLayer,
|
|
8661
|
-
_RasterTileLayer: () => RasterTileLayer,
|
|
8662
9130
|
_getDataV2: () => getDataV2,
|
|
8663
9131
|
_mapInstantiation: () => mapInstantiation,
|
|
9132
|
+
cartoH3QuerySource: () => cartoH3QuerySource,
|
|
9133
|
+
cartoH3TableSource: () => cartoH3TableSource,
|
|
9134
|
+
cartoH3TilesetSource: () => cartoH3TilesetSource,
|
|
9135
|
+
cartoQuadbinQuerySource: () => cartoQuadbinQuerySource,
|
|
9136
|
+
cartoQuadbinTableSource: () => cartoQuadbinTableSource,
|
|
9137
|
+
cartoQuadbinTilesetSource: () => cartoQuadbinTilesetSource,
|
|
9138
|
+
cartoRasterSource: () => cartoRasterSource,
|
|
9139
|
+
cartoVectorQuerySource: () => cartoVectorQuerySource,
|
|
9140
|
+
cartoVectorTableSource: () => cartoVectorTableSource,
|
|
9141
|
+
cartoVectorTilesetSource: () => cartoVectorTilesetSource,
|
|
8664
9142
|
colorBins: () => colorBins,
|
|
8665
9143
|
colorCategories: () => colorCategories,
|
|
8666
9144
|
colorContinuous: () => colorContinuous,
|
|
@@ -8692,7 +9170,6 @@ var __exports__ = (() => {
|
|
|
8692
9170
|
var GEO_COLUMN_SUPPORT = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];
|
|
8693
9171
|
var FORMATS = {
|
|
8694
9172
|
GEOJSON: "geojson",
|
|
8695
|
-
NDJSON: "ndjson",
|
|
8696
9173
|
TILEJSON: "tilejson",
|
|
8697
9174
|
JSON: "json"
|
|
8698
9175
|
};
|
|
@@ -11466,8 +11943,118 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
11466
11943
|
var import_layers3 = __toESM(require_layers());
|
|
11467
11944
|
var import_geo_layers7 = __toESM(require_geo_layers());
|
|
11468
11945
|
|
|
11469
|
-
// src/layers/
|
|
11470
|
-
var
|
|
11946
|
+
// src/layers/h3-tile-layer.ts
|
|
11947
|
+
var import_core3 = __toESM(require_core());
|
|
11948
|
+
var import_geo_layers3 = __toESM(require_geo_layers());
|
|
11949
|
+
|
|
11950
|
+
// src/layers/h3-tileset-2d.ts
|
|
11951
|
+
var import_geo_layers = __toESM(require_geo_layers());
|
|
11952
|
+
var import_h3_js = __toESM(require_h3_js());
|
|
11953
|
+
function getHexagonsInBoundingBox({
|
|
11954
|
+
west,
|
|
11955
|
+
north,
|
|
11956
|
+
east,
|
|
11957
|
+
south
|
|
11958
|
+
}, resolution) {
|
|
11959
|
+
const longitudeSpan = Math.abs(east - west);
|
|
11960
|
+
if (longitudeSpan > 180) {
|
|
11961
|
+
const nSegments = Math.ceil(longitudeSpan / 180);
|
|
11962
|
+
let h3Indices2 = [];
|
|
11963
|
+
for (let s = 0; s < nSegments; s++) {
|
|
11964
|
+
const segmentEast = east + s * 180;
|
|
11965
|
+
const segmentWest = Math.min(segmentEast + 179.9999999, west);
|
|
11966
|
+
h3Indices2 = h3Indices2.concat(getHexagonsInBoundingBox({
|
|
11967
|
+
west: segmentWest,
|
|
11968
|
+
north,
|
|
11969
|
+
east: segmentEast,
|
|
11970
|
+
south
|
|
11971
|
+
}, resolution));
|
|
11972
|
+
}
|
|
11973
|
+
return [...new Set(h3Indices2)];
|
|
11974
|
+
}
|
|
11975
|
+
const oversample = 2;
|
|
11976
|
+
const h3Indices = (0, import_h3_js.polygonToCells)([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
|
|
11977
|
+
return oversample ? [...new Set(h3Indices.map((i) => (0, import_h3_js.cellToParent)(i, resolution)))] : h3Indices;
|
|
11978
|
+
}
|
|
11979
|
+
function tileToBoundingBox(index) {
|
|
11980
|
+
const coordinates = (0, import_h3_js.cellToBoundary)(index);
|
|
11981
|
+
const latitudes = coordinates.map((c) => c[0]);
|
|
11982
|
+
const longitudes = coordinates.map((c) => c[1]);
|
|
11983
|
+
const west = Math.min(...longitudes);
|
|
11984
|
+
const south = Math.min(...latitudes);
|
|
11985
|
+
const east = Math.max(...longitudes);
|
|
11986
|
+
const north = Math.max(...latitudes);
|
|
11987
|
+
return {
|
|
11988
|
+
west,
|
|
11989
|
+
south,
|
|
11990
|
+
east,
|
|
11991
|
+
north
|
|
11992
|
+
};
|
|
11993
|
+
}
|
|
11994
|
+
var BIAS = 2;
|
|
11995
|
+
function getHexagonResolution(viewport) {
|
|
11996
|
+
const hexagonScaleFactor = 2 / 3 * viewport.zoom;
|
|
11997
|
+
const latitudeScaleFactor = Math.log(1 / Math.cos(Math.PI * viewport.latitude / 180));
|
|
11998
|
+
return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));
|
|
11999
|
+
}
|
|
12000
|
+
var H3Tileset2D = class extends import_geo_layers._Tileset2D {
|
|
12001
|
+
getTileIndices({
|
|
12002
|
+
viewport,
|
|
12003
|
+
minZoom,
|
|
12004
|
+
maxZoom
|
|
12005
|
+
}) {
|
|
12006
|
+
if (viewport.latitude === void 0)
|
|
12007
|
+
return [];
|
|
12008
|
+
const [east, south, west, north] = viewport.getBounds();
|
|
12009
|
+
let z = getHexagonResolution(viewport);
|
|
12010
|
+
let indices;
|
|
12011
|
+
if (typeof minZoom === "number" && Number.isFinite(minZoom) && z < minZoom) {
|
|
12012
|
+
return [];
|
|
12013
|
+
}
|
|
12014
|
+
if (typeof maxZoom === "number" && Number.isFinite(maxZoom) && z > maxZoom) {
|
|
12015
|
+
z = maxZoom;
|
|
12016
|
+
const center = (0, import_h3_js.latLngToCell)(viewport.latitude, viewport.longitude, maxZoom);
|
|
12017
|
+
indices = (0, import_h3_js.gridDisk)(center, 1);
|
|
12018
|
+
} else {
|
|
12019
|
+
indices = getHexagonsInBoundingBox({
|
|
12020
|
+
west,
|
|
12021
|
+
north,
|
|
12022
|
+
east,
|
|
12023
|
+
south
|
|
12024
|
+
}, z);
|
|
12025
|
+
}
|
|
12026
|
+
return indices.map((i) => ({
|
|
12027
|
+
i
|
|
12028
|
+
}));
|
|
12029
|
+
}
|
|
12030
|
+
getTileId({
|
|
12031
|
+
i
|
|
12032
|
+
}) {
|
|
12033
|
+
return i;
|
|
12034
|
+
}
|
|
12035
|
+
getTileMetadata({
|
|
12036
|
+
i
|
|
12037
|
+
}) {
|
|
12038
|
+
return {
|
|
12039
|
+
bbox: tileToBoundingBox(i)
|
|
12040
|
+
};
|
|
12041
|
+
}
|
|
12042
|
+
getTileZoom({
|
|
12043
|
+
i
|
|
12044
|
+
}) {
|
|
12045
|
+
return (0, import_h3_js.getResolution)(i);
|
|
12046
|
+
}
|
|
12047
|
+
getParentIndex(index) {
|
|
12048
|
+
const resolution = (0, import_h3_js.getResolution)(index.i);
|
|
12049
|
+
const i = (0, import_h3_js.cellToParent)(index.i, resolution - 1);
|
|
12050
|
+
return {
|
|
12051
|
+
i
|
|
12052
|
+
};
|
|
12053
|
+
}
|
|
12054
|
+
};
|
|
12055
|
+
|
|
12056
|
+
// src/layers/spatial-index-tile-layer.ts
|
|
12057
|
+
var import_core2 = __toESM(require_core2());
|
|
11471
12058
|
|
|
11472
12059
|
// src/layers/schema/fast-pbf.ts
|
|
11473
12060
|
function readPackedTypedArray(TypedArray, pbf, obj) {
|
|
@@ -11477,27 +12064,164 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
11477
12064
|
return obj.value;
|
|
11478
12065
|
}
|
|
11479
12066
|
|
|
11480
|
-
// src/layers/schema/carto-tile.ts
|
|
11481
|
-
var
|
|
12067
|
+
// src/layers/schema/carto-raster-tile.ts
|
|
12068
|
+
var ARRAY_TYPES = {
|
|
12069
|
+
uint8: Uint8Array,
|
|
12070
|
+
uint16: Uint16Array,
|
|
12071
|
+
uint32: Uint32Array,
|
|
12072
|
+
uint64: BigUint64Array,
|
|
12073
|
+
int8: Int8Array,
|
|
12074
|
+
int16: Int16Array,
|
|
12075
|
+
int32: Int32Array,
|
|
12076
|
+
int64: BigInt64Array,
|
|
12077
|
+
float32: Float32Array,
|
|
12078
|
+
float64: Float64Array
|
|
12079
|
+
};
|
|
12080
|
+
var BandReader = class {
|
|
11482
12081
|
static read(pbf, end) {
|
|
11483
|
-
return pbf.readFields(
|
|
11484
|
-
|
|
11485
|
-
|
|
12082
|
+
return pbf.readFields(BandReader._readField, {
|
|
12083
|
+
name: "",
|
|
12084
|
+
type: "",
|
|
12085
|
+
data: null
|
|
11486
12086
|
}, end);
|
|
11487
12087
|
}
|
|
11488
12088
|
static _readField(tag, obj, pbf) {
|
|
11489
12089
|
if (tag === 1)
|
|
11490
|
-
obj.
|
|
12090
|
+
obj.name = pbf.readString();
|
|
11491
12091
|
else if (tag === 2)
|
|
11492
|
-
obj.
|
|
11493
|
-
|
|
11494
|
-
|
|
11495
|
-
|
|
11496
|
-
|
|
11497
|
-
|
|
11498
|
-
|
|
11499
|
-
|
|
11500
|
-
|
|
12092
|
+
obj.type = pbf.readString();
|
|
12093
|
+
else if (tag === 3) {
|
|
12094
|
+
const TypedArray = ARRAY_TYPES[obj.type];
|
|
12095
|
+
if (!TypedArray) {
|
|
12096
|
+
throw Error(`Invalid data type: ${obj.type}`);
|
|
12097
|
+
}
|
|
12098
|
+
obj.data = {};
|
|
12099
|
+
readPackedTypedArray(TypedArray, pbf, obj.data);
|
|
12100
|
+
}
|
|
12101
|
+
}
|
|
12102
|
+
};
|
|
12103
|
+
var TileReader = class {
|
|
12104
|
+
static read(pbf, end) {
|
|
12105
|
+
return pbf.readFields(TileReader._readField, {
|
|
12106
|
+
blockWidth: 0,
|
|
12107
|
+
blockHeight: 0,
|
|
12108
|
+
bands: []
|
|
12109
|
+
}, end);
|
|
12110
|
+
}
|
|
12111
|
+
static _readField(tag, obj, pbf) {
|
|
12112
|
+
if (tag === 1)
|
|
12113
|
+
obj.blockWidth = pbf.readVarint();
|
|
12114
|
+
else if (tag === 2)
|
|
12115
|
+
obj.blockHeight = pbf.readVarint();
|
|
12116
|
+
else if (tag === 3)
|
|
12117
|
+
obj.bands.push(BandReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
12118
|
+
}
|
|
12119
|
+
};
|
|
12120
|
+
|
|
12121
|
+
// src/layers/schema/tile-loader-utils.ts
|
|
12122
|
+
var import_pbf = __toESM(require_pbf());
|
|
12123
|
+
function parsePbf(buffer, TileReader4) {
|
|
12124
|
+
const pbf = new import_pbf.default(buffer);
|
|
12125
|
+
const tile = TileReader4.read(pbf);
|
|
12126
|
+
return tile;
|
|
12127
|
+
}
|
|
12128
|
+
|
|
12129
|
+
// src/utils.ts
|
|
12130
|
+
var import_core = __toESM(require_core());
|
|
12131
|
+
function assert(condition, message) {
|
|
12132
|
+
import_core.log.assert(condition, message);
|
|
12133
|
+
}
|
|
12134
|
+
function createBinaryProxy(data, index) {
|
|
12135
|
+
const {
|
|
12136
|
+
properties,
|
|
12137
|
+
numericProps
|
|
12138
|
+
} = data;
|
|
12139
|
+
return new Proxy(properties[index] || {}, {
|
|
12140
|
+
get(target, property, receiver) {
|
|
12141
|
+
if (property in numericProps) {
|
|
12142
|
+
return numericProps[property].value[index];
|
|
12143
|
+
}
|
|
12144
|
+
return target[property];
|
|
12145
|
+
},
|
|
12146
|
+
has(target, property) {
|
|
12147
|
+
return property in numericProps || property in target;
|
|
12148
|
+
}
|
|
12149
|
+
});
|
|
12150
|
+
}
|
|
12151
|
+
function getWorkerUrl(id4, version) {
|
|
12152
|
+
return `https://unpkg.com/@deck.gl/carto@${version}/dist/${id4}-worker.js`;
|
|
12153
|
+
}
|
|
12154
|
+
|
|
12155
|
+
// src/layers/schema/carto-raster-tile-loader.ts
|
|
12156
|
+
var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
12157
|
+
var id = "cartoRasterTile";
|
|
12158
|
+
var DEFAULT_OPTIONS = {
|
|
12159
|
+
cartoRasterTile: {
|
|
12160
|
+
workerUrl: getWorkerUrl(id, VERSION)
|
|
12161
|
+
}
|
|
12162
|
+
};
|
|
12163
|
+
var CartoRasterTileLoader = {
|
|
12164
|
+
name: "CARTO Raster Tile",
|
|
12165
|
+
version: VERSION,
|
|
12166
|
+
id,
|
|
12167
|
+
module: "carto",
|
|
12168
|
+
extensions: ["pbf"],
|
|
12169
|
+
mimeTypes: ["application/vnd.carto-raster-tile"],
|
|
12170
|
+
category: "geometry",
|
|
12171
|
+
parse: async (arrayBuffer, options) => parseCartoRasterTile(arrayBuffer, options),
|
|
12172
|
+
parseSync: parseCartoRasterTile,
|
|
12173
|
+
worker: true,
|
|
12174
|
+
options: DEFAULT_OPTIONS
|
|
12175
|
+
};
|
|
12176
|
+
function parseCartoRasterTile(arrayBuffer, options) {
|
|
12177
|
+
if (!arrayBuffer)
|
|
12178
|
+
return null;
|
|
12179
|
+
const tile = parsePbf(arrayBuffer, TileReader);
|
|
12180
|
+
const {
|
|
12181
|
+
bands,
|
|
12182
|
+
blockHeight,
|
|
12183
|
+
blockWidth
|
|
12184
|
+
} = tile;
|
|
12185
|
+
const numericProps = {};
|
|
12186
|
+
for (let i = 0; i < bands.length; i++) {
|
|
12187
|
+
const {
|
|
12188
|
+
name,
|
|
12189
|
+
data
|
|
12190
|
+
} = bands[i];
|
|
12191
|
+
numericProps[name] = data;
|
|
12192
|
+
}
|
|
12193
|
+
return {
|
|
12194
|
+
blockWidth,
|
|
12195
|
+
blockHeight,
|
|
12196
|
+
cells: {
|
|
12197
|
+
numericProps,
|
|
12198
|
+
properties: []
|
|
12199
|
+
}
|
|
12200
|
+
};
|
|
12201
|
+
}
|
|
12202
|
+
var carto_raster_tile_loader_default = CartoRasterTileLoader;
|
|
12203
|
+
|
|
12204
|
+
// src/layers/schema/carto-tile.ts
|
|
12205
|
+
var KeyValueObjectReader = class {
|
|
12206
|
+
static read(pbf, end) {
|
|
12207
|
+
return pbf.readFields(KeyValueObjectReader._readField, {
|
|
12208
|
+
key: "",
|
|
12209
|
+
value: null
|
|
12210
|
+
}, end);
|
|
12211
|
+
}
|
|
12212
|
+
static _readField(tag, obj, pbf) {
|
|
12213
|
+
if (tag === 1)
|
|
12214
|
+
obj.key = pbf.readString();
|
|
12215
|
+
else if (tag === 2)
|
|
12216
|
+
obj.value = pbf.readString();
|
|
12217
|
+
}
|
|
12218
|
+
};
|
|
12219
|
+
var PropertiesReader = class {
|
|
12220
|
+
static read(pbf, end) {
|
|
12221
|
+
return pbf.readFields(PropertiesReader._readField, {}, end);
|
|
12222
|
+
}
|
|
12223
|
+
static _readField(tag, obj, pbf) {
|
|
12224
|
+
if (tag === 1) {
|
|
11501
12225
|
const {
|
|
11502
12226
|
key,
|
|
11503
12227
|
value
|
|
@@ -11677,9 +12401,9 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
11677
12401
|
obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
11678
12402
|
}
|
|
11679
12403
|
};
|
|
11680
|
-
var
|
|
12404
|
+
var TileReader2 = class {
|
|
11681
12405
|
static read(pbf, end) {
|
|
11682
|
-
return pbf.readFields(
|
|
12406
|
+
return pbf.readFields(TileReader2._readField, {
|
|
11683
12407
|
points: null,
|
|
11684
12408
|
lines: null,
|
|
11685
12409
|
polygons: null
|
|
@@ -11695,606 +12419,72 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
11695
12419
|
}
|
|
11696
12420
|
};
|
|
11697
12421
|
|
|
11698
|
-
// src/layers/schema/
|
|
11699
|
-
var
|
|
11700
|
-
|
|
11701
|
-
|
|
11702
|
-
|
|
11703
|
-
|
|
11704
|
-
|
|
11705
|
-
|
|
11706
|
-
|
|
11707
|
-
|
|
11708
|
-
|
|
11709
|
-
version: "1",
|
|
11710
|
-
id: "cartoVectorTile",
|
|
11711
|
-
module: "carto",
|
|
11712
|
-
extensions: ["pbf"],
|
|
11713
|
-
mimeTypes: ["application/vnd.carto-vector-tile"],
|
|
11714
|
-
category: "geometry",
|
|
11715
|
-
worker: false,
|
|
11716
|
-
parse: async (arrayBuffer, options) => parseCartoVectorTile(arrayBuffer, options),
|
|
11717
|
-
parseSync: parseCartoVectorTile,
|
|
11718
|
-
options: {}
|
|
12422
|
+
// src/layers/schema/carto-spatial-tile.ts
|
|
12423
|
+
var IndicesReader = class {
|
|
12424
|
+
static read(pbf, end) {
|
|
12425
|
+
return pbf.readFields(IndicesReader._readField, {
|
|
12426
|
+
value: []
|
|
12427
|
+
}, end);
|
|
12428
|
+
}
|
|
12429
|
+
static _readField(tag, obj, pbf) {
|
|
12430
|
+
if (tag === 1)
|
|
12431
|
+
readPackedTypedArray(BigUint64Array, pbf, obj);
|
|
12432
|
+
}
|
|
11719
12433
|
};
|
|
11720
|
-
|
|
11721
|
-
|
|
11722
|
-
return
|
|
11723
|
-
|
|
11724
|
-
|
|
11725
|
-
|
|
11726
|
-
|
|
11727
|
-
|
|
11728
|
-
// src/layers/carto-tile-layer.ts
|
|
11729
|
-
var import_extensions = __toESM(require_extensions());
|
|
11730
|
-
var import_geo_layers = __toESM(require_geo_layers());
|
|
11731
|
-
var import_layers = __toESM(require_layers());
|
|
11732
|
-
|
|
11733
|
-
// ../../node_modules/@loaders.gl/gis/dist/esm/lib/binary-to-geojson.js
|
|
11734
|
-
function binaryToGeojson(data, options) {
|
|
11735
|
-
const globalFeatureId = options === null || options === void 0 ? void 0 : options.globalFeatureId;
|
|
11736
|
-
if (globalFeatureId !== void 0) {
|
|
11737
|
-
return getSingleFeature(data, globalFeatureId);
|
|
12434
|
+
var CellsReader = class {
|
|
12435
|
+
static read(pbf, end) {
|
|
12436
|
+
return pbf.readFields(CellsReader._readField, {
|
|
12437
|
+
indices: null,
|
|
12438
|
+
properties: [],
|
|
12439
|
+
numericProps: {}
|
|
12440
|
+
}, end);
|
|
11738
12441
|
}
|
|
11739
|
-
|
|
11740
|
-
|
|
11741
|
-
|
|
11742
|
-
|
|
11743
|
-
|
|
11744
|
-
|
|
11745
|
-
|
|
11746
|
-
|
|
11747
|
-
const currValue = data2.featureIds.value[i];
|
|
11748
|
-
if (currValue === lastValue) {
|
|
11749
|
-
continue;
|
|
11750
|
-
}
|
|
11751
|
-
if (globalFeatureId === data2.globalFeatureIds.value[lastIndex]) {
|
|
11752
|
-
return parseFeature(data2, lastIndex, i);
|
|
11753
|
-
}
|
|
11754
|
-
lastIndex = i;
|
|
11755
|
-
lastValue = currValue;
|
|
11756
|
-
}
|
|
11757
|
-
if (globalFeatureId === data2.globalFeatureIds.value[lastIndex]) {
|
|
11758
|
-
return parseFeature(data2, lastIndex, data2.featureIds.value.length);
|
|
12442
|
+
static _readField(tag, obj, pbf) {
|
|
12443
|
+
if (tag === 1)
|
|
12444
|
+
obj.indices = IndicesReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
12445
|
+
else if (tag === 2)
|
|
12446
|
+
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
12447
|
+
else if (tag === 3) {
|
|
12448
|
+
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
12449
|
+
obj.numericProps[entry.key] = entry.value;
|
|
11759
12450
|
}
|
|
11760
12451
|
}
|
|
11761
|
-
|
|
12452
|
+
};
|
|
12453
|
+
var TileReader3 = class {
|
|
12454
|
+
static read(pbf, end) {
|
|
12455
|
+
return pbf.readFields(TileReader3._readField, {
|
|
12456
|
+
scheme: 0,
|
|
12457
|
+
cells: null
|
|
12458
|
+
}, end);
|
|
12459
|
+
}
|
|
12460
|
+
static _readField(tag, obj, pbf) {
|
|
12461
|
+
if (tag === 1)
|
|
12462
|
+
obj.scheme = pbf.readVarint();
|
|
12463
|
+
else if (tag === 2)
|
|
12464
|
+
obj.cells = CellsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
12465
|
+
}
|
|
12466
|
+
};
|
|
12467
|
+
|
|
12468
|
+
// ../../node_modules/quadbin/dist/esm/index.js
|
|
12469
|
+
var import_tile_cover = __toESM(require_tile_cover());
|
|
12470
|
+
var B = [
|
|
12471
|
+
0x5555555555555555n,
|
|
12472
|
+
0x3333333333333333n,
|
|
12473
|
+
0x0f0f0f0f0f0f0f0fn,
|
|
12474
|
+
0x00ff00ff00ff00ffn,
|
|
12475
|
+
0x0000ffff0000ffffn,
|
|
12476
|
+
0x00000000ffffffffn
|
|
12477
|
+
];
|
|
12478
|
+
var S = [0n, 1n, 2n, 4n, 8n, 16n];
|
|
12479
|
+
function hexToBigInt(hex2) {
|
|
12480
|
+
return BigInt(`0x${hex2}`);
|
|
11762
12481
|
}
|
|
11763
|
-
function
|
|
11764
|
-
|
|
11765
|
-
return parseFeatureCollection(dataArray);
|
|
12482
|
+
function bigIntToHex(index) {
|
|
12483
|
+
return index.toString(16);
|
|
11766
12484
|
}
|
|
11767
|
-
function
|
|
11768
|
-
|
|
11769
|
-
|
|
11770
|
-
return pointToGeoJson(data, startIndex, endIndex);
|
|
11771
|
-
case "LineString":
|
|
11772
|
-
return lineStringToGeoJson(data, startIndex, endIndex);
|
|
11773
|
-
case "Polygon":
|
|
11774
|
-
return polygonToGeoJson(data, startIndex, endIndex);
|
|
11775
|
-
default:
|
|
11776
|
-
const unexpectedInput = data;
|
|
11777
|
-
throw new Error("Unsupported geometry type: ".concat(unexpectedInput === null || unexpectedInput === void 0 ? void 0 : unexpectedInput.type));
|
|
11778
|
-
}
|
|
11779
|
-
}
|
|
11780
|
-
function normalizeInput(data, type) {
|
|
11781
|
-
const isHeterogeneousType = Boolean(data.points || data.lines || data.polygons);
|
|
11782
|
-
if (!isHeterogeneousType) {
|
|
11783
|
-
data.type = type || parseType(data);
|
|
11784
|
-
return [data];
|
|
11785
|
-
}
|
|
11786
|
-
const features = [];
|
|
11787
|
-
if (data.points) {
|
|
11788
|
-
data.points.type = "Point";
|
|
11789
|
-
features.push(data.points);
|
|
11790
|
-
}
|
|
11791
|
-
if (data.lines) {
|
|
11792
|
-
data.lines.type = "LineString";
|
|
11793
|
-
features.push(data.lines);
|
|
11794
|
-
}
|
|
11795
|
-
if (data.polygons) {
|
|
11796
|
-
data.polygons.type = "Polygon";
|
|
11797
|
-
features.push(data.polygons);
|
|
11798
|
-
}
|
|
11799
|
-
return features;
|
|
11800
|
-
}
|
|
11801
|
-
function parseFeatureCollection(dataArray) {
|
|
11802
|
-
const features = [];
|
|
11803
|
-
for (const data of dataArray) {
|
|
11804
|
-
if (data.featureIds.value.length === 0) {
|
|
11805
|
-
continue;
|
|
11806
|
-
}
|
|
11807
|
-
let lastIndex = 0;
|
|
11808
|
-
let lastValue = data.featureIds.value[0];
|
|
11809
|
-
for (let i = 0; i < data.featureIds.value.length; i++) {
|
|
11810
|
-
const currValue = data.featureIds.value[i];
|
|
11811
|
-
if (currValue === lastValue) {
|
|
11812
|
-
continue;
|
|
11813
|
-
}
|
|
11814
|
-
features.push(parseFeature(data, lastIndex, i));
|
|
11815
|
-
lastIndex = i;
|
|
11816
|
-
lastValue = currValue;
|
|
11817
|
-
}
|
|
11818
|
-
features.push(parseFeature(data, lastIndex, data.featureIds.value.length));
|
|
11819
|
-
}
|
|
11820
|
-
return features;
|
|
11821
|
-
}
|
|
11822
|
-
function parseFeature(data, startIndex, endIndex) {
|
|
11823
|
-
const geometry = binaryToGeometry(data, startIndex, endIndex);
|
|
11824
|
-
const properties = parseProperties(data, startIndex, endIndex);
|
|
11825
|
-
const fields = parseFields(data, startIndex, endIndex);
|
|
11826
|
-
return {
|
|
11827
|
-
type: "Feature",
|
|
11828
|
-
geometry,
|
|
11829
|
-
properties,
|
|
11830
|
-
...fields
|
|
11831
|
-
};
|
|
11832
|
-
}
|
|
11833
|
-
function parseFields(data) {
|
|
11834
|
-
let startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
11835
|
-
let endIndex = arguments.length > 2 ? arguments[2] : void 0;
|
|
11836
|
-
return data.fields && data.fields[data.featureIds.value[startIndex]];
|
|
11837
|
-
}
|
|
11838
|
-
function parseProperties(data) {
|
|
11839
|
-
let startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
11840
|
-
let endIndex = arguments.length > 2 ? arguments[2] : void 0;
|
|
11841
|
-
const properties = Object.assign({}, data.properties[data.featureIds.value[startIndex]]);
|
|
11842
|
-
for (const key in data.numericProps) {
|
|
11843
|
-
properties[key] = data.numericProps[key].value[startIndex];
|
|
11844
|
-
}
|
|
11845
|
-
return properties;
|
|
11846
|
-
}
|
|
11847
|
-
function polygonToGeoJson(data) {
|
|
11848
|
-
let startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -Infinity;
|
|
11849
|
-
let endIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Infinity;
|
|
11850
|
-
const {
|
|
11851
|
-
positions
|
|
11852
|
-
} = data;
|
|
11853
|
-
const polygonIndices = data.polygonIndices.value.filter((x) => x >= startIndex && x <= endIndex);
|
|
11854
|
-
const primitivePolygonIndices = data.primitivePolygonIndices.value.filter((x) => x >= startIndex && x <= endIndex);
|
|
11855
|
-
const multi = polygonIndices.length > 2;
|
|
11856
|
-
if (!multi) {
|
|
11857
|
-
const coordinates2 = [];
|
|
11858
|
-
for (let i = 0; i < primitivePolygonIndices.length - 1; i++) {
|
|
11859
|
-
const startRingIndex = primitivePolygonIndices[i];
|
|
11860
|
-
const endRingIndex = primitivePolygonIndices[i + 1];
|
|
11861
|
-
const ringCoordinates = ringToGeoJson(positions, startRingIndex, endRingIndex);
|
|
11862
|
-
coordinates2.push(ringCoordinates);
|
|
11863
|
-
}
|
|
11864
|
-
return {
|
|
11865
|
-
type: "Polygon",
|
|
11866
|
-
coordinates: coordinates2
|
|
11867
|
-
};
|
|
11868
|
-
}
|
|
11869
|
-
const coordinates = [];
|
|
11870
|
-
for (let i = 0; i < polygonIndices.length - 1; i++) {
|
|
11871
|
-
const startPolygonIndex = polygonIndices[i];
|
|
11872
|
-
const endPolygonIndex = polygonIndices[i + 1];
|
|
11873
|
-
const polygonCoordinates = polygonToGeoJson(data, startPolygonIndex, endPolygonIndex).coordinates;
|
|
11874
|
-
coordinates.push(polygonCoordinates);
|
|
11875
|
-
}
|
|
11876
|
-
return {
|
|
11877
|
-
type: "MultiPolygon",
|
|
11878
|
-
coordinates
|
|
11879
|
-
};
|
|
11880
|
-
}
|
|
11881
|
-
function lineStringToGeoJson(data) {
|
|
11882
|
-
let startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -Infinity;
|
|
11883
|
-
let endIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Infinity;
|
|
11884
|
-
const {
|
|
11885
|
-
positions
|
|
11886
|
-
} = data;
|
|
11887
|
-
const pathIndices = data.pathIndices.value.filter((x) => x >= startIndex && x <= endIndex);
|
|
11888
|
-
const multi = pathIndices.length > 2;
|
|
11889
|
-
if (!multi) {
|
|
11890
|
-
const coordinates2 = ringToGeoJson(positions, pathIndices[0], pathIndices[1]);
|
|
11891
|
-
return {
|
|
11892
|
-
type: "LineString",
|
|
11893
|
-
coordinates: coordinates2
|
|
11894
|
-
};
|
|
11895
|
-
}
|
|
11896
|
-
const coordinates = [];
|
|
11897
|
-
for (let i = 0; i < pathIndices.length - 1; i++) {
|
|
11898
|
-
const ringCoordinates = ringToGeoJson(positions, pathIndices[i], pathIndices[i + 1]);
|
|
11899
|
-
coordinates.push(ringCoordinates);
|
|
11900
|
-
}
|
|
11901
|
-
return {
|
|
11902
|
-
type: "MultiLineString",
|
|
11903
|
-
coordinates
|
|
11904
|
-
};
|
|
11905
|
-
}
|
|
11906
|
-
function pointToGeoJson(data, startIndex, endIndex) {
|
|
11907
|
-
const {
|
|
11908
|
-
positions
|
|
11909
|
-
} = data;
|
|
11910
|
-
const coordinates = ringToGeoJson(positions, startIndex, endIndex);
|
|
11911
|
-
const multi = coordinates.length > 1;
|
|
11912
|
-
if (multi) {
|
|
11913
|
-
return {
|
|
11914
|
-
type: "MultiPoint",
|
|
11915
|
-
coordinates
|
|
11916
|
-
};
|
|
11917
|
-
}
|
|
11918
|
-
return {
|
|
11919
|
-
type: "Point",
|
|
11920
|
-
coordinates: coordinates[0]
|
|
11921
|
-
};
|
|
11922
|
-
}
|
|
11923
|
-
function ringToGeoJson(positions, startIndex, endIndex) {
|
|
11924
|
-
startIndex = startIndex || 0;
|
|
11925
|
-
endIndex = endIndex || positions.value.length / positions.size;
|
|
11926
|
-
const ringCoordinates = [];
|
|
11927
|
-
for (let j = startIndex; j < endIndex; j++) {
|
|
11928
|
-
const coord = Array();
|
|
11929
|
-
for (let k = j * positions.size; k < (j + 1) * positions.size; k++) {
|
|
11930
|
-
coord.push(Number(positions.value[k]));
|
|
11931
|
-
}
|
|
11932
|
-
ringCoordinates.push(coord);
|
|
11933
|
-
}
|
|
11934
|
-
return ringCoordinates;
|
|
11935
|
-
}
|
|
11936
|
-
function parseType(data) {
|
|
11937
|
-
if (data.pathIndices) {
|
|
11938
|
-
return "LineString";
|
|
11939
|
-
}
|
|
11940
|
-
if (data.polygonIndices) {
|
|
11941
|
-
return "Polygon";
|
|
11942
|
-
}
|
|
11943
|
-
return "Point";
|
|
11944
|
-
}
|
|
11945
|
-
|
|
11946
|
-
// src/layers/carto-tile-layer.ts
|
|
11947
|
-
(0, import_core.registerLoaders)([carto_vector_tile_loader_default]);
|
|
11948
|
-
var defaultTileFormat = TILE_FORMATS.BINARY;
|
|
11949
|
-
var defaultProps = {
|
|
11950
|
-
...import_geo_layers.MVTLayer.defaultProps,
|
|
11951
|
-
formatTiles: defaultTileFormat
|
|
11952
|
-
};
|
|
11953
|
-
var CartoTileLayer = class extends import_geo_layers.MVTLayer {
|
|
11954
|
-
initializeState() {
|
|
11955
|
-
super.initializeState();
|
|
11956
|
-
const binary = this.props.formatTiles === TILE_FORMATS.BINARY;
|
|
11957
|
-
this.setState({
|
|
11958
|
-
binary
|
|
11959
|
-
});
|
|
11960
|
-
}
|
|
11961
|
-
getTileData(tile) {
|
|
11962
|
-
const url = (0, import_geo_layers._getURLFromTemplate)(this.state.data, tile);
|
|
11963
|
-
if (!url) {
|
|
11964
|
-
return Promise.reject("Invalid URL");
|
|
11965
|
-
}
|
|
11966
|
-
let loadOptions = this.getLoadOptions();
|
|
11967
|
-
const {
|
|
11968
|
-
fetch: fetch2,
|
|
11969
|
-
formatTiles
|
|
11970
|
-
} = this.props;
|
|
11971
|
-
const {
|
|
11972
|
-
signal
|
|
11973
|
-
} = tile;
|
|
11974
|
-
if (formatTiles === TILE_FORMATS.BINARY) {
|
|
11975
|
-
loadOptions = {
|
|
11976
|
-
...loadOptions,
|
|
11977
|
-
mimeType: "application/vnd.carto-vector-tile"
|
|
11978
|
-
};
|
|
11979
|
-
}
|
|
11980
|
-
return fetch2(url, {
|
|
11981
|
-
propName: "data",
|
|
11982
|
-
layer: this,
|
|
11983
|
-
loadOptions,
|
|
11984
|
-
signal
|
|
11985
|
-
});
|
|
11986
|
-
}
|
|
11987
|
-
renderSubLayers(props) {
|
|
11988
|
-
if (props.data === null) {
|
|
11989
|
-
return null;
|
|
11990
|
-
}
|
|
11991
|
-
const tileBbox = props.tile.bbox;
|
|
11992
|
-
const {
|
|
11993
|
-
west,
|
|
11994
|
-
south,
|
|
11995
|
-
east,
|
|
11996
|
-
north
|
|
11997
|
-
} = tileBbox;
|
|
11998
|
-
const subLayerProps = {
|
|
11999
|
-
...props,
|
|
12000
|
-
autoHighlight: false,
|
|
12001
|
-
extensions: [new import_extensions.ClipExtension(), ...props.extensions || []],
|
|
12002
|
-
clipBounds: [west, south, east, north]
|
|
12003
|
-
};
|
|
12004
|
-
const subLayer = new import_layers.GeoJsonLayer(subLayerProps);
|
|
12005
|
-
return subLayer;
|
|
12006
|
-
}
|
|
12007
|
-
getPickingInfo(params) {
|
|
12008
|
-
const info = super.getPickingInfo(params);
|
|
12009
|
-
if (this.state.binary && info.index !== -1) {
|
|
12010
|
-
const {
|
|
12011
|
-
data
|
|
12012
|
-
} = params.sourceLayer.props;
|
|
12013
|
-
info.object = binaryToGeojson(data, {
|
|
12014
|
-
globalFeatureId: info.index
|
|
12015
|
-
});
|
|
12016
|
-
}
|
|
12017
|
-
return info;
|
|
12018
|
-
}
|
|
12019
|
-
};
|
|
12020
|
-
__publicField(CartoTileLayer, "layerName", "CartoTileLayer");
|
|
12021
|
-
__publicField(CartoTileLayer, "defaultProps", defaultProps);
|
|
12022
|
-
|
|
12023
|
-
// src/layers/h3-tile-layer.ts
|
|
12024
|
-
var import_core3 = __toESM(require_core());
|
|
12025
|
-
var import_geo_layers4 = __toESM(require_geo_layers());
|
|
12026
|
-
|
|
12027
|
-
// src/layers/h3-tileset-2d.ts
|
|
12028
|
-
var import_geo_layers2 = __toESM(require_geo_layers());
|
|
12029
|
-
var import_h3_js = __toESM(require_h3_js());
|
|
12030
|
-
function getHexagonsInBoundingBox({
|
|
12031
|
-
west,
|
|
12032
|
-
north,
|
|
12033
|
-
east,
|
|
12034
|
-
south
|
|
12035
|
-
}, resolution) {
|
|
12036
|
-
const longitudeSpan = Math.abs(east - west);
|
|
12037
|
-
if (longitudeSpan > 180) {
|
|
12038
|
-
const nSegments = Math.ceil(longitudeSpan / 180);
|
|
12039
|
-
let h3Indices2 = [];
|
|
12040
|
-
for (let s = 0; s < nSegments; s++) {
|
|
12041
|
-
const segmentEast = east + s * 180;
|
|
12042
|
-
const segmentWest = Math.min(segmentEast + 179.9999999, west);
|
|
12043
|
-
h3Indices2 = h3Indices2.concat(getHexagonsInBoundingBox({
|
|
12044
|
-
west: segmentWest,
|
|
12045
|
-
north,
|
|
12046
|
-
east: segmentEast,
|
|
12047
|
-
south
|
|
12048
|
-
}, resolution));
|
|
12049
|
-
}
|
|
12050
|
-
return [...new Set(h3Indices2)];
|
|
12051
|
-
}
|
|
12052
|
-
const oversample = 2;
|
|
12053
|
-
const h3Indices = (0, import_h3_js.polygonToCells)([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
|
|
12054
|
-
return oversample ? [...new Set(h3Indices.map((i) => (0, import_h3_js.cellToParent)(i, resolution)))] : h3Indices;
|
|
12055
|
-
}
|
|
12056
|
-
function tileToBoundingBox(index) {
|
|
12057
|
-
const coordinates = (0, import_h3_js.cellToBoundary)(index);
|
|
12058
|
-
const latitudes = coordinates.map((c) => c[0]);
|
|
12059
|
-
const longitudes = coordinates.map((c) => c[1]);
|
|
12060
|
-
const west = Math.min(...longitudes);
|
|
12061
|
-
const south = Math.min(...latitudes);
|
|
12062
|
-
const east = Math.max(...longitudes);
|
|
12063
|
-
const north = Math.max(...latitudes);
|
|
12064
|
-
return {
|
|
12065
|
-
west,
|
|
12066
|
-
south,
|
|
12067
|
-
east,
|
|
12068
|
-
north
|
|
12069
|
-
};
|
|
12070
|
-
}
|
|
12071
|
-
var BIAS = 2;
|
|
12072
|
-
function getHexagonResolution(viewport) {
|
|
12073
|
-
const hexagonScaleFactor = 2 / 3 * viewport.zoom;
|
|
12074
|
-
const latitudeScaleFactor = Math.log(1 / Math.cos(Math.PI * viewport.latitude / 180));
|
|
12075
|
-
return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));
|
|
12076
|
-
}
|
|
12077
|
-
var H3Tileset2D = class extends import_geo_layers2._Tileset2D {
|
|
12078
|
-
getTileIndices({
|
|
12079
|
-
viewport,
|
|
12080
|
-
minZoom,
|
|
12081
|
-
maxZoom
|
|
12082
|
-
}) {
|
|
12083
|
-
if (viewport.latitude === void 0)
|
|
12084
|
-
return [];
|
|
12085
|
-
const [east, south, west, north] = viewport.getBounds();
|
|
12086
|
-
let z = getHexagonResolution(viewport);
|
|
12087
|
-
let indices;
|
|
12088
|
-
if (typeof minZoom === "number" && Number.isFinite(minZoom) && z < minZoom) {
|
|
12089
|
-
return [];
|
|
12090
|
-
}
|
|
12091
|
-
if (typeof maxZoom === "number" && Number.isFinite(maxZoom) && z > maxZoom) {
|
|
12092
|
-
z = maxZoom;
|
|
12093
|
-
const center = (0, import_h3_js.latLngToCell)(viewport.latitude, viewport.longitude, maxZoom);
|
|
12094
|
-
indices = (0, import_h3_js.gridDisk)(center, 1);
|
|
12095
|
-
} else {
|
|
12096
|
-
indices = getHexagonsInBoundingBox({
|
|
12097
|
-
west,
|
|
12098
|
-
north,
|
|
12099
|
-
east,
|
|
12100
|
-
south
|
|
12101
|
-
}, z);
|
|
12102
|
-
}
|
|
12103
|
-
return indices.map((i) => ({
|
|
12104
|
-
i
|
|
12105
|
-
}));
|
|
12106
|
-
}
|
|
12107
|
-
getTileId({
|
|
12108
|
-
i
|
|
12109
|
-
}) {
|
|
12110
|
-
return i;
|
|
12111
|
-
}
|
|
12112
|
-
getTileMetadata({
|
|
12113
|
-
i
|
|
12114
|
-
}) {
|
|
12115
|
-
return {
|
|
12116
|
-
bbox: tileToBoundingBox(i)
|
|
12117
|
-
};
|
|
12118
|
-
}
|
|
12119
|
-
getTileZoom({
|
|
12120
|
-
i
|
|
12121
|
-
}) {
|
|
12122
|
-
return (0, import_h3_js.getResolution)(i);
|
|
12123
|
-
}
|
|
12124
|
-
getParentIndex(index) {
|
|
12125
|
-
const resolution = (0, import_h3_js.getResolution)(index.i);
|
|
12126
|
-
const i = (0, import_h3_js.cellToParent)(index.i, resolution - 1);
|
|
12127
|
-
return {
|
|
12128
|
-
i
|
|
12129
|
-
};
|
|
12130
|
-
}
|
|
12131
|
-
};
|
|
12132
|
-
|
|
12133
|
-
// src/layers/spatial-index-tile-layer.ts
|
|
12134
|
-
var import_core2 = __toESM(require_core2());
|
|
12135
|
-
|
|
12136
|
-
// src/layers/schema/carto-raster-tile.ts
|
|
12137
|
-
var ARRAY_TYPES = {
|
|
12138
|
-
uint8: Uint8Array,
|
|
12139
|
-
uint16: Uint16Array,
|
|
12140
|
-
uint32: Uint32Array,
|
|
12141
|
-
uint64: BigUint64Array,
|
|
12142
|
-
int8: Int8Array,
|
|
12143
|
-
int16: Int16Array,
|
|
12144
|
-
int32: Int32Array,
|
|
12145
|
-
int64: BigInt64Array,
|
|
12146
|
-
float32: Float32Array,
|
|
12147
|
-
float64: Float64Array
|
|
12148
|
-
};
|
|
12149
|
-
var BandReader = class {
|
|
12150
|
-
static read(pbf, end) {
|
|
12151
|
-
return pbf.readFields(BandReader._readField, {
|
|
12152
|
-
name: "",
|
|
12153
|
-
type: "",
|
|
12154
|
-
data: null
|
|
12155
|
-
}, end);
|
|
12156
|
-
}
|
|
12157
|
-
static _readField(tag, obj, pbf) {
|
|
12158
|
-
if (tag === 1)
|
|
12159
|
-
obj.name = pbf.readString();
|
|
12160
|
-
else if (tag === 2)
|
|
12161
|
-
obj.type = pbf.readString();
|
|
12162
|
-
else if (tag === 3) {
|
|
12163
|
-
const TypedArray = ARRAY_TYPES[obj.type];
|
|
12164
|
-
if (!TypedArray) {
|
|
12165
|
-
throw Error(`Invalid data type: ${obj.type}`);
|
|
12166
|
-
}
|
|
12167
|
-
obj.data = {};
|
|
12168
|
-
readPackedTypedArray(TypedArray, pbf, obj.data);
|
|
12169
|
-
}
|
|
12170
|
-
}
|
|
12171
|
-
};
|
|
12172
|
-
var TileReader2 = class {
|
|
12173
|
-
static read(pbf, end) {
|
|
12174
|
-
return pbf.readFields(TileReader2._readField, {
|
|
12175
|
-
blockWidth: 0,
|
|
12176
|
-
blockHeight: 0,
|
|
12177
|
-
bands: []
|
|
12178
|
-
}, end);
|
|
12179
|
-
}
|
|
12180
|
-
static _readField(tag, obj, pbf) {
|
|
12181
|
-
if (tag === 1)
|
|
12182
|
-
obj.blockWidth = pbf.readVarint();
|
|
12183
|
-
else if (tag === 2)
|
|
12184
|
-
obj.blockHeight = pbf.readVarint();
|
|
12185
|
-
else if (tag === 3)
|
|
12186
|
-
obj.bands.push(BandReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
12187
|
-
}
|
|
12188
|
-
};
|
|
12189
|
-
|
|
12190
|
-
// src/layers/schema/carto-raster-tile-loader.ts
|
|
12191
|
-
var CartoRasterTileLoader = {
|
|
12192
|
-
name: "CARTO Raster Tile",
|
|
12193
|
-
version: "1",
|
|
12194
|
-
id: "cartoRasterTile",
|
|
12195
|
-
module: "carto",
|
|
12196
|
-
extensions: ["pbf"],
|
|
12197
|
-
mimeTypes: ["application/vnd.carto-raster-tile"],
|
|
12198
|
-
category: "geometry",
|
|
12199
|
-
worker: false,
|
|
12200
|
-
parse: async (arrayBuffer, options) => parseCartoRasterTile(arrayBuffer, options),
|
|
12201
|
-
parseSync: parseCartoRasterTile,
|
|
12202
|
-
options: {}
|
|
12203
|
-
};
|
|
12204
|
-
function parseCartoRasterTile(arrayBuffer, options) {
|
|
12205
|
-
if (!arrayBuffer)
|
|
12206
|
-
return null;
|
|
12207
|
-
const tile = parsePbf(arrayBuffer, TileReader2);
|
|
12208
|
-
const {
|
|
12209
|
-
bands,
|
|
12210
|
-
blockHeight,
|
|
12211
|
-
blockWidth
|
|
12212
|
-
} = tile;
|
|
12213
|
-
const numericProps = {};
|
|
12214
|
-
for (let i = 0; i < bands.length; i++) {
|
|
12215
|
-
const {
|
|
12216
|
-
name,
|
|
12217
|
-
data
|
|
12218
|
-
} = bands[i];
|
|
12219
|
-
numericProps[name] = data;
|
|
12220
|
-
}
|
|
12221
|
-
return {
|
|
12222
|
-
blockWidth,
|
|
12223
|
-
blockHeight,
|
|
12224
|
-
cells: {
|
|
12225
|
-
numericProps,
|
|
12226
|
-
properties: []
|
|
12227
|
-
}
|
|
12228
|
-
};
|
|
12229
|
-
}
|
|
12230
|
-
var carto_raster_tile_loader_default = CartoRasterTileLoader;
|
|
12231
|
-
|
|
12232
|
-
// src/layers/schema/carto-spatial-tile.ts
|
|
12233
|
-
var IndicesReader = class {
|
|
12234
|
-
static read(pbf, end) {
|
|
12235
|
-
return pbf.readFields(IndicesReader._readField, {
|
|
12236
|
-
value: []
|
|
12237
|
-
}, end);
|
|
12238
|
-
}
|
|
12239
|
-
static _readField(tag, obj, pbf) {
|
|
12240
|
-
if (tag === 1)
|
|
12241
|
-
readPackedTypedArray(BigUint64Array, pbf, obj);
|
|
12242
|
-
}
|
|
12243
|
-
};
|
|
12244
|
-
var CellsReader = class {
|
|
12245
|
-
static read(pbf, end) {
|
|
12246
|
-
return pbf.readFields(CellsReader._readField, {
|
|
12247
|
-
indices: null,
|
|
12248
|
-
properties: [],
|
|
12249
|
-
numericProps: {}
|
|
12250
|
-
}, end);
|
|
12251
|
-
}
|
|
12252
|
-
static _readField(tag, obj, pbf) {
|
|
12253
|
-
if (tag === 1)
|
|
12254
|
-
obj.indices = IndicesReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
12255
|
-
else if (tag === 2)
|
|
12256
|
-
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
12257
|
-
else if (tag === 3) {
|
|
12258
|
-
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
12259
|
-
obj.numericProps[entry.key] = entry.value;
|
|
12260
|
-
}
|
|
12261
|
-
}
|
|
12262
|
-
};
|
|
12263
|
-
var TileReader3 = class {
|
|
12264
|
-
static read(pbf, end) {
|
|
12265
|
-
return pbf.readFields(TileReader3._readField, {
|
|
12266
|
-
scheme: 0,
|
|
12267
|
-
cells: null
|
|
12268
|
-
}, end);
|
|
12269
|
-
}
|
|
12270
|
-
static _readField(tag, obj, pbf) {
|
|
12271
|
-
if (tag === 1)
|
|
12272
|
-
obj.scheme = pbf.readVarint();
|
|
12273
|
-
else if (tag === 2)
|
|
12274
|
-
obj.cells = CellsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
12275
|
-
}
|
|
12276
|
-
};
|
|
12277
|
-
|
|
12278
|
-
// ../../node_modules/quadbin/dist/esm/index.js
|
|
12279
|
-
var import_tile_cover = __toESM(require_tile_cover());
|
|
12280
|
-
var B = [
|
|
12281
|
-
0x5555555555555555n,
|
|
12282
|
-
0x3333333333333333n,
|
|
12283
|
-
0x0f0f0f0f0f0f0f0fn,
|
|
12284
|
-
0x00ff00ff00ff00ffn,
|
|
12285
|
-
0x0000ffff0000ffffn,
|
|
12286
|
-
0x00000000ffffffffn
|
|
12287
|
-
];
|
|
12288
|
-
var S = [0n, 1n, 2n, 4n, 8n, 16n];
|
|
12289
|
-
function hexToBigInt(hex2) {
|
|
12290
|
-
return BigInt(`0x${hex2}`);
|
|
12291
|
-
}
|
|
12292
|
-
function bigIntToHex(index) {
|
|
12293
|
-
return index.toString(16);
|
|
12294
|
-
}
|
|
12295
|
-
function tileToCell(tile) {
|
|
12296
|
-
if (tile.z < 0 || tile.z > 26) {
|
|
12297
|
-
throw new Error("Wrong zoom");
|
|
12485
|
+
function tileToCell(tile) {
|
|
12486
|
+
if (tile.z < 0 || tile.z > 26) {
|
|
12487
|
+
throw new Error("Wrong zoom");
|
|
12298
12488
|
}
|
|
12299
12489
|
const z = BigInt(tile.z);
|
|
12300
12490
|
let x = BigInt(tile.x) << 32n - z;
|
|
@@ -12346,7 +12536,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12346
12536
|
const count = cells.indices.value.length;
|
|
12347
12537
|
const spatial = [];
|
|
12348
12538
|
for (let i = 0; i < count; i++) {
|
|
12349
|
-
const
|
|
12539
|
+
const id4 = scheme === "h3" ? bigIntToHex(cells.indices.value[i]) : cells.indices.value[i];
|
|
12350
12540
|
const properties = {
|
|
12351
12541
|
...cells.properties[i]
|
|
12352
12542
|
};
|
|
@@ -12354,7 +12544,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12354
12544
|
properties[key] = cells.numericProps[key].value[i];
|
|
12355
12545
|
}
|
|
12356
12546
|
spatial.push({
|
|
12357
|
-
id,
|
|
12547
|
+
id: id4,
|
|
12358
12548
|
properties
|
|
12359
12549
|
});
|
|
12360
12550
|
}
|
|
@@ -12362,22 +12552,26 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12362
12552
|
}
|
|
12363
12553
|
|
|
12364
12554
|
// src/layers/schema/carto-spatial-tile-loader.ts
|
|
12555
|
+
var VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
12556
|
+
var id2 = "cartoSpatialTile";
|
|
12557
|
+
var DEFAULT_OPTIONS2 = {
|
|
12558
|
+
cartoSpatialTile: {
|
|
12559
|
+
scheme: "quadbin",
|
|
12560
|
+
workerUrl: getWorkerUrl(id2, VERSION2)
|
|
12561
|
+
}
|
|
12562
|
+
};
|
|
12365
12563
|
var CartoSpatialTileLoader = {
|
|
12366
12564
|
name: "CARTO Spatial Tile",
|
|
12367
|
-
version:
|
|
12368
|
-
id:
|
|
12565
|
+
version: VERSION2,
|
|
12566
|
+
id: id2,
|
|
12369
12567
|
module: "carto",
|
|
12370
12568
|
extensions: ["pbf"],
|
|
12371
12569
|
mimeTypes: ["application/vnd.carto-spatial-tile"],
|
|
12372
12570
|
category: "geometry",
|
|
12373
|
-
worker: false,
|
|
12374
12571
|
parse: async (arrayBuffer, options) => parseCartoSpatialTile(arrayBuffer, options),
|
|
12375
12572
|
parseSync: parseCartoSpatialTile,
|
|
12376
|
-
|
|
12377
|
-
|
|
12378
|
-
scheme: "quadbin"
|
|
12379
|
-
}
|
|
12380
|
-
}
|
|
12573
|
+
worker: true,
|
|
12574
|
+
options: DEFAULT_OPTIONS2
|
|
12381
12575
|
};
|
|
12382
12576
|
function parseCartoSpatialTile(arrayBuffer, options) {
|
|
12383
12577
|
if (!arrayBuffer)
|
|
@@ -12396,15 +12590,15 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12396
12590
|
var carto_spatial_tile_loader_default = CartoSpatialTileLoader;
|
|
12397
12591
|
|
|
12398
12592
|
// src/layers/spatial-index-tile-layer.ts
|
|
12399
|
-
var
|
|
12593
|
+
var import_geo_layers2 = __toESM(require_geo_layers());
|
|
12400
12594
|
(0, import_core2.registerLoaders)([carto_raster_tile_loader_default, carto_spatial_tile_loader_default]);
|
|
12401
12595
|
function isFeatureIdDefined(value) {
|
|
12402
12596
|
return value !== void 0 && value !== null && value !== "";
|
|
12403
12597
|
}
|
|
12404
|
-
var
|
|
12598
|
+
var defaultProps = {
|
|
12405
12599
|
aggregationResLevel: 4
|
|
12406
12600
|
};
|
|
12407
|
-
var SpatialIndexTileLayer = class extends
|
|
12601
|
+
var SpatialIndexTileLayer = class extends import_geo_layers2.TileLayer {
|
|
12408
12602
|
updateState(params) {
|
|
12409
12603
|
const {
|
|
12410
12604
|
props,
|
|
@@ -12475,7 +12669,47 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12475
12669
|
}
|
|
12476
12670
|
};
|
|
12477
12671
|
__publicField(SpatialIndexTileLayer, "layerName", "SpatialIndexTileLayer");
|
|
12478
|
-
__publicField(SpatialIndexTileLayer, "defaultProps",
|
|
12672
|
+
__publicField(SpatialIndexTileLayer, "defaultProps", defaultProps);
|
|
12673
|
+
|
|
12674
|
+
// src/sources/common.ts
|
|
12675
|
+
var SOURCE_DEFAULTS = {
|
|
12676
|
+
apiBaseUrl: "https://gcp-us-east1.api.carto.com",
|
|
12677
|
+
clientId: "deck-gl-carto",
|
|
12678
|
+
format: "tilejson",
|
|
12679
|
+
formatTiles: "binary",
|
|
12680
|
+
headers: {}
|
|
12681
|
+
};
|
|
12682
|
+
var DEFAULT_CLIENT = "deck-gl-carto";
|
|
12683
|
+
var V3_MINOR_VERSION = "3.2";
|
|
12684
|
+
var MAX_GET_LENGTH = 8192;
|
|
12685
|
+
var DEFAULT_PARAMETERS = {
|
|
12686
|
+
client: DEFAULT_CLIENT,
|
|
12687
|
+
v: V3_MINOR_VERSION
|
|
12688
|
+
};
|
|
12689
|
+
var DEFAULT_HEADERS = {
|
|
12690
|
+
Accept: "application/json",
|
|
12691
|
+
"Content-Type": "application/json"
|
|
12692
|
+
};
|
|
12693
|
+
var TilejsonPropType = {
|
|
12694
|
+
type: "object",
|
|
12695
|
+
value: null,
|
|
12696
|
+
validate: (value, propType) => propType.optional && value === null || typeof value === "object" && Array.isArray(value.tiles) && value.tiles.every((url) => typeof url === "string"),
|
|
12697
|
+
compare: 2,
|
|
12698
|
+
async: true
|
|
12699
|
+
};
|
|
12700
|
+
|
|
12701
|
+
// src/layers/utils.ts
|
|
12702
|
+
function injectAccessToken(loadOptions, accessToken) {
|
|
12703
|
+
if (!loadOptions?.fetch?.headers?.Authorization) {
|
|
12704
|
+
loadOptions.fetch = {
|
|
12705
|
+
...loadOptions.fetch,
|
|
12706
|
+
headers: {
|
|
12707
|
+
...loadOptions.fetch?.headers,
|
|
12708
|
+
Authorization: `Bearer ${accessToken}`
|
|
12709
|
+
}
|
|
12710
|
+
};
|
|
12711
|
+
}
|
|
12712
|
+
}
|
|
12479
12713
|
|
|
12480
12714
|
// src/layers/h3-tile-layer.ts
|
|
12481
12715
|
var renderSubLayers = (props) => {
|
|
@@ -12487,45 +12721,41 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12487
12721
|
} = props.tile;
|
|
12488
12722
|
if (!data || !data.length)
|
|
12489
12723
|
return null;
|
|
12490
|
-
return new
|
|
12724
|
+
return new import_geo_layers3.H3HexagonLayer(props, {
|
|
12491
12725
|
getHexagon: (d) => d.id,
|
|
12492
12726
|
centerHexagon: index,
|
|
12493
12727
|
highPrecision: true
|
|
12494
12728
|
});
|
|
12495
12729
|
};
|
|
12496
|
-
var
|
|
12497
|
-
aggregationResLevel: 4
|
|
12730
|
+
var defaultProps2 = {
|
|
12731
|
+
aggregationResLevel: 4,
|
|
12732
|
+
data: TilejsonPropType
|
|
12498
12733
|
};
|
|
12499
12734
|
var H3TileLayer = class extends import_core3.CompositeLayer {
|
|
12500
12735
|
initializeState() {
|
|
12501
|
-
|
|
12502
|
-
|
|
12503
|
-
|
|
12504
|
-
|
|
12505
|
-
|
|
12506
|
-
|
|
12507
|
-
|
|
12508
|
-
|
|
12509
|
-
|
|
12510
|
-
|
|
12511
|
-
|
|
12512
|
-
data
|
|
12513
|
-
} = this.props;
|
|
12514
|
-
const tileJSON = data;
|
|
12515
|
-
data = tileJSON.tiles;
|
|
12516
|
-
this.setState({
|
|
12517
|
-
data,
|
|
12518
|
-
tileJSON
|
|
12519
|
-
});
|
|
12520
|
-
}
|
|
12736
|
+
import_geo_layers3.H3HexagonLayer._checkH3Lib();
|
|
12737
|
+
}
|
|
12738
|
+
getLoadOptions() {
|
|
12739
|
+
const loadOptions = super.getLoadOptions() || {};
|
|
12740
|
+
const tileJSON = this.props.data;
|
|
12741
|
+
injectAccessToken(loadOptions, tileJSON.accessToken);
|
|
12742
|
+
loadOptions.cartoSpatialTile = {
|
|
12743
|
+
...loadOptions.cartoSpatialTile,
|
|
12744
|
+
scheme: "h3"
|
|
12745
|
+
};
|
|
12746
|
+
return loadOptions;
|
|
12521
12747
|
}
|
|
12522
12748
|
renderLayers() {
|
|
12749
|
+
const tileJSON = this.props.data;
|
|
12750
|
+
if (!tileJSON)
|
|
12751
|
+
return null;
|
|
12523
12752
|
const {
|
|
12524
|
-
data
|
|
12525
|
-
|
|
12526
|
-
|
|
12527
|
-
|
|
12528
|
-
|
|
12753
|
+
tiles: data
|
|
12754
|
+
} = tileJSON;
|
|
12755
|
+
let {
|
|
12756
|
+
minresolution,
|
|
12757
|
+
maxresolution
|
|
12758
|
+
} = tileJSON;
|
|
12529
12759
|
if (this.props.minZoom) {
|
|
12530
12760
|
minresolution = Math.max(minresolution, getHexagonResolution({
|
|
12531
12761
|
zoom: this.props.minZoom,
|
|
@@ -12538,31 +12768,27 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12538
12768
|
latitude: 0
|
|
12539
12769
|
}));
|
|
12540
12770
|
}
|
|
12541
|
-
return [
|
|
12542
|
-
|
|
12543
|
-
|
|
12544
|
-
|
|
12545
|
-
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12549
|
-
|
|
12550
|
-
|
|
12551
|
-
|
|
12552
|
-
},
|
|
12553
|
-
mimeType: "application/vnd.carto-spatial-tile"
|
|
12554
|
-
}
|
|
12555
|
-
})];
|
|
12771
|
+
return [
|
|
12772
|
+
new SpatialIndexTileLayer(this.props, {
|
|
12773
|
+
id: `h3-tile-layer-${this.props.id}`,
|
|
12774
|
+
data,
|
|
12775
|
+
TilesetClass: H3Tileset2D,
|
|
12776
|
+
renderSubLayers,
|
|
12777
|
+
minZoom: minresolution,
|
|
12778
|
+
maxZoom: maxresolution,
|
|
12779
|
+
loadOptions: this.getLoadOptions()
|
|
12780
|
+
})
|
|
12781
|
+
];
|
|
12556
12782
|
}
|
|
12557
12783
|
};
|
|
12558
12784
|
__publicField(H3TileLayer, "layerName", "H3TileLayer");
|
|
12559
|
-
__publicField(H3TileLayer, "defaultProps",
|
|
12785
|
+
__publicField(H3TileLayer, "defaultProps", defaultProps2);
|
|
12560
12786
|
|
|
12561
12787
|
// src/layers/quadbin-tile-layer.ts
|
|
12562
12788
|
var import_core4 = __toESM(require_core());
|
|
12563
12789
|
|
|
12564
12790
|
// src/layers/quadbin-layer.ts
|
|
12565
|
-
var
|
|
12791
|
+
var import_geo_layers4 = __toESM(require_geo_layers());
|
|
12566
12792
|
|
|
12567
12793
|
// ../../node_modules/@math.gl/web-mercator/dist/esm/web-mercator-utils.js
|
|
12568
12794
|
var PI = Math.PI;
|
|
@@ -12603,13 +12829,13 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12603
12829
|
}
|
|
12604
12830
|
|
|
12605
12831
|
// src/layers/quadbin-layer.ts
|
|
12606
|
-
var
|
|
12832
|
+
var defaultProps3 = {
|
|
12607
12833
|
getQuadbin: {
|
|
12608
12834
|
type: "accessor",
|
|
12609
12835
|
value: (d) => d.quadbin
|
|
12610
12836
|
}
|
|
12611
12837
|
};
|
|
12612
|
-
var QuadbinLayer = class extends
|
|
12838
|
+
var QuadbinLayer = class extends import_geo_layers4._GeoCellLayer {
|
|
12613
12839
|
indexToBounds() {
|
|
12614
12840
|
const {
|
|
12615
12841
|
data,
|
|
@@ -12621,16 +12847,19 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12621
12847
|
data,
|
|
12622
12848
|
_normalize: false,
|
|
12623
12849
|
positionFormat: "XY",
|
|
12624
|
-
getPolygon: (x, objectInfo) => getQuadbinPolygon(getQuadbin(x, objectInfo), coverage)
|
|
12850
|
+
getPolygon: (x, objectInfo) => getQuadbinPolygon(getQuadbin(x, objectInfo), coverage),
|
|
12851
|
+
updateTriggers: {
|
|
12852
|
+
getPolygon: coverage
|
|
12853
|
+
}
|
|
12625
12854
|
};
|
|
12626
12855
|
}
|
|
12627
12856
|
};
|
|
12628
12857
|
__publicField(QuadbinLayer, "layerName", "QuadbinLayer");
|
|
12629
|
-
__publicField(QuadbinLayer, "defaultProps",
|
|
12858
|
+
__publicField(QuadbinLayer, "defaultProps", defaultProps3);
|
|
12630
12859
|
|
|
12631
12860
|
// src/layers/quadbin-tileset-2d.ts
|
|
12632
|
-
var
|
|
12633
|
-
var QuadbinTileset2D = class extends
|
|
12861
|
+
var import_geo_layers5 = __toESM(require_geo_layers());
|
|
12862
|
+
var QuadbinTileset2D = class extends import_geo_layers5._Tileset2D {
|
|
12634
12863
|
getTileIndices(opts) {
|
|
12635
12864
|
return super.getTileIndices(opts).map(tileToCell).map((q) => ({
|
|
12636
12865
|
q,
|
|
@@ -12674,62 +12903,50 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12674
12903
|
getQuadbin: isBigInt ? (d) => d.id : (d) => hexToBigInt(d.id)
|
|
12675
12904
|
});
|
|
12676
12905
|
};
|
|
12677
|
-
var
|
|
12678
|
-
aggregationResLevel: 6
|
|
12906
|
+
var defaultProps4 = {
|
|
12907
|
+
aggregationResLevel: 6,
|
|
12908
|
+
data: TilejsonPropType
|
|
12679
12909
|
};
|
|
12680
12910
|
var QuadbinTileLayer = class extends import_core4.CompositeLayer {
|
|
12681
|
-
|
|
12682
|
-
|
|
12683
|
-
|
|
12684
|
-
|
|
12685
|
-
|
|
12686
|
-
|
|
12687
|
-
|
|
12688
|
-
|
|
12689
|
-
|
|
12690
|
-
if (changeFlags.dataChanged) {
|
|
12691
|
-
let {
|
|
12692
|
-
data
|
|
12693
|
-
} = this.props;
|
|
12694
|
-
const tileJSON = data;
|
|
12695
|
-
data = tileJSON.tiles;
|
|
12696
|
-
this.setState({
|
|
12697
|
-
data,
|
|
12698
|
-
tileJSON
|
|
12699
|
-
});
|
|
12700
|
-
}
|
|
12911
|
+
getLoadOptions() {
|
|
12912
|
+
const loadOptions = super.getLoadOptions() || {};
|
|
12913
|
+
const tileJSON = this.props.data;
|
|
12914
|
+
injectAccessToken(loadOptions, tileJSON.accessToken);
|
|
12915
|
+
loadOptions.cartoSpatialTile = {
|
|
12916
|
+
...loadOptions.cartoSpatialTile,
|
|
12917
|
+
scheme: "quadbin"
|
|
12918
|
+
};
|
|
12919
|
+
return loadOptions;
|
|
12701
12920
|
}
|
|
12702
12921
|
renderLayers() {
|
|
12922
|
+
const tileJSON = this.props.data;
|
|
12923
|
+
if (!tileJSON)
|
|
12924
|
+
return null;
|
|
12703
12925
|
const {
|
|
12704
|
-
data,
|
|
12705
|
-
|
|
12706
|
-
} =
|
|
12707
|
-
|
|
12708
|
-
|
|
12709
|
-
|
|
12710
|
-
|
|
12711
|
-
|
|
12712
|
-
|
|
12713
|
-
|
|
12714
|
-
|
|
12715
|
-
|
|
12716
|
-
|
|
12717
|
-
scheme: "quadbin"
|
|
12718
|
-
},
|
|
12719
|
-
mimeType: "application/vnd.carto-spatial-tile"
|
|
12720
|
-
}
|
|
12721
|
-
})];
|
|
12926
|
+
tiles: data,
|
|
12927
|
+
maxresolution: maxZoom
|
|
12928
|
+
} = tileJSON;
|
|
12929
|
+
return [
|
|
12930
|
+
new SpatialIndexTileLayer(this.props, {
|
|
12931
|
+
id: `quadbin-tile-layer-${this.props.id}`,
|
|
12932
|
+
data,
|
|
12933
|
+
TilesetClass: QuadbinTileset2D,
|
|
12934
|
+
renderSubLayers: renderSubLayers2,
|
|
12935
|
+
maxZoom,
|
|
12936
|
+
loadOptions: this.getLoadOptions()
|
|
12937
|
+
})
|
|
12938
|
+
];
|
|
12722
12939
|
}
|
|
12723
12940
|
};
|
|
12724
12941
|
__publicField(QuadbinTileLayer, "layerName", "QuadbinTileLayer");
|
|
12725
|
-
__publicField(QuadbinTileLayer, "defaultProps",
|
|
12942
|
+
__publicField(QuadbinTileLayer, "defaultProps", defaultProps4);
|
|
12726
12943
|
|
|
12727
12944
|
// src/layers/raster-tile-layer.ts
|
|
12728
|
-
var
|
|
12945
|
+
var import_core6 = __toESM(require_core());
|
|
12729
12946
|
|
|
12730
12947
|
// src/layers/raster-layer.ts
|
|
12731
|
-
var
|
|
12732
|
-
var
|
|
12948
|
+
var import_core5 = __toESM(require_core());
|
|
12949
|
+
var import_layers = __toESM(require_layers());
|
|
12733
12950
|
|
|
12734
12951
|
// src/layers/raster-layer-vertex.glsl.ts
|
|
12735
12952
|
var raster_layer_vertex_glsl_default = `#version 300 es
|
|
@@ -12830,37 +13047,14 @@ void main(void) {
|
|
|
12830
13047
|
}
|
|
12831
13048
|
`;
|
|
12832
13049
|
|
|
12833
|
-
// src/utils.ts
|
|
12834
|
-
var import_core5 = __toESM(require_core());
|
|
12835
|
-
function assert2(condition, message) {
|
|
12836
|
-
import_core5.log.assert(condition, message);
|
|
12837
|
-
}
|
|
12838
|
-
function createBinaryProxy(data, index) {
|
|
12839
|
-
const {
|
|
12840
|
-
properties,
|
|
12841
|
-
numericProps
|
|
12842
|
-
} = data;
|
|
12843
|
-
return new Proxy(properties[index] || {}, {
|
|
12844
|
-
get(target, property, receiver) {
|
|
12845
|
-
if (property in numericProps) {
|
|
12846
|
-
return numericProps[property].value[index];
|
|
12847
|
-
}
|
|
12848
|
-
return target[property];
|
|
12849
|
-
},
|
|
12850
|
-
has(target, property) {
|
|
12851
|
-
return property in numericProps || property in target;
|
|
12852
|
-
}
|
|
12853
|
-
});
|
|
12854
|
-
}
|
|
12855
|
-
|
|
12856
13050
|
// src/layers/raster-layer.ts
|
|
12857
|
-
var
|
|
12858
|
-
...
|
|
13051
|
+
var defaultProps5 = {
|
|
13052
|
+
...import_layers.ColumnLayer.defaultProps,
|
|
12859
13053
|
extruded: false,
|
|
12860
13054
|
diskResolution: 4,
|
|
12861
13055
|
vertices: [[-0.5, -0.5], [0.5, -0.5], [0.5, 0.5], [-0.5, 0.5]]
|
|
12862
13056
|
};
|
|
12863
|
-
var RasterColumnLayer = class extends
|
|
13057
|
+
var RasterColumnLayer = class extends import_layers.ColumnLayer {
|
|
12864
13058
|
getShaders() {
|
|
12865
13059
|
const shaders = super.getShaders();
|
|
12866
13060
|
return {
|
|
@@ -12896,7 +13090,7 @@ void main(void) {
|
|
|
12896
13090
|
}
|
|
12897
13091
|
};
|
|
12898
13092
|
__publicField(RasterColumnLayer, "layerName", "RasterColumnLayer");
|
|
12899
|
-
var RasterLayer = class extends
|
|
13093
|
+
var RasterLayer = class extends import_core5.CompositeLayer {
|
|
12900
13094
|
renderLayers() {
|
|
12901
13095
|
const {
|
|
12902
13096
|
data,
|
|
@@ -12913,7 +13107,7 @@ void main(void) {
|
|
|
12913
13107
|
blockWidth,
|
|
12914
13108
|
blockHeight
|
|
12915
13109
|
} = data;
|
|
12916
|
-
|
|
13110
|
+
assert(blockWidth === blockHeight, `blockWidth (${blockWidth}) must equal blockHeight (${blockHeight})`);
|
|
12917
13111
|
const [xOffset, yOffset, scale] = quadbinToOffset(tileIndex);
|
|
12918
13112
|
const offset = [xOffset, yOffset, scale / blockWidth];
|
|
12919
13113
|
const CellLayer = this.getSubLayerClass("column", RasterColumnLayer);
|
|
@@ -12948,60 +13142,443 @@ void main(void) {
|
|
|
12948
13142
|
}, info);
|
|
12949
13143
|
};
|
|
12950
13144
|
}
|
|
12951
|
-
};
|
|
12952
|
-
__publicField(RasterLayer, "layerName", "RasterLayer");
|
|
12953
|
-
__publicField(RasterLayer, "defaultProps",
|
|
13145
|
+
};
|
|
13146
|
+
__publicField(RasterLayer, "layerName", "RasterLayer");
|
|
13147
|
+
__publicField(RasterLayer, "defaultProps", defaultProps5);
|
|
13148
|
+
|
|
13149
|
+
// src/layers/raster-tile-layer.ts
|
|
13150
|
+
var renderSubLayers3 = (props) => {
|
|
13151
|
+
const tileIndex = props.tile?.index?.q;
|
|
13152
|
+
if (!tileIndex)
|
|
13153
|
+
return null;
|
|
13154
|
+
return new RasterLayer(props, {
|
|
13155
|
+
tileIndex
|
|
13156
|
+
});
|
|
13157
|
+
};
|
|
13158
|
+
var defaultProps6 = {
|
|
13159
|
+
data: TilejsonPropType
|
|
13160
|
+
};
|
|
13161
|
+
var RasterTileLayer = class extends import_core6.CompositeLayer {
|
|
13162
|
+
getLoadOptions() {
|
|
13163
|
+
const loadOptions = super.getLoadOptions() || {};
|
|
13164
|
+
const tileJSON = this.props.data;
|
|
13165
|
+
injectAccessToken(loadOptions, tileJSON.accessToken);
|
|
13166
|
+
return loadOptions;
|
|
13167
|
+
}
|
|
13168
|
+
renderLayers() {
|
|
13169
|
+
const tileJSON = this.props.data;
|
|
13170
|
+
if (!tileJSON)
|
|
13171
|
+
return null;
|
|
13172
|
+
const {
|
|
13173
|
+
tiles: data,
|
|
13174
|
+
minzoom: minZoom,
|
|
13175
|
+
maxzoom: maxZoom
|
|
13176
|
+
} = tileJSON;
|
|
13177
|
+
return [
|
|
13178
|
+
new SpatialIndexTileLayer(this.props, {
|
|
13179
|
+
id: `raster-tile-layer-${this.props.id}`,
|
|
13180
|
+
data,
|
|
13181
|
+
TilesetClass: QuadbinTileset2D,
|
|
13182
|
+
renderSubLayers: renderSubLayers3,
|
|
13183
|
+
minZoom,
|
|
13184
|
+
maxZoom,
|
|
13185
|
+
loadOptions: this.getLoadOptions()
|
|
13186
|
+
})
|
|
13187
|
+
];
|
|
13188
|
+
}
|
|
13189
|
+
};
|
|
13190
|
+
__publicField(RasterTileLayer, "layerName", "RasterTileLayer");
|
|
13191
|
+
__publicField(RasterTileLayer, "defaultProps", defaultProps6);
|
|
13192
|
+
|
|
13193
|
+
// src/layers/vector-tile-layer.ts
|
|
13194
|
+
var import_core7 = __toESM(require_core2());
|
|
13195
|
+
|
|
13196
|
+
// src/layers/schema/carto-vector-tile-loader.ts
|
|
13197
|
+
var import_earcut = __toESM(require_earcut());
|
|
13198
|
+
var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
13199
|
+
var id3 = "cartoVectorTile";
|
|
13200
|
+
var DEFAULT_OPTIONS3 = {
|
|
13201
|
+
cartoVectorTile: {
|
|
13202
|
+
workerUrl: getWorkerUrl(id3, VERSION3)
|
|
13203
|
+
}
|
|
13204
|
+
};
|
|
13205
|
+
var CartoVectorTileLoader = {
|
|
13206
|
+
name: "CARTO Vector Tile",
|
|
13207
|
+
version: VERSION3,
|
|
13208
|
+
id: id3,
|
|
13209
|
+
module: "carto",
|
|
13210
|
+
extensions: ["pbf"],
|
|
13211
|
+
mimeTypes: ["application/vnd.carto-vector-tile"],
|
|
13212
|
+
category: "geometry",
|
|
13213
|
+
parse: async (arrayBuffer, options) => parseCartoVectorTile(arrayBuffer, options),
|
|
13214
|
+
parseSync: parseCartoVectorTile,
|
|
13215
|
+
worker: true,
|
|
13216
|
+
options: DEFAULT_OPTIONS3
|
|
13217
|
+
};
|
|
13218
|
+
function triangulatePolygon(polygons, target, {
|
|
13219
|
+
startPosition,
|
|
13220
|
+
endPosition,
|
|
13221
|
+
indices
|
|
13222
|
+
}) {
|
|
13223
|
+
const coordLength = polygons.positions.size;
|
|
13224
|
+
const start = startPosition * coordLength;
|
|
13225
|
+
const end = endPosition * coordLength;
|
|
13226
|
+
const polygonPositions = polygons.positions.value.subarray(start, end);
|
|
13227
|
+
const holes = indices.slice(1).map((n) => n - startPosition);
|
|
13228
|
+
const triangles = (0, import_earcut.default)(polygonPositions, holes, coordLength);
|
|
13229
|
+
for (let t = 0, tl = triangles.length; t < tl; ++t) {
|
|
13230
|
+
target.push(startPosition + triangles[t]);
|
|
13231
|
+
}
|
|
13232
|
+
}
|
|
13233
|
+
function triangulate(polygons) {
|
|
13234
|
+
const {
|
|
13235
|
+
polygonIndices,
|
|
13236
|
+
positions,
|
|
13237
|
+
primitivePolygonIndices
|
|
13238
|
+
} = polygons;
|
|
13239
|
+
const triangles = [];
|
|
13240
|
+
let rangeStart = 0;
|
|
13241
|
+
for (let i = 0; i < polygonIndices.value.length - 1; i++) {
|
|
13242
|
+
const startPosition = polygonIndices.value[i];
|
|
13243
|
+
const endPosition = polygonIndices.value[i + 1];
|
|
13244
|
+
const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);
|
|
13245
|
+
const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);
|
|
13246
|
+
rangeStart = rangeEnd;
|
|
13247
|
+
triangulatePolygon(polygons, triangles, {
|
|
13248
|
+
startPosition,
|
|
13249
|
+
endPosition,
|
|
13250
|
+
indices
|
|
13251
|
+
});
|
|
13252
|
+
}
|
|
13253
|
+
polygons.triangles = {
|
|
13254
|
+
value: new Uint32Array(triangles),
|
|
13255
|
+
size: 1
|
|
13256
|
+
};
|
|
13257
|
+
}
|
|
13258
|
+
function parseCartoVectorTile(arrayBuffer, options) {
|
|
13259
|
+
if (!arrayBuffer)
|
|
13260
|
+
return null;
|
|
13261
|
+
const tile = parsePbf(arrayBuffer, TileReader2);
|
|
13262
|
+
if (tile.polygons && !tile.polygons.triangles) {
|
|
13263
|
+
triangulate(tile.polygons);
|
|
13264
|
+
}
|
|
13265
|
+
return tile;
|
|
13266
|
+
}
|
|
13267
|
+
var carto_vector_tile_loader_default = CartoVectorTileLoader;
|
|
13268
|
+
|
|
13269
|
+
// src/layers/vector-tile-layer.ts
|
|
13270
|
+
var import_extensions = __toESM(require_extensions());
|
|
13271
|
+
var import_geo_layers6 = __toESM(require_geo_layers());
|
|
13272
|
+
var import_layers2 = __toESM(require_layers());
|
|
13273
|
+
|
|
13274
|
+
// ../../node_modules/@loaders.gl/gis/dist/esm/lib/binary-to-geojson.js
|
|
13275
|
+
function binaryToGeojson(data, options) {
|
|
13276
|
+
const globalFeatureId = options === null || options === void 0 ? void 0 : options.globalFeatureId;
|
|
13277
|
+
if (globalFeatureId !== void 0) {
|
|
13278
|
+
return getSingleFeature(data, globalFeatureId);
|
|
13279
|
+
}
|
|
13280
|
+
return parseFeatures(data, options === null || options === void 0 ? void 0 : options.type);
|
|
13281
|
+
}
|
|
13282
|
+
function getSingleFeature(data, globalFeatureId) {
|
|
13283
|
+
const dataArray = normalizeInput(data);
|
|
13284
|
+
for (const data2 of dataArray) {
|
|
13285
|
+
let lastIndex = 0;
|
|
13286
|
+
let lastValue = data2.featureIds.value[0];
|
|
13287
|
+
for (let i = 0; i < data2.featureIds.value.length; i++) {
|
|
13288
|
+
const currValue = data2.featureIds.value[i];
|
|
13289
|
+
if (currValue === lastValue) {
|
|
13290
|
+
continue;
|
|
13291
|
+
}
|
|
13292
|
+
if (globalFeatureId === data2.globalFeatureIds.value[lastIndex]) {
|
|
13293
|
+
return parseFeature(data2, lastIndex, i);
|
|
13294
|
+
}
|
|
13295
|
+
lastIndex = i;
|
|
13296
|
+
lastValue = currValue;
|
|
13297
|
+
}
|
|
13298
|
+
if (globalFeatureId === data2.globalFeatureIds.value[lastIndex]) {
|
|
13299
|
+
return parseFeature(data2, lastIndex, data2.featureIds.value.length);
|
|
13300
|
+
}
|
|
13301
|
+
}
|
|
13302
|
+
throw new Error("featureId:".concat(globalFeatureId, " not found"));
|
|
13303
|
+
}
|
|
13304
|
+
function parseFeatures(data, type) {
|
|
13305
|
+
const dataArray = normalizeInput(data, type);
|
|
13306
|
+
return parseFeatureCollection(dataArray);
|
|
13307
|
+
}
|
|
13308
|
+
function binaryToGeometry(data, startIndex, endIndex) {
|
|
13309
|
+
switch (data.type) {
|
|
13310
|
+
case "Point":
|
|
13311
|
+
return pointToGeoJson(data, startIndex, endIndex);
|
|
13312
|
+
case "LineString":
|
|
13313
|
+
return lineStringToGeoJson(data, startIndex, endIndex);
|
|
13314
|
+
case "Polygon":
|
|
13315
|
+
return polygonToGeoJson(data, startIndex, endIndex);
|
|
13316
|
+
default:
|
|
13317
|
+
const unexpectedInput = data;
|
|
13318
|
+
throw new Error("Unsupported geometry type: ".concat(unexpectedInput === null || unexpectedInput === void 0 ? void 0 : unexpectedInput.type));
|
|
13319
|
+
}
|
|
13320
|
+
}
|
|
13321
|
+
function normalizeInput(data, type) {
|
|
13322
|
+
const isHeterogeneousType = Boolean(data.points || data.lines || data.polygons);
|
|
13323
|
+
if (!isHeterogeneousType) {
|
|
13324
|
+
data.type = type || parseType(data);
|
|
13325
|
+
return [data];
|
|
13326
|
+
}
|
|
13327
|
+
const features = [];
|
|
13328
|
+
if (data.points) {
|
|
13329
|
+
data.points.type = "Point";
|
|
13330
|
+
features.push(data.points);
|
|
13331
|
+
}
|
|
13332
|
+
if (data.lines) {
|
|
13333
|
+
data.lines.type = "LineString";
|
|
13334
|
+
features.push(data.lines);
|
|
13335
|
+
}
|
|
13336
|
+
if (data.polygons) {
|
|
13337
|
+
data.polygons.type = "Polygon";
|
|
13338
|
+
features.push(data.polygons);
|
|
13339
|
+
}
|
|
13340
|
+
return features;
|
|
13341
|
+
}
|
|
13342
|
+
function parseFeatureCollection(dataArray) {
|
|
13343
|
+
const features = [];
|
|
13344
|
+
for (const data of dataArray) {
|
|
13345
|
+
if (data.featureIds.value.length === 0) {
|
|
13346
|
+
continue;
|
|
13347
|
+
}
|
|
13348
|
+
let lastIndex = 0;
|
|
13349
|
+
let lastValue = data.featureIds.value[0];
|
|
13350
|
+
for (let i = 0; i < data.featureIds.value.length; i++) {
|
|
13351
|
+
const currValue = data.featureIds.value[i];
|
|
13352
|
+
if (currValue === lastValue) {
|
|
13353
|
+
continue;
|
|
13354
|
+
}
|
|
13355
|
+
features.push(parseFeature(data, lastIndex, i));
|
|
13356
|
+
lastIndex = i;
|
|
13357
|
+
lastValue = currValue;
|
|
13358
|
+
}
|
|
13359
|
+
features.push(parseFeature(data, lastIndex, data.featureIds.value.length));
|
|
13360
|
+
}
|
|
13361
|
+
return features;
|
|
13362
|
+
}
|
|
13363
|
+
function parseFeature(data, startIndex, endIndex) {
|
|
13364
|
+
const geometry = binaryToGeometry(data, startIndex, endIndex);
|
|
13365
|
+
const properties = parseProperties(data, startIndex, endIndex);
|
|
13366
|
+
const fields = parseFields(data, startIndex, endIndex);
|
|
13367
|
+
return {
|
|
13368
|
+
type: "Feature",
|
|
13369
|
+
geometry,
|
|
13370
|
+
properties,
|
|
13371
|
+
...fields
|
|
13372
|
+
};
|
|
13373
|
+
}
|
|
13374
|
+
function parseFields(data) {
|
|
13375
|
+
let startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
13376
|
+
let endIndex = arguments.length > 2 ? arguments[2] : void 0;
|
|
13377
|
+
return data.fields && data.fields[data.featureIds.value[startIndex]];
|
|
13378
|
+
}
|
|
13379
|
+
function parseProperties(data) {
|
|
13380
|
+
let startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
13381
|
+
let endIndex = arguments.length > 2 ? arguments[2] : void 0;
|
|
13382
|
+
const properties = Object.assign({}, data.properties[data.featureIds.value[startIndex]]);
|
|
13383
|
+
for (const key in data.numericProps) {
|
|
13384
|
+
properties[key] = data.numericProps[key].value[startIndex];
|
|
13385
|
+
}
|
|
13386
|
+
return properties;
|
|
13387
|
+
}
|
|
13388
|
+
function polygonToGeoJson(data) {
|
|
13389
|
+
let startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -Infinity;
|
|
13390
|
+
let endIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Infinity;
|
|
13391
|
+
const {
|
|
13392
|
+
positions
|
|
13393
|
+
} = data;
|
|
13394
|
+
const polygonIndices = data.polygonIndices.value.filter((x) => x >= startIndex && x <= endIndex);
|
|
13395
|
+
const primitivePolygonIndices = data.primitivePolygonIndices.value.filter((x) => x >= startIndex && x <= endIndex);
|
|
13396
|
+
const multi = polygonIndices.length > 2;
|
|
13397
|
+
if (!multi) {
|
|
13398
|
+
const coordinates2 = [];
|
|
13399
|
+
for (let i = 0; i < primitivePolygonIndices.length - 1; i++) {
|
|
13400
|
+
const startRingIndex = primitivePolygonIndices[i];
|
|
13401
|
+
const endRingIndex = primitivePolygonIndices[i + 1];
|
|
13402
|
+
const ringCoordinates = ringToGeoJson(positions, startRingIndex, endRingIndex);
|
|
13403
|
+
coordinates2.push(ringCoordinates);
|
|
13404
|
+
}
|
|
13405
|
+
return {
|
|
13406
|
+
type: "Polygon",
|
|
13407
|
+
coordinates: coordinates2
|
|
13408
|
+
};
|
|
13409
|
+
}
|
|
13410
|
+
const coordinates = [];
|
|
13411
|
+
for (let i = 0; i < polygonIndices.length - 1; i++) {
|
|
13412
|
+
const startPolygonIndex = polygonIndices[i];
|
|
13413
|
+
const endPolygonIndex = polygonIndices[i + 1];
|
|
13414
|
+
const polygonCoordinates = polygonToGeoJson(data, startPolygonIndex, endPolygonIndex).coordinates;
|
|
13415
|
+
coordinates.push(polygonCoordinates);
|
|
13416
|
+
}
|
|
13417
|
+
return {
|
|
13418
|
+
type: "MultiPolygon",
|
|
13419
|
+
coordinates
|
|
13420
|
+
};
|
|
13421
|
+
}
|
|
13422
|
+
function lineStringToGeoJson(data) {
|
|
13423
|
+
let startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -Infinity;
|
|
13424
|
+
let endIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Infinity;
|
|
13425
|
+
const {
|
|
13426
|
+
positions
|
|
13427
|
+
} = data;
|
|
13428
|
+
const pathIndices = data.pathIndices.value.filter((x) => x >= startIndex && x <= endIndex);
|
|
13429
|
+
const multi = pathIndices.length > 2;
|
|
13430
|
+
if (!multi) {
|
|
13431
|
+
const coordinates2 = ringToGeoJson(positions, pathIndices[0], pathIndices[1]);
|
|
13432
|
+
return {
|
|
13433
|
+
type: "LineString",
|
|
13434
|
+
coordinates: coordinates2
|
|
13435
|
+
};
|
|
13436
|
+
}
|
|
13437
|
+
const coordinates = [];
|
|
13438
|
+
for (let i = 0; i < pathIndices.length - 1; i++) {
|
|
13439
|
+
const ringCoordinates = ringToGeoJson(positions, pathIndices[i], pathIndices[i + 1]);
|
|
13440
|
+
coordinates.push(ringCoordinates);
|
|
13441
|
+
}
|
|
13442
|
+
return {
|
|
13443
|
+
type: "MultiLineString",
|
|
13444
|
+
coordinates
|
|
13445
|
+
};
|
|
13446
|
+
}
|
|
13447
|
+
function pointToGeoJson(data, startIndex, endIndex) {
|
|
13448
|
+
const {
|
|
13449
|
+
positions
|
|
13450
|
+
} = data;
|
|
13451
|
+
const coordinates = ringToGeoJson(positions, startIndex, endIndex);
|
|
13452
|
+
const multi = coordinates.length > 1;
|
|
13453
|
+
if (multi) {
|
|
13454
|
+
return {
|
|
13455
|
+
type: "MultiPoint",
|
|
13456
|
+
coordinates
|
|
13457
|
+
};
|
|
13458
|
+
}
|
|
13459
|
+
return {
|
|
13460
|
+
type: "Point",
|
|
13461
|
+
coordinates: coordinates[0]
|
|
13462
|
+
};
|
|
13463
|
+
}
|
|
13464
|
+
function ringToGeoJson(positions, startIndex, endIndex) {
|
|
13465
|
+
startIndex = startIndex || 0;
|
|
13466
|
+
endIndex = endIndex || positions.value.length / positions.size;
|
|
13467
|
+
const ringCoordinates = [];
|
|
13468
|
+
for (let j = startIndex; j < endIndex; j++) {
|
|
13469
|
+
const coord = Array();
|
|
13470
|
+
for (let k = j * positions.size; k < (j + 1) * positions.size; k++) {
|
|
13471
|
+
coord.push(Number(positions.value[k]));
|
|
13472
|
+
}
|
|
13473
|
+
ringCoordinates.push(coord);
|
|
13474
|
+
}
|
|
13475
|
+
return ringCoordinates;
|
|
13476
|
+
}
|
|
13477
|
+
function parseType(data) {
|
|
13478
|
+
if (data.pathIndices) {
|
|
13479
|
+
return "LineString";
|
|
13480
|
+
}
|
|
13481
|
+
if (data.polygonIndices) {
|
|
13482
|
+
return "Polygon";
|
|
13483
|
+
}
|
|
13484
|
+
return "Point";
|
|
13485
|
+
}
|
|
12954
13486
|
|
|
12955
|
-
// src/layers/
|
|
12956
|
-
|
|
12957
|
-
|
|
12958
|
-
|
|
12959
|
-
|
|
12960
|
-
|
|
12961
|
-
|
|
12962
|
-
});
|
|
13487
|
+
// src/layers/vector-tile-layer.ts
|
|
13488
|
+
(0, import_core7.registerLoaders)([carto_vector_tile_loader_default]);
|
|
13489
|
+
var defaultTileFormat = TILE_FORMATS.BINARY;
|
|
13490
|
+
var defaultProps7 = {
|
|
13491
|
+
...import_geo_layers6.MVTLayer.defaultProps,
|
|
13492
|
+
data: TilejsonPropType,
|
|
13493
|
+
formatTiles: defaultTileFormat
|
|
12963
13494
|
};
|
|
12964
|
-
var
|
|
13495
|
+
var VectorTileLayer = class extends import_geo_layers6.MVTLayer {
|
|
12965
13496
|
initializeState() {
|
|
13497
|
+
super.initializeState();
|
|
13498
|
+
const binary = this.props.formatTiles === TILE_FORMATS.BINARY || TILE_FORMATS.MVT;
|
|
12966
13499
|
this.setState({
|
|
12967
|
-
|
|
12968
|
-
tileJSON: null
|
|
13500
|
+
binary
|
|
12969
13501
|
});
|
|
12970
13502
|
}
|
|
12971
|
-
updateState({
|
|
12972
|
-
|
|
12973
|
-
|
|
12974
|
-
|
|
12975
|
-
|
|
12976
|
-
|
|
12977
|
-
|
|
12978
|
-
const
|
|
12979
|
-
data = tileJSON.tiles;
|
|
13503
|
+
updateState(parameters) {
|
|
13504
|
+
const {
|
|
13505
|
+
props
|
|
13506
|
+
} = parameters;
|
|
13507
|
+
if (props.data) {
|
|
13508
|
+
super.updateState(parameters);
|
|
13509
|
+
const formatTiles = new URL(props.data.tiles[0]).searchParams.get("formatTiles");
|
|
13510
|
+
const mvt = formatTiles === TILE_FORMATS.MVT;
|
|
12980
13511
|
this.setState({
|
|
12981
|
-
|
|
12982
|
-
tileJSON
|
|
13512
|
+
mvt
|
|
12983
13513
|
});
|
|
12984
13514
|
}
|
|
12985
13515
|
}
|
|
12986
|
-
|
|
13516
|
+
getLoadOptions() {
|
|
13517
|
+
const loadOptions = super.getLoadOptions() || {};
|
|
13518
|
+
const tileJSON = this.props.data;
|
|
13519
|
+
injectAccessToken(loadOptions, tileJSON.accessToken);
|
|
13520
|
+
loadOptions.gis = {
|
|
13521
|
+
format: "binary"
|
|
13522
|
+
};
|
|
13523
|
+
return loadOptions;
|
|
13524
|
+
}
|
|
13525
|
+
getTileData(tile) {
|
|
13526
|
+
const url = (0, import_geo_layers6._getURLFromTemplate)(this.state.data, tile);
|
|
13527
|
+
if (!url) {
|
|
13528
|
+
return Promise.reject("Invalid URL");
|
|
13529
|
+
}
|
|
13530
|
+
const loadOptions = this.getLoadOptions();
|
|
12987
13531
|
const {
|
|
12988
|
-
|
|
12989
|
-
|
|
12990
|
-
|
|
12991
|
-
|
|
12992
|
-
|
|
12993
|
-
return
|
|
12994
|
-
|
|
12995
|
-
|
|
12996
|
-
|
|
12997
|
-
|
|
12998
|
-
|
|
12999
|
-
|
|
13000
|
-
|
|
13532
|
+
fetch: fetch2
|
|
13533
|
+
} = this.props;
|
|
13534
|
+
const {
|
|
13535
|
+
signal
|
|
13536
|
+
} = tile;
|
|
13537
|
+
return fetch2(url, {
|
|
13538
|
+
propName: "data",
|
|
13539
|
+
layer: this,
|
|
13540
|
+
loadOptions,
|
|
13541
|
+
signal
|
|
13542
|
+
});
|
|
13543
|
+
}
|
|
13544
|
+
renderSubLayers(props) {
|
|
13545
|
+
if (props.data === null) {
|
|
13546
|
+
return null;
|
|
13547
|
+
}
|
|
13548
|
+
if (this.state.mvt) {
|
|
13549
|
+
return super.renderSubLayers(props);
|
|
13550
|
+
}
|
|
13551
|
+
const tileBbox = props.tile.bbox;
|
|
13552
|
+
const {
|
|
13553
|
+
west,
|
|
13554
|
+
south,
|
|
13555
|
+
east,
|
|
13556
|
+
north
|
|
13557
|
+
} = tileBbox;
|
|
13558
|
+
const subLayerProps = {
|
|
13559
|
+
...props,
|
|
13560
|
+
autoHighlight: false,
|
|
13561
|
+
extensions: [new import_extensions.ClipExtension(), ...props.extensions || []],
|
|
13562
|
+
clipBounds: [west, south, east, north]
|
|
13563
|
+
};
|
|
13564
|
+
const subLayer = new import_layers2.GeoJsonLayer(subLayerProps);
|
|
13565
|
+
return subLayer;
|
|
13566
|
+
}
|
|
13567
|
+
getPickingInfo(params) {
|
|
13568
|
+
const info = super.getPickingInfo(params);
|
|
13569
|
+
if (this.state.binary && info.index !== -1) {
|
|
13570
|
+
const {
|
|
13571
|
+
data
|
|
13572
|
+
} = params.sourceLayer.props;
|
|
13573
|
+
info.object = binaryToGeojson(data, {
|
|
13574
|
+
globalFeatureId: info.index
|
|
13575
|
+
});
|
|
13576
|
+
}
|
|
13577
|
+
return info;
|
|
13001
13578
|
}
|
|
13002
13579
|
};
|
|
13003
|
-
__publicField(
|
|
13004
|
-
__publicField(
|
|
13580
|
+
__publicField(VectorTileLayer, "layerName", "VectorTileLayer");
|
|
13581
|
+
__publicField(VectorTileLayer, "defaultProps", defaultProps7);
|
|
13005
13582
|
|
|
13006
13583
|
// src/api/layer-map.ts
|
|
13007
13584
|
var SCALE_FUNCS = {
|
|
@@ -13083,7 +13660,7 @@ void main(void) {
|
|
|
13083
13660
|
elevationPercentile: ["elevationLowerPercentile", "elevationUpperPercentile"],
|
|
13084
13661
|
percentile: ["lowerPercentile", "upperPercentile"]
|
|
13085
13662
|
};
|
|
13086
|
-
var
|
|
13663
|
+
var defaultProps8 = {
|
|
13087
13664
|
lineMiterLimit: 2,
|
|
13088
13665
|
lineWidthUnits: "pixels",
|
|
13089
13666
|
pointRadiusUnits: "pixels",
|
|
@@ -13184,12 +13761,12 @@ void main(void) {
|
|
|
13184
13761
|
}
|
|
13185
13762
|
};
|
|
13186
13763
|
const layer = layerTypeDefs[type];
|
|
13187
|
-
|
|
13764
|
+
assert(layer, `Unsupported layer type: ${type}`);
|
|
13188
13765
|
return {
|
|
13189
13766
|
...layer,
|
|
13190
13767
|
propMap: mergePropMaps(basePropMap, layer.propMap),
|
|
13191
13768
|
defaultProps: {
|
|
13192
|
-
...
|
|
13769
|
+
...defaultProps8,
|
|
13193
13770
|
...layer.defaultProps
|
|
13194
13771
|
}
|
|
13195
13772
|
};
|
|
@@ -13204,10 +13781,7 @@ void main(void) {
|
|
|
13204
13781
|
if (scheme === "quadbin") {
|
|
13205
13782
|
return QuadbinTileLayer;
|
|
13206
13783
|
}
|
|
13207
|
-
|
|
13208
|
-
return import_geo_layers7.MVTLayer;
|
|
13209
|
-
}
|
|
13210
|
-
return CartoTileLayer;
|
|
13784
|
+
return VectorTileLayer;
|
|
13211
13785
|
}
|
|
13212
13786
|
function getTileLayer(dataset, basePropMap) {
|
|
13213
13787
|
const {
|
|
@@ -13223,7 +13797,7 @@ void main(void) {
|
|
|
13223
13797
|
Layer: layerFromTileDataset(formatTiles, scheme),
|
|
13224
13798
|
propMap: basePropMap,
|
|
13225
13799
|
defaultProps: {
|
|
13226
|
-
...
|
|
13800
|
+
...defaultProps8,
|
|
13227
13801
|
...aggregationExp && {
|
|
13228
13802
|
aggregationExp
|
|
13229
13803
|
},
|
|
@@ -13482,7 +14056,7 @@ void main(void) {
|
|
|
13482
14056
|
}
|
|
13483
14057
|
};
|
|
13484
14058
|
__publicField(EnhancedTextLayer, "layerName", "EnhancedTextLayer");
|
|
13485
|
-
var
|
|
14059
|
+
var defaultProps9 = {
|
|
13486
14060
|
...import_layers4.TextLayer.defaultProps,
|
|
13487
14061
|
getRadius: {
|
|
13488
14062
|
type: "accessor",
|
|
@@ -13549,7 +14123,7 @@ void main(void) {
|
|
|
13549
14123
|
}
|
|
13550
14124
|
return backgroundPadding;
|
|
13551
14125
|
}
|
|
13552
|
-
renderTextLayer(
|
|
14126
|
+
renderTextLayer(id4, {
|
|
13553
14127
|
updateTriggers: updateTriggersOverride = {},
|
|
13554
14128
|
...props
|
|
13555
14129
|
}) {
|
|
@@ -13570,7 +14144,7 @@ void main(void) {
|
|
|
13570
14144
|
updateTriggers
|
|
13571
14145
|
} = this.props;
|
|
13572
14146
|
return new EnhancedTextLayer(this.getSubLayerProps({
|
|
13573
|
-
id,
|
|
14147
|
+
id: id4,
|
|
13574
14148
|
data,
|
|
13575
14149
|
characterSet,
|
|
13576
14150
|
fontFamily,
|
|
@@ -13634,7 +14208,7 @@ void main(void) {
|
|
|
13634
14208
|
}
|
|
13635
14209
|
};
|
|
13636
14210
|
__publicField(PointLabelLayer, "layerName", "PointLabelLayer");
|
|
13637
|
-
__publicField(PointLabelLayer, "defaultProps",
|
|
14211
|
+
__publicField(PointLabelLayer, "defaultProps", defaultProps9);
|
|
13638
14212
|
|
|
13639
14213
|
// src/api/parseMap.ts
|
|
13640
14214
|
var import_core9 = __toESM(require_core());
|
|
@@ -13646,7 +14220,7 @@ void main(void) {
|
|
|
13646
14220
|
datasets,
|
|
13647
14221
|
token
|
|
13648
14222
|
} = json;
|
|
13649
|
-
|
|
14223
|
+
assert(keplerMapConfig.version === "v1", "Only support Kepler v1");
|
|
13650
14224
|
const {
|
|
13651
14225
|
mapState,
|
|
13652
14226
|
mapStyle
|
|
@@ -13666,7 +14240,7 @@ void main(void) {
|
|
|
13666
14240
|
mapStyle,
|
|
13667
14241
|
token,
|
|
13668
14242
|
layers: layers.reverse().map(({
|
|
13669
|
-
id,
|
|
14243
|
+
id: id4,
|
|
13670
14244
|
type,
|
|
13671
14245
|
config,
|
|
13672
14246
|
visualChannels
|
|
@@ -13676,24 +14250,24 @@ void main(void) {
|
|
|
13676
14250
|
dataId
|
|
13677
14251
|
} = config;
|
|
13678
14252
|
const dataset = datasets.find((d) => d.id === dataId);
|
|
13679
|
-
|
|
14253
|
+
assert(dataset, `No dataset matching dataId: ${dataId}`);
|
|
13680
14254
|
const {
|
|
13681
14255
|
data
|
|
13682
14256
|
} = dataset;
|
|
13683
|
-
|
|
14257
|
+
assert(data, `No data loaded for dataId: ${dataId}`);
|
|
13684
14258
|
const {
|
|
13685
14259
|
Layer,
|
|
13686
14260
|
propMap,
|
|
13687
|
-
defaultProps:
|
|
14261
|
+
defaultProps: defaultProps11
|
|
13688
14262
|
} = getLayer(type, config, dataset);
|
|
13689
14263
|
const styleProps = createStyleProps(config, propMap);
|
|
13690
14264
|
return new Layer({
|
|
13691
|
-
id,
|
|
14265
|
+
id: id4,
|
|
13692
14266
|
data,
|
|
13693
|
-
...
|
|
14267
|
+
...defaultProps11,
|
|
13694
14268
|
...createInteractionProps(interactionConfig),
|
|
13695
14269
|
...styleProps,
|
|
13696
|
-
...createChannelProps(
|
|
14270
|
+
...createChannelProps(id4, type, config, visualChannels, data),
|
|
13697
14271
|
...createParametersProp(layerBlending, styleProps.parameters || {}),
|
|
13698
14272
|
...createLoadOptions(token)
|
|
13699
14273
|
});
|
|
@@ -13758,7 +14332,7 @@ void main(void) {
|
|
|
13758
14332
|
result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];
|
|
13759
14333
|
return result;
|
|
13760
14334
|
}
|
|
13761
|
-
function createChannelProps(
|
|
14335
|
+
function createChannelProps(id4, type, config, visualChannels, data) {
|
|
13762
14336
|
const {
|
|
13763
14337
|
colorField,
|
|
13764
14338
|
colorScale,
|
|
@@ -13911,7 +14485,7 @@ void main(void) {
|
|
|
13911
14485
|
}
|
|
13912
14486
|
if (textLabel && textLabel.length && textLabel[0].field) {
|
|
13913
14487
|
const [mainLabel, secondaryLabel] = textLabel;
|
|
13914
|
-
const collisionGroup =
|
|
14488
|
+
const collisionGroup = id4;
|
|
13915
14489
|
({
|
|
13916
14490
|
alignment: result.getTextAlignmentBaseline,
|
|
13917
14491
|
anchor: result.getTextAnchor,
|
|
@@ -13972,9 +14546,9 @@ void main(void) {
|
|
|
13972
14546
|
|
|
13973
14547
|
// src/api/maps-v3-client.ts
|
|
13974
14548
|
var import_core10 = __toESM(require_core());
|
|
13975
|
-
var
|
|
13976
|
-
var
|
|
13977
|
-
var
|
|
14549
|
+
var MAX_GET_LENGTH2 = 8192;
|
|
14550
|
+
var DEFAULT_CLIENT2 = "deck-gl-carto";
|
|
14551
|
+
var V3_MINOR_VERSION2 = "3.2";
|
|
13978
14552
|
async function request2({
|
|
13979
14553
|
method,
|
|
13980
14554
|
url,
|
|
@@ -14040,15 +14614,6 @@ void main(void) {
|
|
|
14040
14614
|
body,
|
|
14041
14615
|
errorContext
|
|
14042
14616
|
}) {
|
|
14043
|
-
if (format2 === FORMATS.NDJSON) {
|
|
14044
|
-
return request2({
|
|
14045
|
-
method,
|
|
14046
|
-
url,
|
|
14047
|
-
accessToken,
|
|
14048
|
-
body,
|
|
14049
|
-
errorContext
|
|
14050
|
-
});
|
|
14051
|
-
}
|
|
14052
14617
|
const data = await requestJson({
|
|
14053
14618
|
method,
|
|
14054
14619
|
url,
|
|
@@ -14069,8 +14634,8 @@ void main(void) {
|
|
|
14069
14634
|
queryParameters
|
|
14070
14635
|
}) {
|
|
14071
14636
|
const parameters = {
|
|
14072
|
-
client: clientId ||
|
|
14073
|
-
v:
|
|
14637
|
+
client: clientId || DEFAULT_CLIENT2,
|
|
14638
|
+
v: V3_MINOR_VERSION2
|
|
14074
14639
|
};
|
|
14075
14640
|
const sourceName = type === MAP_TYPES.QUERY ? "q" : "name";
|
|
14076
14641
|
parameters[sourceName] = source;
|
|
@@ -14137,7 +14702,7 @@ void main(void) {
|
|
|
14137
14702
|
type,
|
|
14138
14703
|
source
|
|
14139
14704
|
};
|
|
14140
|
-
if (url.length >
|
|
14705
|
+
if (url.length > MAX_GET_LENGTH2 && type === MAP_TYPES.QUERY) {
|
|
14141
14706
|
return await requestJson({
|
|
14142
14707
|
method: "POST",
|
|
14143
14708
|
url: baseUrl2,
|
|
@@ -14171,20 +14736,20 @@ void main(void) {
|
|
|
14171
14736
|
aggregationExp,
|
|
14172
14737
|
aggregationResLevel
|
|
14173
14738
|
}) {
|
|
14174
|
-
|
|
14175
|
-
|
|
14176
|
-
|
|
14177
|
-
|
|
14178
|
-
|
|
14179
|
-
|
|
14739
|
+
assert(connection, "Must define connection");
|
|
14740
|
+
assert(type, "Must define a type");
|
|
14741
|
+
assert(source, "Must define a source");
|
|
14742
|
+
assert(credentials2.apiVersion === API_VERSIONS.V3, "Method only available for v3");
|
|
14743
|
+
assert(credentials2.apiBaseUrl, "Must define apiBaseUrl");
|
|
14744
|
+
assert(credentials2.accessToken, "Must define an accessToken");
|
|
14180
14745
|
if (columns) {
|
|
14181
|
-
|
|
14746
|
+
assert(COLUMNS_SUPPORT.includes(type), `The columns parameter is not supported by type ${type}`);
|
|
14182
14747
|
}
|
|
14183
14748
|
if (geoColumn) {
|
|
14184
|
-
|
|
14749
|
+
assert(GEO_COLUMN_SUPPORT.includes(type), `The geoColumn parameter is not supported by type ${type}`);
|
|
14185
14750
|
} else {
|
|
14186
|
-
|
|
14187
|
-
|
|
14751
|
+
assert(!aggregationExp, "Have aggregationExp, but geoColumn parameter is missing");
|
|
14752
|
+
assert(!aggregationResLevel, "Have aggregationResLevel, but geoColumn parameter is missing");
|
|
14188
14753
|
}
|
|
14189
14754
|
}
|
|
14190
14755
|
async function fetchLayerData({
|
|
@@ -14292,9 +14857,9 @@ void main(void) {
|
|
|
14292
14857
|
if (format2) {
|
|
14293
14858
|
mapFormat = format2;
|
|
14294
14859
|
url = getUrlFromMetadata(metadata, format2);
|
|
14295
|
-
|
|
14860
|
+
assert(url, `Format ${format2} not available`);
|
|
14296
14861
|
} else {
|
|
14297
|
-
const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.
|
|
14862
|
+
const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.TILEJSON];
|
|
14298
14863
|
for (const f of prioritizedFormats) {
|
|
14299
14864
|
url = getUrlFromMetadata(metadata, f);
|
|
14300
14865
|
if (url) {
|
|
@@ -14302,7 +14867,7 @@ void main(void) {
|
|
|
14302
14867
|
break;
|
|
14303
14868
|
}
|
|
14304
14869
|
}
|
|
14305
|
-
|
|
14870
|
+
assert(url && mapFormat, "Unsupported data formats received from backend.");
|
|
14306
14871
|
}
|
|
14307
14872
|
if (format2 === FORMATS.TILEJSON && formatTiles) {
|
|
14308
14873
|
import_core10.log.assert(Object.values(TILE_FORMATS).includes(formatTiles), `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`);
|
|
@@ -14393,7 +14958,7 @@ void main(void) {
|
|
|
14393
14958
|
url += `?${encodeParameter("q", source)}`;
|
|
14394
14959
|
}
|
|
14395
14960
|
let stats;
|
|
14396
|
-
if (url.length >
|
|
14961
|
+
if (url.length > MAX_GET_LENGTH2 && type === MAP_TYPES.QUERY) {
|
|
14397
14962
|
stats = await requestJson({
|
|
14398
14963
|
method: "POST",
|
|
14399
14964
|
url: baseUrl2,
|
|
@@ -14478,16 +15043,16 @@ void main(void) {
|
|
|
14478
15043
|
const {
|
|
14479
15044
|
accessToken
|
|
14480
15045
|
} = localCreds;
|
|
14481
|
-
|
|
14482
|
-
|
|
14483
|
-
|
|
15046
|
+
assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: "XXXX-XXXX-XXXX"})');
|
|
15047
|
+
assert(localCreds.apiVersion === API_VERSIONS.V3, "Method only available for v3");
|
|
15048
|
+
assert(localCreds.apiBaseUrl, "Must define apiBaseUrl");
|
|
14484
15049
|
if (!localCreds.mapsUrl) {
|
|
14485
15050
|
localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);
|
|
14486
15051
|
}
|
|
14487
15052
|
if (autoRefresh || onNewData) {
|
|
14488
|
-
|
|
14489
|
-
|
|
14490
|
-
|
|
15053
|
+
assert(onNewData, "Must define `onNewData` when using autoRefresh");
|
|
15054
|
+
assert(typeof onNewData === "function", "`onNewData` must be a function");
|
|
15055
|
+
assert(typeof autoRefresh === "number" && autoRefresh > 0, "`autoRefresh` must be a positive number");
|
|
14491
15056
|
}
|
|
14492
15057
|
const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;
|
|
14493
15058
|
const errorContext = {
|
|
@@ -14551,7 +15116,7 @@ void main(void) {
|
|
|
14551
15116
|
}
|
|
14552
15117
|
|
|
14553
15118
|
// src/layers/carto-layer.ts
|
|
14554
|
-
var
|
|
15119
|
+
var defaultProps10 = {
|
|
14555
15120
|
data: null,
|
|
14556
15121
|
type: null,
|
|
14557
15122
|
onDataLoad: {
|
|
@@ -14696,14 +15261,14 @@ void main(void) {
|
|
|
14696
15261
|
}
|
|
14697
15262
|
}
|
|
14698
15263
|
_getSubLayerAndProps() {
|
|
14699
|
-
|
|
15264
|
+
assert(this.state);
|
|
14700
15265
|
const {
|
|
14701
15266
|
data,
|
|
14702
15267
|
apiVersion
|
|
14703
15268
|
} = this.state;
|
|
14704
15269
|
const {
|
|
14705
15270
|
uniqueIdProperty
|
|
14706
|
-
} =
|
|
15271
|
+
} = defaultProps10;
|
|
14707
15272
|
const {
|
|
14708
15273
|
data: _notUsed,
|
|
14709
15274
|
...propsNoData
|
|
@@ -14720,7 +15285,7 @@ void main(void) {
|
|
|
14720
15285
|
return [layerFromTileDataset(props.formatTiles, data.scheme, props.type), props];
|
|
14721
15286
|
}
|
|
14722
15287
|
renderLayers() {
|
|
14723
|
-
|
|
15288
|
+
assert(this.state);
|
|
14724
15289
|
const {
|
|
14725
15290
|
apiVersion,
|
|
14726
15291
|
data
|
|
@@ -14731,7 +15296,7 @@ void main(void) {
|
|
|
14731
15296
|
credentials: credentials2,
|
|
14732
15297
|
updateTriggers
|
|
14733
15298
|
} = this.props;
|
|
14734
|
-
const loadOptions = {};
|
|
15299
|
+
const loadOptions = this.getLoadOptions() || {};
|
|
14735
15300
|
if (apiVersion === API_VERSIONS.V3) {
|
|
14736
15301
|
const localConfig = {
|
|
14737
15302
|
...getDefaultCredentials(),
|
|
@@ -14741,7 +15306,9 @@ void main(void) {
|
|
|
14741
15306
|
accessToken
|
|
14742
15307
|
} = localConfig;
|
|
14743
15308
|
loadOptions.fetch = {
|
|
15309
|
+
...loadOptions.fetch,
|
|
14744
15310
|
headers: {
|
|
15311
|
+
...loadOptions.fetch?.headers,
|
|
14745
15312
|
Authorization: `Bearer ${accessToken}`
|
|
14746
15313
|
}
|
|
14747
15314
|
};
|
|
@@ -14756,7 +15323,7 @@ void main(void) {
|
|
|
14756
15323
|
}
|
|
14757
15324
|
};
|
|
14758
15325
|
__publicField(CartoLayer, "layerName", "CartoLayer");
|
|
14759
|
-
__publicField(CartoLayer, "defaultProps",
|
|
15326
|
+
__publicField(CartoLayer, "defaultProps", defaultProps10);
|
|
14760
15327
|
|
|
14761
15328
|
// src/basemap.ts
|
|
14762
15329
|
var baseUrl = "https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json";
|
|
@@ -14880,6 +15447,296 @@ void main(void) {
|
|
|
14880
15447
|
};
|
|
14881
15448
|
}
|
|
14882
15449
|
|
|
15450
|
+
// src/sources/utils.ts
|
|
15451
|
+
async function requestWithParameters({
|
|
15452
|
+
baseUrl: baseUrl2,
|
|
15453
|
+
parameters,
|
|
15454
|
+
headers: customHeaders,
|
|
15455
|
+
errorContext
|
|
15456
|
+
}) {
|
|
15457
|
+
let url = baseUrl2;
|
|
15458
|
+
if (parameters) {
|
|
15459
|
+
const allParameters = {
|
|
15460
|
+
...DEFAULT_PARAMETERS,
|
|
15461
|
+
...parameters
|
|
15462
|
+
};
|
|
15463
|
+
const encodedParameters = Object.entries(allParameters).map(([key, value]) => {
|
|
15464
|
+
return encodeParameter(key, value);
|
|
15465
|
+
});
|
|
15466
|
+
url += `?${encodedParameters.join("&")}`;
|
|
15467
|
+
}
|
|
15468
|
+
const headers = {
|
|
15469
|
+
...DEFAULT_HEADERS,
|
|
15470
|
+
...customHeaders
|
|
15471
|
+
};
|
|
15472
|
+
try {
|
|
15473
|
+
let response;
|
|
15474
|
+
if (url.length > MAX_GET_LENGTH) {
|
|
15475
|
+
response = await fetch(url, {
|
|
15476
|
+
method: "POST",
|
|
15477
|
+
body: JSON.stringify(parameters),
|
|
15478
|
+
headers
|
|
15479
|
+
});
|
|
15480
|
+
} else {
|
|
15481
|
+
response = await fetch(url, {
|
|
15482
|
+
headers
|
|
15483
|
+
});
|
|
15484
|
+
}
|
|
15485
|
+
let json;
|
|
15486
|
+
try {
|
|
15487
|
+
json = await response.json();
|
|
15488
|
+
} catch {
|
|
15489
|
+
json = {
|
|
15490
|
+
error: ""
|
|
15491
|
+
};
|
|
15492
|
+
}
|
|
15493
|
+
if (!response.ok) {
|
|
15494
|
+
throw new CartoAPIError(json.error, errorContext, response);
|
|
15495
|
+
}
|
|
15496
|
+
return json;
|
|
15497
|
+
} catch (error) {
|
|
15498
|
+
throw new CartoAPIError(error, errorContext);
|
|
15499
|
+
}
|
|
15500
|
+
}
|
|
15501
|
+
function buildApiEndpoint({
|
|
15502
|
+
apiBaseUrl,
|
|
15503
|
+
connectionName,
|
|
15504
|
+
endpoint,
|
|
15505
|
+
mapsUrl: mapsUrl2
|
|
15506
|
+
}) {
|
|
15507
|
+
return `${mapsUrl2 || buildMapsUrlFromBase(apiBaseUrl)}/${connectionName}/${endpoint}`;
|
|
15508
|
+
}
|
|
15509
|
+
|
|
15510
|
+
// src/sources/base-source.ts
|
|
15511
|
+
async function cartoBaseSource(endpoint, options, urlParameters) {
|
|
15512
|
+
const mergedOptions = {
|
|
15513
|
+
...SOURCE_DEFAULTS,
|
|
15514
|
+
...options,
|
|
15515
|
+
endpoint
|
|
15516
|
+
};
|
|
15517
|
+
const baseUrl2 = buildApiEndpoint(mergedOptions);
|
|
15518
|
+
const {
|
|
15519
|
+
accessToken,
|
|
15520
|
+
format: format2
|
|
15521
|
+
} = mergedOptions;
|
|
15522
|
+
const headers = {
|
|
15523
|
+
Authorization: `Bearer ${options.accessToken}`,
|
|
15524
|
+
...options.headers
|
|
15525
|
+
};
|
|
15526
|
+
const errorContext = {
|
|
15527
|
+
requestType: "Map instantiation",
|
|
15528
|
+
connection: options.connectionName,
|
|
15529
|
+
type: endpoint,
|
|
15530
|
+
source: JSON.stringify(urlParameters, void 0, 2)
|
|
15531
|
+
};
|
|
15532
|
+
const mapInstantiation2 = await requestWithParameters({
|
|
15533
|
+
baseUrl: baseUrl2,
|
|
15534
|
+
parameters: urlParameters,
|
|
15535
|
+
headers,
|
|
15536
|
+
errorContext
|
|
15537
|
+
});
|
|
15538
|
+
const dataUrl = mapInstantiation2[format2].url[0];
|
|
15539
|
+
errorContext.requestType = "Map data";
|
|
15540
|
+
if (format2 === "tilejson") {
|
|
15541
|
+
const tilejson = await requestWithParameters({
|
|
15542
|
+
baseUrl: dataUrl,
|
|
15543
|
+
headers,
|
|
15544
|
+
errorContext
|
|
15545
|
+
});
|
|
15546
|
+
return {
|
|
15547
|
+
...tilejson,
|
|
15548
|
+
accessToken
|
|
15549
|
+
};
|
|
15550
|
+
}
|
|
15551
|
+
return await requestWithParameters({
|
|
15552
|
+
baseUrl: dataUrl,
|
|
15553
|
+
headers,
|
|
15554
|
+
errorContext
|
|
15555
|
+
});
|
|
15556
|
+
}
|
|
15557
|
+
|
|
15558
|
+
// src/sources/h3-query-source.ts
|
|
15559
|
+
var cartoH3QuerySource = async function(options) {
|
|
15560
|
+
const {
|
|
15561
|
+
aggregationExp,
|
|
15562
|
+
aggregationResLevel = 4,
|
|
15563
|
+
sqlQuery,
|
|
15564
|
+
spatialDataColumn = "h3:h3",
|
|
15565
|
+
queryParameters
|
|
15566
|
+
} = options;
|
|
15567
|
+
const urlParameters = {
|
|
15568
|
+
aggregationExp,
|
|
15569
|
+
q: sqlQuery
|
|
15570
|
+
};
|
|
15571
|
+
if (aggregationResLevel) {
|
|
15572
|
+
urlParameters.aggregationResLevel = String(aggregationResLevel);
|
|
15573
|
+
}
|
|
15574
|
+
if (spatialDataColumn) {
|
|
15575
|
+
urlParameters.geo_column = spatialDataColumn;
|
|
15576
|
+
}
|
|
15577
|
+
if (queryParameters) {
|
|
15578
|
+
urlParameters.queryParameters = JSON.stringify(queryParameters);
|
|
15579
|
+
}
|
|
15580
|
+
return cartoBaseSource("query", options, urlParameters);
|
|
15581
|
+
};
|
|
15582
|
+
|
|
15583
|
+
// src/sources/h3-table-source.ts
|
|
15584
|
+
var cartoH3TableSource = async function(options) {
|
|
15585
|
+
const {
|
|
15586
|
+
aggregationExp,
|
|
15587
|
+
aggregationResLevel = 4,
|
|
15588
|
+
columns,
|
|
15589
|
+
spatialDataColumn = "h3:h3",
|
|
15590
|
+
tableName
|
|
15591
|
+
} = options;
|
|
15592
|
+
const urlParameters = {
|
|
15593
|
+
aggregationExp,
|
|
15594
|
+
name: tableName
|
|
15595
|
+
};
|
|
15596
|
+
if (aggregationResLevel) {
|
|
15597
|
+
urlParameters.aggregationResLevel = String(aggregationResLevel);
|
|
15598
|
+
}
|
|
15599
|
+
if (columns) {
|
|
15600
|
+
urlParameters.columns = columns.join(",");
|
|
15601
|
+
}
|
|
15602
|
+
if (spatialDataColumn) {
|
|
15603
|
+
urlParameters.geo_column = spatialDataColumn;
|
|
15604
|
+
}
|
|
15605
|
+
return cartoBaseSource("table", options, urlParameters);
|
|
15606
|
+
};
|
|
15607
|
+
|
|
15608
|
+
// src/sources/h3-tileset-source.ts
|
|
15609
|
+
var cartoH3TilesetSource = async function(options) {
|
|
15610
|
+
const {
|
|
15611
|
+
tableName
|
|
15612
|
+
} = options;
|
|
15613
|
+
const urlParameters = {
|
|
15614
|
+
name: tableName
|
|
15615
|
+
};
|
|
15616
|
+
return cartoBaseSource("tileset", options, urlParameters);
|
|
15617
|
+
};
|
|
15618
|
+
|
|
15619
|
+
// src/sources/raster-source.ts
|
|
15620
|
+
var cartoRasterSource = async function(options) {
|
|
15621
|
+
const {
|
|
15622
|
+
tableName
|
|
15623
|
+
} = options;
|
|
15624
|
+
const urlParameters = {
|
|
15625
|
+
name: tableName
|
|
15626
|
+
};
|
|
15627
|
+
return cartoBaseSource("raster", options, urlParameters);
|
|
15628
|
+
};
|
|
15629
|
+
|
|
15630
|
+
// src/sources/quadbin-query-source.ts
|
|
15631
|
+
var cartoQuadbinQuerySource = async function(options) {
|
|
15632
|
+
const {
|
|
15633
|
+
aggregationExp,
|
|
15634
|
+
aggregationResLevel = 6,
|
|
15635
|
+
sqlQuery,
|
|
15636
|
+
spatialDataColumn = "quadbin:quadbin",
|
|
15637
|
+
queryParameters
|
|
15638
|
+
} = options;
|
|
15639
|
+
const urlParameters = {
|
|
15640
|
+
aggregationExp,
|
|
15641
|
+
q: sqlQuery
|
|
15642
|
+
};
|
|
15643
|
+
if (aggregationResLevel) {
|
|
15644
|
+
urlParameters.aggregationResLevel = String(aggregationResLevel);
|
|
15645
|
+
}
|
|
15646
|
+
if (spatialDataColumn) {
|
|
15647
|
+
urlParameters.geo_column = spatialDataColumn;
|
|
15648
|
+
}
|
|
15649
|
+
if (queryParameters) {
|
|
15650
|
+
urlParameters.queryParameters = JSON.stringify(queryParameters);
|
|
15651
|
+
}
|
|
15652
|
+
return cartoBaseSource("query", options, urlParameters);
|
|
15653
|
+
};
|
|
15654
|
+
|
|
15655
|
+
// src/sources/quadbin-table-source.ts
|
|
15656
|
+
var cartoQuadbinTableSource = async function(options) {
|
|
15657
|
+
const {
|
|
15658
|
+
aggregationExp,
|
|
15659
|
+
aggregationResLevel = 6,
|
|
15660
|
+
columns,
|
|
15661
|
+
spatialDataColumn = "quadbin:quadbin",
|
|
15662
|
+
tableName
|
|
15663
|
+
} = options;
|
|
15664
|
+
const urlParameters = {
|
|
15665
|
+
aggregationExp,
|
|
15666
|
+
name: tableName
|
|
15667
|
+
};
|
|
15668
|
+
if (aggregationResLevel) {
|
|
15669
|
+
urlParameters.aggregationResLevel = String(aggregationResLevel);
|
|
15670
|
+
}
|
|
15671
|
+
if (columns) {
|
|
15672
|
+
urlParameters.columns = columns.join(",");
|
|
15673
|
+
}
|
|
15674
|
+
if (spatialDataColumn) {
|
|
15675
|
+
urlParameters.geo_column = spatialDataColumn;
|
|
15676
|
+
}
|
|
15677
|
+
return cartoBaseSource("table", options, urlParameters);
|
|
15678
|
+
};
|
|
15679
|
+
|
|
15680
|
+
// src/sources/quadbin-tileset-source.ts
|
|
15681
|
+
var cartoQuadbinTilesetSource = async function(options) {
|
|
15682
|
+
const {
|
|
15683
|
+
tableName
|
|
15684
|
+
} = options;
|
|
15685
|
+
const urlParameters = {
|
|
15686
|
+
name: tableName
|
|
15687
|
+
};
|
|
15688
|
+
return cartoBaseSource("tileset", options, urlParameters);
|
|
15689
|
+
};
|
|
15690
|
+
|
|
15691
|
+
// src/sources/vector-query-source.ts
|
|
15692
|
+
var cartoVectorQuerySource = async function(options) {
|
|
15693
|
+
const {
|
|
15694
|
+
spatialDataColumn,
|
|
15695
|
+
sqlQuery,
|
|
15696
|
+
queryParameters
|
|
15697
|
+
} = options;
|
|
15698
|
+
const urlParameters = {
|
|
15699
|
+
q: sqlQuery
|
|
15700
|
+
};
|
|
15701
|
+
if (spatialDataColumn) {
|
|
15702
|
+
urlParameters.geo_column = spatialDataColumn;
|
|
15703
|
+
}
|
|
15704
|
+
if (queryParameters) {
|
|
15705
|
+
urlParameters.queryParameters = JSON.stringify(queryParameters);
|
|
15706
|
+
}
|
|
15707
|
+
return cartoBaseSource("query", options, urlParameters);
|
|
15708
|
+
};
|
|
15709
|
+
|
|
15710
|
+
// src/sources/vector-table-source.ts
|
|
15711
|
+
var cartoVectorTableSource = async function(options) {
|
|
15712
|
+
const {
|
|
15713
|
+
columns,
|
|
15714
|
+
spatialDataColumn,
|
|
15715
|
+
tableName
|
|
15716
|
+
} = options;
|
|
15717
|
+
const urlParameters = {
|
|
15718
|
+
name: tableName
|
|
15719
|
+
};
|
|
15720
|
+
if (columns) {
|
|
15721
|
+
urlParameters.columns = columns.join(",");
|
|
15722
|
+
}
|
|
15723
|
+
if (spatialDataColumn) {
|
|
15724
|
+
urlParameters.geo_column = spatialDataColumn;
|
|
15725
|
+
}
|
|
15726
|
+
return cartoBaseSource("table", options, urlParameters);
|
|
15727
|
+
};
|
|
15728
|
+
|
|
15729
|
+
// src/sources/vector-tileset-source.ts
|
|
15730
|
+
var cartoVectorTilesetSource = async function(options) {
|
|
15731
|
+
const {
|
|
15732
|
+
tableName
|
|
15733
|
+
} = options;
|
|
15734
|
+
const urlParameters = {
|
|
15735
|
+
name: tableName
|
|
15736
|
+
};
|
|
15737
|
+
return cartoBaseSource("tileset", options, urlParameters);
|
|
15738
|
+
};
|
|
15739
|
+
|
|
14883
15740
|
// ../layers/bundle/peer-dependency.ts
|
|
14884
15741
|
var peer_dependency_exports = {};
|
|
14885
15742
|
var import_layers5 = __toESM(require_layers());
|