@deck.gl/carto 9.0.0-beta.1 → 9.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/carto-api-error.js +47 -0
- package/dist/{esm/api → api}/common.js +4 -5
- package/dist/api/endpoints.js +22 -0
- package/dist/api/fetch-map.js +187 -0
- package/dist/api/index.js +3 -0
- package/dist/api/layer-map.js +373 -0
- package/dist/api/parse-map.js +250 -0
- package/dist/api/query.js +24 -0
- package/dist/api/request-with-parameters.js +53 -0
- package/dist/api/types.js +12 -0
- package/dist/basemap.js +9 -0
- package/dist/cartoRasterTile-worker.js +2 -2
- package/dist/cartoSpatialTile-worker.js +3 -3
- package/dist/cartoVectorTile-worker.js +3 -3
- package/dist/dist.dev.js +1222 -1073
- package/dist/index.cjs +2685 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +37 -0
- package/{typed → dist}/index.d.ts.map +1 -1
- package/dist/index.js +34 -0
- package/dist/layers/h3-tile-layer.js +64 -0
- package/dist/layers/h3-tileset-2d.js +99 -0
- package/dist/layers/point-label-layer.js +150 -0
- package/dist/layers/quadbin-layer.js +21 -0
- package/dist/layers/quadbin-tile-layer.js +47 -0
- package/dist/layers/quadbin-tileset-2d.js +27 -0
- package/dist/layers/quadbin-utils.js +21 -0
- package/dist/{esm/layers → layers}/raster-layer-vertex.glsl.js +0 -1
- package/dist/layers/raster-layer.js +97 -0
- package/dist/layers/raster-tile-layer.js +43 -0
- package/dist/layers/schema/carto-properties-tile-loader.js +21 -0
- package/dist/layers/schema/carto-properties-tile.js +14 -0
- package/dist/layers/schema/carto-raster-tile-loader.js +36 -0
- package/dist/layers/schema/carto-raster-tile.js +46 -0
- package/dist/layers/schema/carto-spatial-tile-loader.js +35 -0
- package/dist/layers/schema/carto-spatial-tile.js +38 -0
- package/dist/layers/schema/carto-tile.js +187 -0
- package/dist/layers/schema/carto-vector-tile-loader.js +65 -0
- package/dist/layers/schema/fast-pbf.js +7 -0
- package/dist/layers/schema/spatialjson-utils.js +15 -0
- package/dist/layers/schema/tile-loader-utils.js +6 -0
- package/{typed → dist}/layers/spatial-index-tile-layer.d.ts +1 -1
- package/{typed → dist}/layers/spatial-index-tile-layer.d.ts.map +1 -1
- package/dist/layers/spatial-index-tile-layer.js +64 -0
- package/dist/layers/utils.js +74 -0
- package/dist/layers/vector-tile-layer.js +98 -0
- package/dist/sources/base-source.js +52 -0
- package/{typed → dist}/sources/boundary-query-source.d.ts +1 -1
- package/{typed → dist}/sources/boundary-query-source.d.ts.map +1 -1
- package/dist/sources/boundary-query-source.js +13 -0
- package/dist/sources/boundary-table-source.js +13 -0
- package/dist/sources/h3-query-source.js +18 -0
- package/dist/sources/h3-table-source.js +18 -0
- package/dist/sources/h3-tileset-source.js +6 -0
- package/dist/sources/index.js +13 -0
- package/dist/sources/quadbin-query-source.js +18 -0
- package/dist/sources/quadbin-table-source.js +18 -0
- package/dist/sources/quadbin-tileset-source.js +6 -0
- package/dist/sources/raster-source.js +6 -0
- package/dist/sources/types.js +1 -0
- package/dist/sources/vector-query-source.js +10 -0
- package/dist/sources/vector-table-source.js +10 -0
- package/dist/sources/vector-tileset-source.js +6 -0
- package/dist/style/color-bins-style.js +21 -0
- package/dist/style/color-categories-style.js +25 -0
- package/dist/style/color-continuous-style.js +21 -0
- package/dist/style/palette.js +62 -0
- package/dist/style/utils.js +11 -0
- package/dist/utils.js +41 -0
- package/dist/workers/cartoRasterTile.js +3 -0
- package/dist/workers/cartoSpatialTile.js +3 -0
- package/dist/workers/cartoVectorTile.js +3 -0
- package/dist.min.js +28 -42
- package/package.json +22 -15
- package/src/api/fetch-map.ts +1 -1
- package/src/api/query.ts +1 -1
- package/src/index.ts +4 -4
- package/src/layers/spatial-index-tile-layer.ts +3 -2
- package/src/sources/boundary-query-source.ts +1 -1
- package/dist/es5/api/carto-api-error.js +0 -83
- package/dist/es5/api/carto-api-error.js.map +0 -1
- package/dist/es5/api/common.js +0 -25
- package/dist/es5/api/common.js.map +0 -1
- package/dist/es5/api/endpoints.js +0 -61
- package/dist/es5/api/endpoints.js.map +0 -1
- package/dist/es5/api/fetch-map.js +0 -566
- package/dist/es5/api/fetch-map.js.map +0 -1
- package/dist/es5/api/index.js +0 -30
- package/dist/es5/api/index.js.map +0 -1
- package/dist/es5/api/layer-map.js +0 -634
- package/dist/es5/api/layer-map.js.map +0 -1
- package/dist/es5/api/parse-map.js +0 -347
- package/dist/es5/api/parse-map.js.map +0 -1
- package/dist/es5/api/query.js +0 -81
- package/dist/es5/api/query.js.map +0 -1
- package/dist/es5/api/request-with-parameters.js +0 -150
- package/dist/es5/api/request-with-parameters.js.map +0 -1
- package/dist/es5/api/types.js +0 -21
- package/dist/es5/api/types.js.map +0 -1
- package/dist/es5/basemap.js +0 -17
- package/dist/es5/basemap.js.map +0 -1
- package/dist/es5/index.js +0 -205
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/layers/h3-tile-layer.js +0 -128
- package/dist/es5/layers/h3-tile-layer.js.map +0 -1
- package/dist/es5/layers/h3-tileset-2d.js +0 -172
- package/dist/es5/layers/h3-tileset-2d.js.map +0 -1
- package/dist/es5/layers/point-label-layer.js +0 -263
- package/dist/es5/layers/point-label-layer.js.map +0 -1
- package/dist/es5/layers/quadbin-layer.js +0 -72
- package/dist/es5/layers/quadbin-layer.js.map +0 -1
- package/dist/es5/layers/quadbin-tile-layer.js +0 -103
- package/dist/es5/layers/quadbin-tile-layer.js.map +0 -1
- package/dist/es5/layers/quadbin-tileset-2d.js +0 -76
- package/dist/es5/layers/quadbin-tileset-2d.js.map +0 -1
- package/dist/es5/layers/quadbin-utils.js +0 -60
- package/dist/es5/layers/quadbin-utils.js.map +0 -1
- package/dist/es5/layers/raster-layer-vertex.glsl.js +0 -9
- package/dist/es5/layers/raster-layer-vertex.glsl.js.map +0 -1
- package/dist/es5/layers/raster-layer.js +0 -174
- package/dist/es5/layers/raster-layer.js.map +0 -1
- package/dist/es5/layers/raster-tile-layer.js +0 -91
- package/dist/es5/layers/raster-tile-layer.js.map +0 -1
- package/dist/es5/layers/schema/carto-properties-tile-loader.js +0 -60
- package/dist/es5/layers/schema/carto-properties-tile-loader.js.map +0 -1
- package/dist/es5/layers/schema/carto-properties-tile.js +0 -38
- package/dist/es5/layers/schema/carto-properties-tile.js.map +0 -1
- package/dist/es5/layers/schema/carto-raster-tile-loader.js +0 -89
- package/dist/es5/layers/schema/carto-raster-tile-loader.js.map +0 -1
- package/dist/es5/layers/schema/carto-raster-tile.js +0 -79
- package/dist/es5/layers/schema/carto-raster-tile.js.map +0 -1
- package/dist/es5/layers/schema/carto-spatial-tile-loader.js +0 -81
- package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +0 -1
- package/dist/es5/layers/schema/carto-spatial-tile.js +0 -80
- package/dist/es5/layers/schema/carto-spatial-tile.js.map +0 -1
- package/dist/es5/layers/schema/carto-tile.js +0 -269
- package/dist/es5/layers/schema/carto-tile.js.map +0 -1
- package/dist/es5/layers/schema/carto-vector-tile-loader.js +0 -120
- package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +0 -1
- package/dist/es5/layers/schema/fast-pbf.js +0 -14
- package/dist/es5/layers/schema/fast-pbf.js.map +0 -1
- package/dist/es5/layers/schema/spatialjson-utils.js +0 -42
- package/dist/es5/layers/schema/spatialjson-utils.js.map +0 -1
- package/dist/es5/layers/schema/tile-loader-utils.js +0 -17
- package/dist/es5/layers/schema/tile-loader-utils.js.map +0 -1
- package/dist/es5/layers/spatial-index-tile-layer.js +0 -126
- package/dist/es5/layers/spatial-index-tile-layer.js.map +0 -1
- package/dist/es5/layers/utils.js +0 -131
- package/dist/es5/layers/utils.js.map +0 -1
- package/dist/es5/layers/vector-tile-layer.js +0 -248
- package/dist/es5/layers/vector-tile-layer.js.map +0 -1
- package/dist/es5/sources/base-source.js +0 -128
- package/dist/es5/sources/base-source.js.map +0 -1
- package/dist/es5/sources/boundary-query-source.js +0 -51
- package/dist/es5/sources/boundary-query-source.js.map +0 -1
- package/dist/es5/sources/boundary-table-source.js +0 -51
- package/dist/es5/sources/boundary-table-source.js.map +0 -1
- package/dist/es5/sources/h3-query-source.js +0 -56
- package/dist/es5/sources/h3-query-source.js.map +0 -1
- package/dist/es5/sources/h3-table-source.js +0 -56
- package/dist/es5/sources/h3-table-source.js.map +0 -1
- package/dist/es5/sources/h3-tileset-source.js +0 -43
- package/dist/es5/sources/h3-tileset-source.js.map +0 -1
- package/dist/es5/sources/index.js +0 -110
- package/dist/es5/sources/index.js.map +0 -1
- package/dist/es5/sources/quadbin-query-source.js +0 -56
- package/dist/es5/sources/quadbin-query-source.js.map +0 -1
- package/dist/es5/sources/quadbin-table-source.js +0 -56
- package/dist/es5/sources/quadbin-table-source.js.map +0 -1
- package/dist/es5/sources/quadbin-tileset-source.js +0 -43
- package/dist/es5/sources/quadbin-tileset-source.js.map +0 -1
- package/dist/es5/sources/raster-source.js +0 -43
- package/dist/es5/sources/raster-source.js.map +0 -1
- package/dist/es5/sources/types.js +0 -2
- package/dist/es5/sources/types.js.map +0 -1
- package/dist/es5/sources/vector-query-source.js +0 -51
- package/dist/es5/sources/vector-query-source.js.map +0 -1
- package/dist/es5/sources/vector-table-source.js +0 -51
- package/dist/es5/sources/vector-table-source.js.map +0 -1
- package/dist/es5/sources/vector-tileset-source.js +0 -43
- package/dist/es5/sources/vector-tileset-source.js.map +0 -1
- package/dist/es5/style/color-bins-style.js +0 -37
- package/dist/es5/style/color-bins-style.js.map +0 -1
- package/dist/es5/style/color-categories-style.js +0 -65
- package/dist/es5/style/color-categories-style.js.map +0 -1
- package/dist/es5/style/color-continuous-style.js +0 -37
- package/dist/es5/style/color-continuous-style.js.map +0 -1
- package/dist/es5/style/palette.js +0 -81
- package/dist/es5/style/palette.js.map +0 -1
- package/dist/es5/style/utils.js +0 -28
- package/dist/es5/style/utils.js.map +0 -1
- package/dist/es5/utils.js +0 -65
- package/dist/es5/utils.js.map +0 -1
- package/dist/es5/workers/cartoRasterTile.js +0 -10
- package/dist/es5/workers/cartoRasterTile.js.map +0 -1
- package/dist/es5/workers/cartoSpatialTile.js +0 -10
- package/dist/es5/workers/cartoSpatialTile.js.map +0 -1
- package/dist/es5/workers/cartoVectorTile.js +0 -10
- package/dist/es5/workers/cartoVectorTile.js.map +0 -1
- package/dist/esm/api/carto-api-error.js +0 -46
- package/dist/esm/api/carto-api-error.js.map +0 -1
- package/dist/esm/api/common.js.map +0 -1
- package/dist/esm/api/endpoints.js +0 -41
- package/dist/esm/api/endpoints.js.map +0 -1
- package/dist/esm/api/fetch-map.js +0 -298
- package/dist/esm/api/fetch-map.js.map +0 -1
- package/dist/esm/api/index.js +0 -4
- package/dist/esm/api/index.js.map +0 -1
- package/dist/esm/api/layer-map.js +0 -520
- package/dist/esm/api/layer-map.js.map +0 -1
- package/dist/esm/api/parse-map.js +0 -343
- package/dist/esm/api/parse-map.js.map +0 -1
- package/dist/esm/api/query.js +0 -40
- package/dist/esm/api/query.js.map +0 -1
- package/dist/esm/api/request-with-parameters.js +0 -82
- package/dist/esm/api/request-with-parameters.js.map +0 -1
- package/dist/esm/api/types.js +0 -14
- package/dist/esm/api/types.js.map +0 -1
- package/dist/esm/basemap.js +0 -10
- package/dist/esm/basemap.js.map +0 -1
- package/dist/esm/index.js +0 -35
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/layers/h3-tile-layer.js +0 -77
- package/dist/esm/layers/h3-tile-layer.js.map +0 -1
- package/dist/esm/layers/h3-tileset-2d.js +0 -119
- package/dist/esm/layers/h3-tileset-2d.js.map +0 -1
- package/dist/esm/layers/point-label-layer.js +0 -194
- package/dist/esm/layers/point-label-layer.js.map +0 -1
- package/dist/esm/layers/quadbin-layer.js +0 -31
- package/dist/esm/layers/quadbin-layer.js.map +0 -1
- package/dist/esm/layers/quadbin-tile-layer.js +0 -51
- package/dist/esm/layers/quadbin-tile-layer.js.map +0 -1
- package/dist/esm/layers/quadbin-tileset-2d.js +0 -39
- package/dist/esm/layers/quadbin-tileset-2d.js.map +0 -1
- package/dist/esm/layers/quadbin-utils.js +0 -23
- package/dist/esm/layers/quadbin-utils.js.map +0 -1
- package/dist/esm/layers/raster-layer-vertex.glsl.js.map +0 -1
- package/dist/esm/layers/raster-layer.js +0 -108
- package/dist/esm/layers/raster-layer.js.map +0 -1
- package/dist/esm/layers/raster-tile-layer.js +0 -48
- package/dist/esm/layers/raster-tile-layer.js.map +0 -1
- package/dist/esm/layers/schema/carto-properties-tile-loader.js +0 -23
- package/dist/esm/layers/schema/carto-properties-tile-loader.js.map +0 -1
- package/dist/esm/layers/schema/carto-properties-tile.js +0 -18
- package/dist/esm/layers/schema/carto-properties-tile.js.map +0 -1
- package/dist/esm/layers/schema/carto-raster-tile-loader.js +0 -54
- package/dist/esm/layers/schema/carto-raster-tile-loader.js.map +0 -1
- package/dist/esm/layers/schema/carto-raster-tile.js +0 -51
- package/dist/esm/layers/schema/carto-raster-tile.js.map +0 -1
- package/dist/esm/layers/schema/carto-spatial-tile-loader.js +0 -44
- package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +0 -1
- package/dist/esm/layers/schema/carto-spatial-tile.js +0 -47
- package/dist/esm/layers/schema/carto-spatial-tile.js.map +0 -1
- package/dist/esm/layers/schema/carto-tile.js +0 -197
- package/dist/esm/layers/schema/carto-tile.js.map +0 -1
- package/dist/esm/layers/schema/carto-vector-tile-loader.js +0 -82
- package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +0 -1
- package/dist/esm/layers/schema/fast-pbf.js +0 -7
- package/dist/esm/layers/schema/fast-pbf.js.map +0 -1
- package/dist/esm/layers/schema/spatialjson-utils.js +0 -27
- package/dist/esm/layers/schema/spatialjson-utils.js.map +0 -1
- package/dist/esm/layers/schema/tile-loader-utils.js +0 -7
- package/dist/esm/layers/schema/tile-loader-utils.js.map +0 -1
- package/dist/esm/layers/spatial-index-tile-layer.js +0 -86
- package/dist/esm/layers/spatial-index-tile-layer.js.map +0 -1
- package/dist/esm/layers/utils.js +0 -85
- package/dist/esm/layers/utils.js.map +0 -1
- package/dist/esm/layers/vector-tile-layer.js +0 -143
- package/dist/esm/layers/vector-tile-layer.js.map +0 -1
- package/dist/esm/sources/base-source.js +0 -72
- package/dist/esm/sources/base-source.js.map +0 -1
- package/dist/esm/sources/boundary-query-source.js +0 -21
- package/dist/esm/sources/boundary-query-source.js.map +0 -1
- package/dist/esm/sources/boundary-table-source.js +0 -21
- package/dist/esm/sources/boundary-table-source.js.map +0 -1
- package/dist/esm/sources/h3-query-source.js +0 -27
- package/dist/esm/sources/h3-query-source.js.map +0 -1
- package/dist/esm/sources/h3-table-source.js +0 -27
- package/dist/esm/sources/h3-table-source.js.map +0 -1
- package/dist/esm/sources/h3-tileset-source.js +0 -11
- package/dist/esm/sources/h3-tileset-source.js.map +0 -1
- package/dist/esm/sources/index.js +0 -14
- package/dist/esm/sources/index.js.map +0 -1
- package/dist/esm/sources/quadbin-query-source.js +0 -27
- package/dist/esm/sources/quadbin-query-source.js.map +0 -1
- package/dist/esm/sources/quadbin-table-source.js +0 -27
- package/dist/esm/sources/quadbin-table-source.js.map +0 -1
- package/dist/esm/sources/quadbin-tileset-source.js +0 -11
- package/dist/esm/sources/quadbin-tileset-source.js.map +0 -1
- package/dist/esm/sources/raster-source.js +0 -11
- package/dist/esm/sources/raster-source.js.map +0 -1
- package/dist/esm/sources/types.js +0 -2
- package/dist/esm/sources/types.js.map +0 -1
- package/dist/esm/sources/vector-query-source.js +0 -20
- package/dist/esm/sources/vector-query-source.js.map +0 -1
- package/dist/esm/sources/vector-table-source.js +0 -20
- package/dist/esm/sources/vector-table-source.js.map +0 -1
- package/dist/esm/sources/vector-tileset-source.js +0 -11
- package/dist/esm/sources/vector-tileset-source.js.map +0 -1
- package/dist/esm/style/color-bins-style.js +0 -19
- package/dist/esm/style/color-bins-style.js.map +0 -1
- package/dist/esm/style/color-categories-style.js +0 -24
- package/dist/esm/style/color-categories-style.js.map +0 -1
- package/dist/esm/style/color-continuous-style.js +0 -19
- package/dist/esm/style/color-continuous-style.js.map +0 -1
- package/dist/esm/style/palette.js +0 -51
- package/dist/esm/style/palette.js.map +0 -1
- package/dist/esm/style/utils.js +0 -15
- package/dist/esm/style/utils.js.map +0 -1
- package/dist/esm/utils.js +0 -51
- package/dist/esm/utils.js.map +0 -1
- package/dist/esm/workers/cartoRasterTile.js +0 -4
- package/dist/esm/workers/cartoRasterTile.js.map +0 -1
- package/dist/esm/workers/cartoSpatialTile.js +0 -4
- package/dist/esm/workers/cartoSpatialTile.js.map +0 -1
- package/dist/esm/workers/cartoVectorTile.js +0 -4
- package/dist/esm/workers/cartoVectorTile.js.map +0 -1
- package/typed/index.d.ts +0 -37
- /package/{typed → dist}/api/carto-api-error.d.ts +0 -0
- /package/{typed → dist}/api/carto-api-error.d.ts.map +0 -0
- /package/{typed → dist}/api/common.d.ts +0 -0
- /package/{typed → dist}/api/common.d.ts.map +0 -0
- /package/{typed → dist}/api/endpoints.d.ts +0 -0
- /package/{typed → dist}/api/endpoints.d.ts.map +0 -0
- /package/{typed → dist}/api/fetch-map.d.ts +0 -0
- /package/{typed → dist}/api/fetch-map.d.ts.map +0 -0
- /package/{typed → dist}/api/index.d.ts +0 -0
- /package/{typed → dist}/api/index.d.ts.map +0 -0
- /package/{typed → dist}/api/layer-map.d.ts +0 -0
- /package/{typed → dist}/api/layer-map.d.ts.map +0 -0
- /package/{typed → dist}/api/parse-map.d.ts +0 -0
- /package/{typed → dist}/api/parse-map.d.ts.map +0 -0
- /package/{typed → dist}/api/query.d.ts +0 -0
- /package/{typed → dist}/api/query.d.ts.map +0 -0
- /package/{typed → dist}/api/request-with-parameters.d.ts +0 -0
- /package/{typed → dist}/api/request-with-parameters.d.ts.map +0 -0
- /package/{typed → dist}/api/types.d.ts +0 -0
- /package/{typed → dist}/api/types.d.ts.map +0 -0
- /package/{typed → dist}/basemap.d.ts +0 -0
- /package/{typed → dist}/basemap.d.ts.map +0 -0
- /package/{typed → dist}/layers/h3-tile-layer.d.ts +0 -0
- /package/{typed → dist}/layers/h3-tile-layer.d.ts.map +0 -0
- /package/{typed → dist}/layers/h3-tileset-2d.d.ts +0 -0
- /package/{typed → dist}/layers/h3-tileset-2d.d.ts.map +0 -0
- /package/{typed → dist}/layers/point-label-layer.d.ts +0 -0
- /package/{typed → dist}/layers/point-label-layer.d.ts.map +0 -0
- /package/{typed → dist}/layers/quadbin-layer.d.ts +0 -0
- /package/{typed → dist}/layers/quadbin-layer.d.ts.map +0 -0
- /package/{typed → dist}/layers/quadbin-tile-layer.d.ts +0 -0
- /package/{typed → dist}/layers/quadbin-tile-layer.d.ts.map +0 -0
- /package/{typed → dist}/layers/quadbin-tileset-2d.d.ts +0 -0
- /package/{typed → dist}/layers/quadbin-tileset-2d.d.ts.map +0 -0
- /package/{typed → dist}/layers/quadbin-utils.d.ts +0 -0
- /package/{typed → dist}/layers/quadbin-utils.d.ts.map +0 -0
- /package/{typed → dist}/layers/raster-layer-vertex.glsl.d.ts +0 -0
- /package/{typed → dist}/layers/raster-layer-vertex.glsl.d.ts.map +0 -0
- /package/{typed → dist}/layers/raster-layer.d.ts +0 -0
- /package/{typed → dist}/layers/raster-layer.d.ts.map +0 -0
- /package/{typed → dist}/layers/raster-tile-layer.d.ts +0 -0
- /package/{typed → dist}/layers/raster-tile-layer.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/carto-properties-tile-loader.d.ts +0 -0
- /package/{typed → dist}/layers/schema/carto-properties-tile-loader.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/carto-properties-tile.d.ts +0 -0
- /package/{typed → dist}/layers/schema/carto-properties-tile.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/carto-raster-tile-loader.d.ts +0 -0
- /package/{typed → dist}/layers/schema/carto-raster-tile-loader.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/carto-raster-tile.d.ts +0 -0
- /package/{typed → dist}/layers/schema/carto-raster-tile.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/carto-spatial-tile-loader.d.ts +0 -0
- /package/{typed → dist}/layers/schema/carto-spatial-tile-loader.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/carto-spatial-tile.d.ts +0 -0
- /package/{typed → dist}/layers/schema/carto-spatial-tile.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/carto-tile.d.ts +0 -0
- /package/{typed → dist}/layers/schema/carto-tile.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/carto-vector-tile-loader.d.ts +0 -0
- /package/{typed → dist}/layers/schema/carto-vector-tile-loader.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/fast-pbf.d.ts +0 -0
- /package/{typed → dist}/layers/schema/fast-pbf.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/spatialjson-utils.d.ts +0 -0
- /package/{typed → dist}/layers/schema/spatialjson-utils.d.ts.map +0 -0
- /package/{typed → dist}/layers/schema/tile-loader-utils.d.ts +0 -0
- /package/{typed → dist}/layers/schema/tile-loader-utils.d.ts.map +0 -0
- /package/{typed → dist}/layers/utils.d.ts +0 -0
- /package/{typed → dist}/layers/utils.d.ts.map +0 -0
- /package/{typed → dist}/layers/vector-tile-layer.d.ts +0 -0
- /package/{typed → dist}/layers/vector-tile-layer.d.ts.map +0 -0
- /package/{typed → dist}/sources/base-source.d.ts +0 -0
- /package/{typed → dist}/sources/base-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/boundary-table-source.d.ts +0 -0
- /package/{typed → dist}/sources/boundary-table-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/h3-query-source.d.ts +0 -0
- /package/{typed → dist}/sources/h3-query-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/h3-table-source.d.ts +0 -0
- /package/{typed → dist}/sources/h3-table-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/h3-tileset-source.d.ts +0 -0
- /package/{typed → dist}/sources/h3-tileset-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/index.d.ts +0 -0
- /package/{typed → dist}/sources/index.d.ts.map +0 -0
- /package/{typed → dist}/sources/quadbin-query-source.d.ts +0 -0
- /package/{typed → dist}/sources/quadbin-query-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/quadbin-table-source.d.ts +0 -0
- /package/{typed → dist}/sources/quadbin-table-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/quadbin-tileset-source.d.ts +0 -0
- /package/{typed → dist}/sources/quadbin-tileset-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/raster-source.d.ts +0 -0
- /package/{typed → dist}/sources/raster-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/types.d.ts +0 -0
- /package/{typed → dist}/sources/types.d.ts.map +0 -0
- /package/{typed → dist}/sources/vector-query-source.d.ts +0 -0
- /package/{typed → dist}/sources/vector-query-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/vector-table-source.d.ts +0 -0
- /package/{typed → dist}/sources/vector-table-source.d.ts.map +0 -0
- /package/{typed → dist}/sources/vector-tileset-source.d.ts +0 -0
- /package/{typed → dist}/sources/vector-tileset-source.d.ts.map +0 -0
- /package/{typed → dist}/style/color-bins-style.d.ts +0 -0
- /package/{typed → dist}/style/color-bins-style.d.ts.map +0 -0
- /package/{typed → dist}/style/color-categories-style.d.ts +0 -0
- /package/{typed → dist}/style/color-categories-style.d.ts.map +0 -0
- /package/{typed → dist}/style/color-continuous-style.d.ts +0 -0
- /package/{typed → dist}/style/color-continuous-style.d.ts.map +0 -0
- /package/{typed → dist}/style/palette.d.ts +0 -0
- /package/{typed → dist}/style/palette.d.ts.map +0 -0
- /package/{typed → dist}/style/utils.d.ts +0 -0
- /package/{typed → dist}/style/utils.d.ts.map +0 -0
- /package/{typed → dist}/utils.d.ts +0 -0
- /package/{typed → dist}/utils.d.ts.map +0 -0
- /package/{typed → dist}/workers/cartoRasterTile.d.ts +0 -0
- /package/{typed → dist}/workers/cartoRasterTile.d.ts.map +0 -0
- /package/{typed → dist}/workers/cartoSpatialTile.d.ts +0 -0
- /package/{typed → dist}/workers/cartoSpatialTile.d.ts.map +0 -0
- /package/{typed → dist}/workers/cartoVectorTile.d.ts +0 -0
- /package/{typed → dist}/workers/cartoVectorTile.d.ts.map +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { readPackedTypedArray } from "./fast-pbf.js";
|
|
2
|
+
import { NumericPropKeyValueReader, PropertiesReader } from "./carto-tile.js";
|
|
3
|
+
// Indices =====================================
|
|
4
|
+
export class IndicesReader {
|
|
5
|
+
static read(pbf, end) {
|
|
6
|
+
return pbf.readFields(IndicesReader._readField, { value: [] }, end);
|
|
7
|
+
}
|
|
8
|
+
static _readField(tag, obj, pbf) {
|
|
9
|
+
if (tag === 1)
|
|
10
|
+
readPackedTypedArray(BigUint64Array, pbf, obj);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
class CellsReader {
|
|
14
|
+
static read(pbf, end) {
|
|
15
|
+
return pbf.readFields(CellsReader._readField, { indices: null, properties: [], numericProps: {} }, end);
|
|
16
|
+
}
|
|
17
|
+
static _readField(tag, obj, pbf) {
|
|
18
|
+
if (tag === 1)
|
|
19
|
+
obj.indices = IndicesReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
20
|
+
else if (tag === 2)
|
|
21
|
+
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
22
|
+
else if (tag === 3) {
|
|
23
|
+
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
24
|
+
obj.numericProps[entry.key] = entry.value;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class TileReader {
|
|
29
|
+
static read(pbf, end) {
|
|
30
|
+
return pbf.readFields(TileReader._readField, { scheme: 0, cells: null }, end);
|
|
31
|
+
}
|
|
32
|
+
static _readField(tag, obj, pbf) {
|
|
33
|
+
if (tag === 1)
|
|
34
|
+
obj.scheme = pbf.readVarint();
|
|
35
|
+
else if (tag === 2)
|
|
36
|
+
obj.cells = CellsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { readPackedTypedArray } from "./fast-pbf.js";
|
|
2
|
+
class KeyValueObjectReader {
|
|
3
|
+
static read(pbf, end) {
|
|
4
|
+
return pbf.readFields(KeyValueObjectReader._readField, { key: '', value: null }, end);
|
|
5
|
+
}
|
|
6
|
+
static _readField(tag, obj, pbf) {
|
|
7
|
+
if (tag === 1)
|
|
8
|
+
obj.key = pbf.readString();
|
|
9
|
+
else if (tag === 2)
|
|
10
|
+
obj.value = pbf.readString();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// Properties ========================================
|
|
14
|
+
export class PropertiesReader {
|
|
15
|
+
static read(pbf, end) {
|
|
16
|
+
return pbf.readFields(PropertiesReader._readField, {}, end);
|
|
17
|
+
}
|
|
18
|
+
static _readField(tag, obj, pbf) {
|
|
19
|
+
if (tag === 1) {
|
|
20
|
+
const { key, value } = KeyValueObjectReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
21
|
+
obj[key] = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class DoublesReader {
|
|
26
|
+
static read(pbf, end) {
|
|
27
|
+
const { value, size } = pbf.readFields(DoublesReader._readField, { value: [], size: 0 }, end);
|
|
28
|
+
return { value: new Float32Array(value), size };
|
|
29
|
+
}
|
|
30
|
+
static _readField(tag, obj, pbf) {
|
|
31
|
+
if (tag === 1)
|
|
32
|
+
readPackedTypedArray(Float64Array, pbf, obj);
|
|
33
|
+
else if (tag === 2)
|
|
34
|
+
obj.size = pbf.readVarint(true);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
class IntsReader {
|
|
38
|
+
static read(pbf, end) {
|
|
39
|
+
const { value, size } = pbf.readFields(IntsReader._readField, { value: [], size: 0 }, end);
|
|
40
|
+
return { value: new Uint32Array(value), size };
|
|
41
|
+
}
|
|
42
|
+
static _readField(tag, obj, pbf) {
|
|
43
|
+
if (tag === 1)
|
|
44
|
+
pbf.readPackedVarint(obj.value);
|
|
45
|
+
else if (tag === 2)
|
|
46
|
+
obj.size = pbf.readVarint(true);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
class FieldsReader {
|
|
50
|
+
static read(pbf, end) {
|
|
51
|
+
return pbf.readFields(FieldsReader._readField, { id: 0 }, end);
|
|
52
|
+
}
|
|
53
|
+
static _readField(tag, obj, pbf) {
|
|
54
|
+
if (tag === 1)
|
|
55
|
+
obj.id = pbf.readVarint();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
class NumericPropReader {
|
|
59
|
+
static read(pbf, end) {
|
|
60
|
+
return pbf.readFields(NumericPropReader._readField, { value: [] }, end);
|
|
61
|
+
}
|
|
62
|
+
static _readField(tag, obj, pbf) {
|
|
63
|
+
if (tag === 1)
|
|
64
|
+
readPackedTypedArray(Float64Array, pbf, obj);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export class NumericPropKeyValueReader {
|
|
68
|
+
static read(pbf, end) {
|
|
69
|
+
return pbf.readFields(NumericPropKeyValueReader._readField, { key: '', value: null }, end);
|
|
70
|
+
}
|
|
71
|
+
static _readField(tag, obj, pbf) {
|
|
72
|
+
if (tag === 1)
|
|
73
|
+
obj.key = pbf.readString();
|
|
74
|
+
else if (tag === 2)
|
|
75
|
+
obj.value = NumericPropReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
class PointsReader {
|
|
79
|
+
static read(pbf, end) {
|
|
80
|
+
return pbf.readFields(PointsReader._readField, {
|
|
81
|
+
positions: null,
|
|
82
|
+
globalFeatureIds: null,
|
|
83
|
+
featureIds: null,
|
|
84
|
+
properties: [],
|
|
85
|
+
numericProps: {},
|
|
86
|
+
fields: []
|
|
87
|
+
}, end);
|
|
88
|
+
}
|
|
89
|
+
static _readField(tag, obj, pbf) {
|
|
90
|
+
if (tag === 1)
|
|
91
|
+
obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
92
|
+
else if (tag === 2)
|
|
93
|
+
obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
94
|
+
else if (tag === 3)
|
|
95
|
+
obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
96
|
+
else if (tag === 4)
|
|
97
|
+
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
98
|
+
else if (tag === 5) {
|
|
99
|
+
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
100
|
+
obj.numericProps[entry.key] = entry.value;
|
|
101
|
+
}
|
|
102
|
+
else if (tag === 6)
|
|
103
|
+
obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Lines ========================================
|
|
107
|
+
class LinesReader {
|
|
108
|
+
static read(pbf, end) {
|
|
109
|
+
return pbf.readFields(LinesReader._readField, {
|
|
110
|
+
positions: null,
|
|
111
|
+
pathIndices: null,
|
|
112
|
+
globalFeatureIds: null,
|
|
113
|
+
featureIds: null,
|
|
114
|
+
properties: [],
|
|
115
|
+
numericProps: {},
|
|
116
|
+
fields: []
|
|
117
|
+
}, end);
|
|
118
|
+
}
|
|
119
|
+
static _readField(tag, obj, pbf) {
|
|
120
|
+
if (tag === 1)
|
|
121
|
+
obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
122
|
+
else if (tag === 2)
|
|
123
|
+
obj.pathIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
124
|
+
else if (tag === 3)
|
|
125
|
+
obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
126
|
+
else if (tag === 4)
|
|
127
|
+
obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
128
|
+
else if (tag === 5)
|
|
129
|
+
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
130
|
+
else if (tag === 6) {
|
|
131
|
+
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
132
|
+
obj.numericProps[entry.key] = entry.value;
|
|
133
|
+
}
|
|
134
|
+
else if (tag === 7)
|
|
135
|
+
obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
class PolygonsReader {
|
|
139
|
+
static read(pbf, end) {
|
|
140
|
+
return pbf.readFields(PolygonsReader._readField, {
|
|
141
|
+
positions: null,
|
|
142
|
+
polygonIndices: null,
|
|
143
|
+
globalFeatureIds: null,
|
|
144
|
+
featureIds: null,
|
|
145
|
+
primitivePolygonIndices: null,
|
|
146
|
+
triangles: null,
|
|
147
|
+
properties: [],
|
|
148
|
+
numericProps: {},
|
|
149
|
+
fields: []
|
|
150
|
+
}, end);
|
|
151
|
+
}
|
|
152
|
+
static _readField(tag, obj, pbf) {
|
|
153
|
+
if (tag === 1)
|
|
154
|
+
obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
155
|
+
else if (tag === 2)
|
|
156
|
+
obj.polygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
157
|
+
else if (tag === 3)
|
|
158
|
+
obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
159
|
+
else if (tag === 4)
|
|
160
|
+
obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
161
|
+
else if (tag === 5)
|
|
162
|
+
obj.primitivePolygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
163
|
+
else if (tag === 6)
|
|
164
|
+
obj.triangles = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
165
|
+
else if (tag === 7)
|
|
166
|
+
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
167
|
+
else if (tag === 8) {
|
|
168
|
+
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
169
|
+
obj.numericProps[entry.key] = entry.value;
|
|
170
|
+
}
|
|
171
|
+
else if (tag === 9)
|
|
172
|
+
obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export class TileReader {
|
|
176
|
+
static read(pbf, end) {
|
|
177
|
+
return pbf.readFields(TileReader._readField, { points: null, lines: null, polygons: null }, end);
|
|
178
|
+
}
|
|
179
|
+
static _readField(tag, obj, pbf) {
|
|
180
|
+
if (tag === 1)
|
|
181
|
+
obj.points = PointsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
182
|
+
else if (tag === 2)
|
|
183
|
+
obj.lines = LinesReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
184
|
+
else if (tag === 3)
|
|
185
|
+
obj.polygons = PolygonsReader.read(pbf, pbf.readVarint() + pbf.pos);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import earcut from 'earcut';
|
|
2
|
+
import { TileReader } from "./carto-tile.js";
|
|
3
|
+
import { parsePbf } from "./tile-loader-utils.js";
|
|
4
|
+
import { getWorkerUrl } from "../../utils.js";
|
|
5
|
+
const VERSION = typeof "9.0.0-beta.2" !== 'undefined' ? "9.0.0-beta.2" : 'latest';
|
|
6
|
+
const id = 'cartoVectorTile';
|
|
7
|
+
const DEFAULT_OPTIONS = {
|
|
8
|
+
cartoVectorTile: {
|
|
9
|
+
workerUrl: getWorkerUrl(id, VERSION)
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
const CartoVectorTileLoader = {
|
|
13
|
+
name: 'CARTO Vector Tile',
|
|
14
|
+
version: VERSION,
|
|
15
|
+
id,
|
|
16
|
+
module: 'carto',
|
|
17
|
+
extensions: ['pbf'],
|
|
18
|
+
mimeTypes: ['application/vnd.carto-vector-tile'],
|
|
19
|
+
category: 'geometry',
|
|
20
|
+
parse: async (arrayBuffer, options) => parseCartoVectorTile(arrayBuffer, options),
|
|
21
|
+
parseSync: parseCartoVectorTile,
|
|
22
|
+
worker: true,
|
|
23
|
+
options: DEFAULT_OPTIONS
|
|
24
|
+
};
|
|
25
|
+
function triangulatePolygon(polygons, target, { startPosition, endPosition, indices }) {
|
|
26
|
+
const coordLength = polygons.positions.size;
|
|
27
|
+
const start = startPosition * coordLength;
|
|
28
|
+
const end = endPosition * coordLength;
|
|
29
|
+
// Extract positions and holes for just this polygon
|
|
30
|
+
const polygonPositions = polygons.positions.value.subarray(start, end);
|
|
31
|
+
// Holes are referenced relative to outer polygon
|
|
32
|
+
const holes = indices.slice(1).map((n) => n - startPosition);
|
|
33
|
+
// Compute triangulation
|
|
34
|
+
const triangles = earcut(polygonPositions, holes, coordLength);
|
|
35
|
+
// Indices returned by triangulation are relative to start
|
|
36
|
+
// of polygon, so we need to offset
|
|
37
|
+
for (let t = 0, tl = triangles.length; t < tl; ++t) {
|
|
38
|
+
target.push(startPosition + triangles[t]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function triangulate(polygons) {
|
|
42
|
+
const { polygonIndices, primitivePolygonIndices } = polygons;
|
|
43
|
+
const triangles = [];
|
|
44
|
+
let rangeStart = 0;
|
|
45
|
+
for (let i = 0; i < polygonIndices.value.length - 1; i++) {
|
|
46
|
+
const startPosition = polygonIndices.value[i];
|
|
47
|
+
const endPosition = polygonIndices.value[i + 1];
|
|
48
|
+
// Extract hole indices between start & end position
|
|
49
|
+
const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);
|
|
50
|
+
const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);
|
|
51
|
+
rangeStart = rangeEnd;
|
|
52
|
+
triangulatePolygon(polygons, triangles, { startPosition, endPosition, indices });
|
|
53
|
+
}
|
|
54
|
+
polygons.triangles = { value: new Uint32Array(triangles), size: 1 };
|
|
55
|
+
}
|
|
56
|
+
function parseCartoVectorTile(arrayBuffer, options) {
|
|
57
|
+
if (!arrayBuffer)
|
|
58
|
+
return null;
|
|
59
|
+
const tile = parsePbf(arrayBuffer, TileReader);
|
|
60
|
+
if (tile.polygons && !tile.polygons.triangles) {
|
|
61
|
+
triangulate(tile.polygons);
|
|
62
|
+
}
|
|
63
|
+
return tile;
|
|
64
|
+
}
|
|
65
|
+
export default CartoVectorTileLoader;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Optimized (100X speed improvement) reading function for binary data
|
|
2
|
+
export function readPackedTypedArray(TypedArray, pbf, obj) {
|
|
3
|
+
const end = pbf.type === 2 ? pbf.readVarint() + pbf.pos : pbf.pos + 1;
|
|
4
|
+
obj.value = new TypedArray(pbf.buf.buffer.slice(pbf.pos, end));
|
|
5
|
+
pbf.pos = end;
|
|
6
|
+
return obj.value;
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { bigIntToHex } from 'quadbin';
|
|
2
|
+
export function binaryToSpatialjson(binary) {
|
|
3
|
+
const { cells, scheme } = binary;
|
|
4
|
+
const count = cells.indices.value.length;
|
|
5
|
+
const spatial = [];
|
|
6
|
+
for (let i = 0; i < count; i++) {
|
|
7
|
+
const id = scheme === 'h3' ? bigIntToHex(cells.indices.value[i]) : cells.indices.value[i];
|
|
8
|
+
const properties = { ...cells.properties[i] };
|
|
9
|
+
for (const key of Object.keys(cells.numericProps)) {
|
|
10
|
+
properties[key] = cells.numericProps[key].value[i];
|
|
11
|
+
}
|
|
12
|
+
spatial.push({ id, properties });
|
|
13
|
+
}
|
|
14
|
+
return spatial;
|
|
15
|
+
}
|
|
@@ -9,7 +9,7 @@ export default class SpatialIndexTileLayer<DataT = any, ExtraProps extends {} =
|
|
|
9
9
|
static layerName: string;
|
|
10
10
|
static defaultProps: DefaultProps<SpatialIndexTileLayerProps<unknown>>;
|
|
11
11
|
state: TileLayer<DataT>['state'] & {
|
|
12
|
-
hoveredFeatureId: number | null;
|
|
12
|
+
hoveredFeatureId: BigInt | number | null;
|
|
13
13
|
highlightColor: number[];
|
|
14
14
|
};
|
|
15
15
|
protected _updateAutoHighlight(info: PickingInfo): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatial-index-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/spatial-index-tile-layer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAK3C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAE,aAAa,IAAI,YAAY,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAQ7F,yDAAyD;AACzD,MAAM,MAAM,0BAA0B,CAAC,KAAK,GAAG,OAAO,IAAI,2BAA2B,GACnF,cAAc,CAAC,KAAK,CAAC,CAAC;AAExB,iDAAiD;AACjD,KAAK,2BAA2B,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,qBAAqB,CACxC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,EAAE,GAAG,EAAE,CAC1B,SAAQ,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAC5E,MAAM,CAAC,SAAS,SAA2B;IAC3C,MAAM,CAAC,YAAY,oDAAgB;IAEnC,KAAK,EAAG,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG;QAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"spatial-index-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/spatial-index-tile-layer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAK3C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAE,aAAa,IAAI,YAAY,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAQ7F,yDAAyD;AACzD,MAAM,MAAM,0BAA0B,CAAC,KAAK,GAAG,OAAO,IAAI,2BAA2B,GACnF,cAAc,CAAC,KAAK,CAAC,CAAC;AAExB,iDAAiD;AACjD,KAAK,2BAA2B,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,qBAAqB,CACxC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,EAAE,GAAG,EAAE,CAC1B,SAAQ,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAC5E,MAAM,CAAC,SAAS,SAA2B;IAC3C,MAAM,CAAC,YAAY,oDAAgB;IAEnC,KAAK,EAAG,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG;QAClC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QACzC,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IAEF,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAsBvD,sBAAsB,CAAC,IAAI,EAAE,YAAY;;;;IAOzC,yBAAyB,CAAC,IAAI,EAAE,YAAY;IAiB5C,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAgB9D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { registerLoaders } from '@loaders.gl/core';
|
|
2
|
+
import CartoRasterTileLoader from "./schema/carto-raster-tile-loader.js";
|
|
3
|
+
import CartoSpatialTileLoader from "./schema/carto-spatial-tile-loader.js";
|
|
4
|
+
registerLoaders([CartoRasterTileLoader, CartoSpatialTileLoader]);
|
|
5
|
+
import { TileLayer } from '@deck.gl/geo-layers';
|
|
6
|
+
function isFeatureIdDefined(value) {
|
|
7
|
+
return value !== undefined && value !== null && value !== '';
|
|
8
|
+
}
|
|
9
|
+
const defaultProps = {};
|
|
10
|
+
export default class SpatialIndexTileLayer extends TileLayer {
|
|
11
|
+
static { this.layerName = 'SpatialIndexTileLayer'; }
|
|
12
|
+
static { this.defaultProps = defaultProps; }
|
|
13
|
+
_updateAutoHighlight(info) {
|
|
14
|
+
const { hoveredFeatureId } = this.state;
|
|
15
|
+
const hoveredFeature = info.object;
|
|
16
|
+
let newHoveredFeatureId = null;
|
|
17
|
+
if (hoveredFeature) {
|
|
18
|
+
newHoveredFeatureId = hoveredFeature.id;
|
|
19
|
+
}
|
|
20
|
+
if (hoveredFeatureId !== newHoveredFeatureId) {
|
|
21
|
+
let { highlightColor } = this.props;
|
|
22
|
+
if (typeof highlightColor === 'function') {
|
|
23
|
+
highlightColor = highlightColor(info);
|
|
24
|
+
}
|
|
25
|
+
this.setState({
|
|
26
|
+
highlightColor,
|
|
27
|
+
hoveredFeatureId: newHoveredFeatureId
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
getSubLayerPropsByTile(tile) {
|
|
32
|
+
return {
|
|
33
|
+
highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
|
|
34
|
+
highlightColor: this.state.highlightColor
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
getHighlightedObjectIndex(tile) {
|
|
38
|
+
const { hoveredFeatureId } = this.state;
|
|
39
|
+
const data = tile.content;
|
|
40
|
+
const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);
|
|
41
|
+
if (!isFeatureIdPresent ||
|
|
42
|
+
!Array.isArray(data) ||
|
|
43
|
+
// Quick check for whether id is within tile. data.findIndex is expensive
|
|
44
|
+
!this._featureInTile(tile, hoveredFeatureId)) {
|
|
45
|
+
return -1;
|
|
46
|
+
}
|
|
47
|
+
return data.findIndex(feature => feature.id === hoveredFeatureId);
|
|
48
|
+
}
|
|
49
|
+
_featureInTile(tile, featureId) {
|
|
50
|
+
// TODO: Tile2DHeader index should be generic for H3TileIndex or QuadbinTileIndex
|
|
51
|
+
const tileset = this.state.tileset;
|
|
52
|
+
const tileZoom = tileset.getTileZoom(tile.index);
|
|
53
|
+
// @ts-ignore
|
|
54
|
+
const KEY = tile.index.q ? 'q' : 'i';
|
|
55
|
+
// TODO - Tileset2D methods expect tile index in the shape of {x, y, z}
|
|
56
|
+
let featureIndex = { [KEY]: featureId };
|
|
57
|
+
let featureZoom = tileset.getTileZoom(featureIndex);
|
|
58
|
+
while (!(featureZoom <= tileZoom)) {
|
|
59
|
+
featureIndex = tileset.getParentIndex(featureIndex);
|
|
60
|
+
featureZoom = tileset.getTileZoom(featureIndex);
|
|
61
|
+
}
|
|
62
|
+
return featureIndex[KEY] === tile.index[KEY];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { log } from '@deck.gl/core';
|
|
2
|
+
import { _deepEqual as deepEqual } from '@deck.gl/core';
|
|
3
|
+
/**
|
|
4
|
+
* Adds access token to Authorization header in loadOptions
|
|
5
|
+
*/
|
|
6
|
+
export function injectAccessToken(loadOptions, accessToken) {
|
|
7
|
+
if (!loadOptions?.fetch?.headers?.Authorization) {
|
|
8
|
+
loadOptions.fetch = {
|
|
9
|
+
...loadOptions.fetch,
|
|
10
|
+
headers: { ...loadOptions.fetch?.headers, Authorization: `Bearer ${accessToken}` }
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function mergeBoundaryData(geometry, properties) {
|
|
15
|
+
const mapping = {};
|
|
16
|
+
for (const { geoid, ...rest } of properties.properties) {
|
|
17
|
+
if (geoid in mapping) {
|
|
18
|
+
log.warn('Duplicate geoid key in boundary mapping, using first occurance')();
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
mapping[geoid] = rest;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
for (const type of ['points', 'lines', 'polygons']) {
|
|
25
|
+
const geom = geometry[type];
|
|
26
|
+
if (geom.positions.value.length === 0) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
geom.properties = geom.properties.map(({ geoid }) => mapping[geoid]);
|
|
30
|
+
// numericProps need to be filled to match length of positions buffer
|
|
31
|
+
const { positions, globalFeatureIds } = geom;
|
|
32
|
+
let indices = null;
|
|
33
|
+
if (type === 'lines')
|
|
34
|
+
indices = geom.pathIndices.value;
|
|
35
|
+
if (type === 'polygons')
|
|
36
|
+
indices = geom.polygonIndices.value;
|
|
37
|
+
const length = positions.value.length / positions.size;
|
|
38
|
+
for (const key in properties.numericProps) {
|
|
39
|
+
const sourceProp = properties.numericProps[key].value;
|
|
40
|
+
const TypedArray = sourceProp.constructor;
|
|
41
|
+
const destProp = new TypedArray(length);
|
|
42
|
+
geom.numericProps[key] = { value: destProp, size: 1 };
|
|
43
|
+
if (!indices) {
|
|
44
|
+
for (let i = 0; i < length; i++) {
|
|
45
|
+
// points
|
|
46
|
+
const featureId = globalFeatureIds.value[i];
|
|
47
|
+
destProp[i] = sourceProp[featureId];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// lines|polygons
|
|
52
|
+
for (let i = 0; i < indices.length - 1; i++) {
|
|
53
|
+
const startIndex = indices[i];
|
|
54
|
+
const endIndex = indices[i + 1];
|
|
55
|
+
const featureId = globalFeatureIds.value[startIndex];
|
|
56
|
+
destProp.fill(sourceProp[featureId], startIndex, endIndex);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return geometry;
|
|
62
|
+
}
|
|
63
|
+
export const TilejsonPropType = {
|
|
64
|
+
type: 'object',
|
|
65
|
+
value: null,
|
|
66
|
+
validate: (value, propType) => (propType.optional && value === null) ||
|
|
67
|
+
(typeof value === 'object' &&
|
|
68
|
+
Array.isArray(value.tiles) &&
|
|
69
|
+
value.tiles.every(url => typeof url === 'string')),
|
|
70
|
+
equal: (value1, value2) => {
|
|
71
|
+
return deepEqual(value1, value2, 2);
|
|
72
|
+
},
|
|
73
|
+
async: true
|
|
74
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { registerLoaders } from '@loaders.gl/core';
|
|
2
|
+
import CartoPropertiesTileLoader from "./schema/carto-properties-tile-loader.js";
|
|
3
|
+
import CartoVectorTileLoader from "./schema/carto-vector-tile-loader.js";
|
|
4
|
+
registerLoaders([CartoPropertiesTileLoader, CartoVectorTileLoader]);
|
|
5
|
+
import { ClipExtension } from '@deck.gl/extensions';
|
|
6
|
+
import { MVTLayer, _getURLFromTemplate } from '@deck.gl/geo-layers';
|
|
7
|
+
import { GeoJsonLayer } from '@deck.gl/layers';
|
|
8
|
+
import { binaryToGeojson } from '@loaders.gl/gis';
|
|
9
|
+
import { TilejsonPropType, injectAccessToken, mergeBoundaryData } from "./utils.js";
|
|
10
|
+
const defaultProps = {
|
|
11
|
+
...MVTLayer.defaultProps,
|
|
12
|
+
data: TilejsonPropType,
|
|
13
|
+
dataComparator: TilejsonPropType.equal
|
|
14
|
+
};
|
|
15
|
+
// TODO Perhaps we can't subclass MVTLayer and keep types. Better to subclass TileLayer instead?
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
export default class VectorTileLayer extends MVTLayer {
|
|
18
|
+
static { this.layerName = 'VectorTileLayer'; }
|
|
19
|
+
static { this.defaultProps = defaultProps; }
|
|
20
|
+
initializeState() {
|
|
21
|
+
super.initializeState();
|
|
22
|
+
this.setState({ binary: true });
|
|
23
|
+
}
|
|
24
|
+
updateState(parameters) {
|
|
25
|
+
const { props } = parameters;
|
|
26
|
+
if (props.data) {
|
|
27
|
+
super.updateState(parameters);
|
|
28
|
+
const formatTiles = new URL(props.data.tiles[0]).searchParams.get('formatTiles');
|
|
29
|
+
const mvt = formatTiles === 'mvt';
|
|
30
|
+
this.setState({ mvt });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
getLoadOptions() {
|
|
34
|
+
const loadOptions = super.getLoadOptions() || {};
|
|
35
|
+
const tileJSON = this.props.data;
|
|
36
|
+
injectAccessToken(loadOptions, tileJSON.accessToken);
|
|
37
|
+
loadOptions.gis = { format: 'binary' }; // Use binary for MVT loading
|
|
38
|
+
return loadOptions;
|
|
39
|
+
}
|
|
40
|
+
async getTileData(tile) {
|
|
41
|
+
const tileJSON = this.props.data;
|
|
42
|
+
const { tiles, properties_tiles } = tileJSON;
|
|
43
|
+
const url = _getURLFromTemplate(tiles, tile);
|
|
44
|
+
if (!url) {
|
|
45
|
+
return Promise.reject('Invalid URL');
|
|
46
|
+
}
|
|
47
|
+
const loadOptions = this.getLoadOptions();
|
|
48
|
+
const { fetch } = this.props;
|
|
49
|
+
const { signal } = tile;
|
|
50
|
+
// Fetch geometry and attributes separately
|
|
51
|
+
const geometryFetch = fetch(url, { propName: 'data', layer: this, loadOptions, signal });
|
|
52
|
+
if (!properties_tiles) {
|
|
53
|
+
return await geometryFetch;
|
|
54
|
+
}
|
|
55
|
+
const propertiesUrl = _getURLFromTemplate(properties_tiles, tile);
|
|
56
|
+
if (!propertiesUrl) {
|
|
57
|
+
return Promise.reject('Invalid properties URL');
|
|
58
|
+
}
|
|
59
|
+
const attributesFetch = fetch(propertiesUrl, {
|
|
60
|
+
propName: 'data',
|
|
61
|
+
layer: this,
|
|
62
|
+
loadOptions,
|
|
63
|
+
signal
|
|
64
|
+
});
|
|
65
|
+
const [geometry, attributes] = await Promise.all([geometryFetch, attributesFetch]);
|
|
66
|
+
if (!geometry)
|
|
67
|
+
return null;
|
|
68
|
+
return attributes ? mergeBoundaryData(geometry, attributes) : geometry;
|
|
69
|
+
}
|
|
70
|
+
renderSubLayers(props) {
|
|
71
|
+
if (props.data === null) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
if (this.state.mvt) {
|
|
75
|
+
return super.renderSubLayers(props);
|
|
76
|
+
}
|
|
77
|
+
const tileBbox = props.tile.bbox;
|
|
78
|
+
const { west, south, east, north } = tileBbox;
|
|
79
|
+
const subLayerProps = {
|
|
80
|
+
...props,
|
|
81
|
+
autoHighlight: false,
|
|
82
|
+
extensions: [new ClipExtension(), ...(props.extensions || [])],
|
|
83
|
+
clipBounds: [west, south, east, north]
|
|
84
|
+
};
|
|
85
|
+
const subLayer = new GeoJsonLayer(subLayerProps);
|
|
86
|
+
return subLayer;
|
|
87
|
+
}
|
|
88
|
+
getPickingInfo(params) {
|
|
89
|
+
const info = super.getPickingInfo(params);
|
|
90
|
+
if (this.state.binary && info.index !== -1) {
|
|
91
|
+
const { data } = params.sourceLayer.props;
|
|
92
|
+
info.object = binaryToGeojson(data, {
|
|
93
|
+
globalFeatureId: info.index
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return info;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* eslint-disable camelcase */
|
|
2
|
+
import { DEFAULT_API_BASE_URL, DEFAULT_CLIENT } from "../api/common.js";
|
|
3
|
+
import { buildSourceUrl } from "../api/endpoints.js";
|
|
4
|
+
import { requestWithParameters } from "../api/request-with-parameters.js";
|
|
5
|
+
export const SOURCE_DEFAULTS = {
|
|
6
|
+
apiBaseUrl: DEFAULT_API_BASE_URL,
|
|
7
|
+
clientId: DEFAULT_CLIENT,
|
|
8
|
+
format: 'tilejson',
|
|
9
|
+
headers: {}
|
|
10
|
+
};
|
|
11
|
+
export async function baseSource(endpoint, options, urlParameters) {
|
|
12
|
+
const { accessToken, connectionName, cache, ...optionalOptions } = options;
|
|
13
|
+
const mergedOptions = { ...SOURCE_DEFAULTS, accessToken, connectionName, endpoint };
|
|
14
|
+
for (const key in optionalOptions) {
|
|
15
|
+
if (optionalOptions[key]) {
|
|
16
|
+
mergedOptions[key] = optionalOptions[key];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const baseUrl = buildSourceUrl(mergedOptions);
|
|
20
|
+
const { format } = mergedOptions;
|
|
21
|
+
const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };
|
|
22
|
+
const errorContext = {
|
|
23
|
+
requestType: 'Map instantiation',
|
|
24
|
+
connection: options.connectionName,
|
|
25
|
+
type: endpoint,
|
|
26
|
+
source: JSON.stringify(urlParameters, undefined, 2)
|
|
27
|
+
};
|
|
28
|
+
const mapInstantiation = await requestWithParameters({
|
|
29
|
+
baseUrl,
|
|
30
|
+
parameters: urlParameters,
|
|
31
|
+
headers,
|
|
32
|
+
errorContext
|
|
33
|
+
});
|
|
34
|
+
const dataUrl = mapInstantiation[format].url[0];
|
|
35
|
+
if (cache) {
|
|
36
|
+
cache.value = parseInt(new URL(dataUrl).searchParams.get('cache') || '', 10);
|
|
37
|
+
}
|
|
38
|
+
errorContext.requestType = 'Map data';
|
|
39
|
+
if (format === 'tilejson') {
|
|
40
|
+
return await requestWithParameters({
|
|
41
|
+
accessToken,
|
|
42
|
+
baseUrl: dataUrl,
|
|
43
|
+
headers,
|
|
44
|
+
errorContext
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return await requestWithParameters({
|
|
48
|
+
baseUrl: dataUrl,
|
|
49
|
+
headers,
|
|
50
|
+
errorContext
|
|
51
|
+
});
|
|
52
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary-query-source.d.ts","sourceRoot":"","sources":["../../src/sources/boundary-query-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"boundary-query-source.d.ts","sourceRoot":"","sources":["../../src/sources/boundary-query-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,SAAS,CAAC;AAE3D,MAAM,MAAM,0BAA0B,GAAG,aAAa,GAAG;IACvD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAQF,eAAO,MAAM,mBAAmB,YACrB,0BAA0B,KAClC,QAAQ,cAAc,CAWxB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { baseSource } from "./base-source.js";
|
|
2
|
+
export const boundaryQuerySource = async function (options) {
|
|
3
|
+
const { tilesetTableName, matchingColumn = 'id', propertiesSqlQuery, queryParameters } = options;
|
|
4
|
+
const urlParameters = {
|
|
5
|
+
tilesetTableName,
|
|
6
|
+
matchingColumn,
|
|
7
|
+
propertiesSqlQuery
|
|
8
|
+
};
|
|
9
|
+
if (queryParameters) {
|
|
10
|
+
urlParameters.queryParameters = JSON.stringify(queryParameters);
|
|
11
|
+
}
|
|
12
|
+
return baseSource('boundary', options, urlParameters);
|
|
13
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { baseSource } from "./base-source.js";
|
|
2
|
+
export const boundaryTableSource = async function (options) {
|
|
3
|
+
const { tilesetTableName, columns, matchingColumn = 'id', propertiesTableName } = options;
|
|
4
|
+
const urlParameters = {
|
|
5
|
+
tilesetTableName,
|
|
6
|
+
matchingColumn,
|
|
7
|
+
propertiesTableName
|
|
8
|
+
};
|
|
9
|
+
if (columns) {
|
|
10
|
+
urlParameters.columns = columns.join(',');
|
|
11
|
+
}
|
|
12
|
+
return baseSource('boundary', options, urlParameters);
|
|
13
|
+
};
|