@deck.gl/geo-layers 8.9.0-beta.3 → 8.9.0
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/dist.dev.js +13 -27
- package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +1 -0
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +6 -11
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +6 -12
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/wms-layer/wms-layer.js +0 -4
- package/dist/es5/wms-layer/wms-layer.js.map +1 -1
- package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +2 -1
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +6 -11
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +6 -12
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/wms-layer/wms-layer.js +0 -4
- package/dist/esm/wms-layer/wms-layer.js.map +1 -1
- package/dist.min.js +43 -43
- package/package.json +2 -2
- package/src/geo-cell-layer/GeoCellLayer.ts +2 -2
- package/src/h3-layers/h3-hexagon-layer.ts +2 -6
- package/src/mesh-layer/mesh-layer.ts +3 -3
- package/src/mvt-layer/mvt-layer.ts +15 -11
- package/src/tile-3d-layer/tile-3d-layer.ts +9 -8
- package/src/tile-layer/tile-layer.ts +10 -9
- package/src/wms-layer/wms-layer.ts +6 -5
- package/typed/geo-cell-layer/GeoCellLayer.d.ts +2 -2
- package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
- package/typed/h3-layers/h3-hexagon-layer.d.ts +3 -3
- package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer.d.ts +3 -3
- package/typed/mesh-layer/mesh-layer.d.ts.map +1 -1
- package/typed/mvt-layer/mvt-layer.d.ts +4 -4
- package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
- package/typed/tile-3d-layer/tile-3d-layer.d.ts +2 -1
- package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
- package/typed/tile-layer/tile-layer.d.ts +4 -2
- package/typed/tile-layer/tile-layer.d.ts.map +1 -1
- package/typed/wms-layer/wms-layer.d.ts +2 -1
- package/typed/wms-layer/wms-layer.d.ts.map +1 -1
package/dist/dist.dev.js
CHANGED
|
@@ -10438,24 +10438,20 @@ var deck = (() => {
|
|
|
10438
10438
|
},
|
|
10439
10439
|
onMetadataLoad: {
|
|
10440
10440
|
type: "function",
|
|
10441
|
-
compare: false,
|
|
10442
10441
|
value: () => {
|
|
10443
10442
|
}
|
|
10444
10443
|
},
|
|
10445
10444
|
onMetadataLoadError: {
|
|
10446
10445
|
type: "function",
|
|
10447
|
-
compare: false,
|
|
10448
10446
|
value: console.error
|
|
10449
10447
|
},
|
|
10450
10448
|
onImageLoadStart: {
|
|
10451
10449
|
type: "function",
|
|
10452
|
-
compare: false,
|
|
10453
10450
|
value: () => {
|
|
10454
10451
|
}
|
|
10455
10452
|
},
|
|
10456
10453
|
onImageLoad: {
|
|
10457
10454
|
type: "function",
|
|
10458
|
-
compare: false,
|
|
10459
10455
|
value: () => {
|
|
10460
10456
|
}
|
|
10461
10457
|
},
|
|
@@ -15444,37 +15440,31 @@ var deck = (() => {
|
|
|
15444
15440
|
dataComparator: urlType.equal,
|
|
15445
15441
|
renderSubLayers: {
|
|
15446
15442
|
type: "function",
|
|
15447
|
-
value: (props) => new import_layers5.GeoJsonLayer(props)
|
|
15448
|
-
compare: false
|
|
15443
|
+
value: (props) => new import_layers5.GeoJsonLayer(props)
|
|
15449
15444
|
},
|
|
15450
15445
|
getTileData: {
|
|
15451
15446
|
type: "function",
|
|
15452
15447
|
optional: true,
|
|
15453
|
-
value: null
|
|
15454
|
-
compare: false
|
|
15448
|
+
value: null
|
|
15455
15449
|
},
|
|
15456
15450
|
onViewportLoad: {
|
|
15457
15451
|
type: "function",
|
|
15458
15452
|
optional: true,
|
|
15459
|
-
value: null
|
|
15460
|
-
compare: false
|
|
15453
|
+
value: null
|
|
15461
15454
|
},
|
|
15462
15455
|
onTileLoad: {
|
|
15463
15456
|
type: "function",
|
|
15464
15457
|
value: (tile) => {
|
|
15465
|
-
}
|
|
15466
|
-
compare: false
|
|
15458
|
+
}
|
|
15467
15459
|
},
|
|
15468
15460
|
onTileUnload: {
|
|
15469
15461
|
type: "function",
|
|
15470
15462
|
value: (tile) => {
|
|
15471
|
-
}
|
|
15472
|
-
compare: false
|
|
15463
|
+
}
|
|
15473
15464
|
},
|
|
15474
15465
|
onTileError: {
|
|
15475
15466
|
type: "function",
|
|
15476
|
-
value: (err) => console.error(err)
|
|
15477
|
-
compare: false
|
|
15467
|
+
value: (err) => console.error(err)
|
|
15478
15468
|
},
|
|
15479
15469
|
extent: {
|
|
15480
15470
|
type: "array",
|
|
@@ -30718,36 +30708,31 @@ void main(void) {
|
|
|
30718
30708
|
value: [0, 0, 0, 255]
|
|
30719
30709
|
},
|
|
30720
30710
|
pointSize: 1,
|
|
30721
|
-
data:
|
|
30711
|
+
data: "",
|
|
30722
30712
|
loader: Tiles3DLoader,
|
|
30723
30713
|
onTilesetLoad: {
|
|
30724
30714
|
type: "function",
|
|
30725
30715
|
value: (tileset3d) => {
|
|
30726
|
-
}
|
|
30727
|
-
compare: false
|
|
30716
|
+
}
|
|
30728
30717
|
},
|
|
30729
30718
|
onTileLoad: {
|
|
30730
30719
|
type: "function",
|
|
30731
30720
|
value: (tileHeader) => {
|
|
30732
|
-
}
|
|
30733
|
-
compare: false
|
|
30721
|
+
}
|
|
30734
30722
|
},
|
|
30735
30723
|
onTileUnload: {
|
|
30736
30724
|
type: "function",
|
|
30737
30725
|
value: (tileHeader) => {
|
|
30738
|
-
}
|
|
30739
|
-
compare: false
|
|
30726
|
+
}
|
|
30740
30727
|
},
|
|
30741
30728
|
onTileError: {
|
|
30742
30729
|
type: "function",
|
|
30743
30730
|
value: (tile, message, url) => {
|
|
30744
|
-
}
|
|
30745
|
-
compare: false
|
|
30731
|
+
}
|
|
30746
30732
|
},
|
|
30747
30733
|
_getMeshColor: {
|
|
30748
30734
|
type: "function",
|
|
30749
|
-
value: (tileHeader) => [255, 255, 255]
|
|
30750
|
-
compare: false
|
|
30735
|
+
value: (tileHeader) => [255, 255, 255]
|
|
30751
30736
|
}
|
|
30752
30737
|
};
|
|
30753
30738
|
var Tile3DLayer = class extends import_core43.CompositeLayer {
|
|
@@ -34363,6 +34348,7 @@ void main(void) {
|
|
|
34363
34348
|
var WORLD_SIZE = 512;
|
|
34364
34349
|
var defaultProps13 = {
|
|
34365
34350
|
...import_layers9.GeoJsonLayer.defaultProps,
|
|
34351
|
+
data: urlType,
|
|
34366
34352
|
onDataLoad: {
|
|
34367
34353
|
type: "function",
|
|
34368
34354
|
value: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/geo-cell-layer/GeoCellLayer.ts"],"names":["defaultProps","PolygonLayer","GeoCellLayer","props","elevationScale","extruded","wireframe","filled","stroked","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","lineJointRounded","lineMiterLimit","lineDashJustified","getElevation","getFillColor","getLineColor","getLineWidth","updateTriggers","material","transitions","CellLayer","getSubLayerClass","getSubLayerProps","id","indexToBounds","CompositeLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;AAEA,IAAMA,YAA6C,qBAC9CC,qBAAaD,YADiC,CAAnD;;IAOqBE,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,aAAO,IAAP;AACD;;;WAED,wBAA0C;AAExC,wBAiBI,KAAKC,KAjBT;AAAA,UACEC,cADF,eACEA,cADF;AAAA,UAEEC,QAFF,eAEEA,QAFF;AAAA,UAGEC,SAHF,eAGEA,SAHF;AAAA,UAIEC,MAJF,eAIEA,MAJF;AAAA,UAKEC,OALF,eAKEA,OALF;AAAA,UAMEC,cANF,eAMEA,cANF;AAAA,UAOEC,cAPF,eAOEA,cAPF;AAAA,UAQEC,kBARF,eAQEA,kBARF;AAAA,UASEC,kBATF,eASEA,kBATF;AAAA,UAUEC,gBAVF,eAUEA,gBAVF;AAAA,UAWEC,cAXF,eAWEA,cAXF;AAAA,UAYEC,iBAZF,eAYEA,iBAZF;AAAA,UAaEC,YAbF,eAaEA,YAbF;AAAA,UAcEC,YAdF,eAcEA,YAdF;AAAA,UAeEC,YAfF,eAeEA,YAfF;AAAA,UAgBEC,YAhBF,eAgBEA,YAhBF;AAoBA,yBAAgD,KAAKhB,KAArD;AAAA,UAAOiB,cAAP,gBAAOA,cAAP;AAAA,UAAuBC,QAAvB,gBAAuBA,QAAvB;AAAA,UAAiCC,WAAjC,gBAAiCA,WAAjC;AAGA,UAAMC,SAAS,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8BvB,oBAA9B,CAAlB;AACA,aAAO,IAAIsB,SAAJ,CACL;AACEhB,QAAAA,MAAM,EAANA,MADF;AAEED,QAAAA,SAAS,EAATA,SAFF;AAIED,QAAAA,QAAQ,EAARA,QAJF;AAKED,QAAAA,cAAc,EAAdA,cALF;AAOEI,QAAAA,OAAO,EAAPA,OAPF;AAQEC,QAAAA,cAAc,EAAdA,cARF;AASEC,QAAAA,cAAc,EAAdA,cATF;AAUEC,QAAAA,kBAAkB,EAAlBA,kBAVF;AAWEC,QAAAA,kBAAkB,EAAlBA,kBAXF;AAYEC,QAAAA,gBAAgB,EAAhBA,gBAZF;AAaEC,QAAAA,cAAc,EAAdA,cAbF;AAcEC,QAAAA,iBAAiB,EAAjBA,iBAdF;AAgBEM,QAAAA,QAAQ,EAARA,QAhBF;AAiBEC,QAAAA,WAAW,EAAXA,WAjBF;AAmBEN,QAAAA,YAAY,EAAZA,YAnBF;AAoBEC,QAAAA,YAAY,EAAZA,YApBF;AAqBEC,QAAAA,YAAY,EAAZA,YArBF;AAsBEC,QAAAA,YAAY,EAAZA;AAtBF,OADK,EAyBL,KAAKM,gBAAL,CAAsB;AACpBC,QAAAA,EAAE,EAAE,MADgB;AAEpBN,QAAAA,cAAc,EAAEA,cAAc,IAAI;AAChCJ,UAAAA,YAAY,EAAEI,cAAc,CAACJ,YADG;AAEhCC,UAAAA,YAAY,EAAEG,cAAc,CAACH,YAFG;AAGhCC,UAAAA,YAAY,EAAEE,cAAc,CAACF,YAHG;AAIhCC,UAAAA,YAAY,EAAEC,cAAc,CAACD;AAJG;AAFd,OAAtB,CAzBK,EAkCL,KAAKQ,aAAL,EAlCK,CAAP;AAoCD;;;EAzEgFC,oB;;;8BAA9D1B,Y,eAGA,c;8BAHAA,Y,kBAIiBF,Y","sourcesContent":["import {CompositeLayer,
|
|
1
|
+
{"version":3,"sources":["../../../src/geo-cell-layer/GeoCellLayer.ts"],"names":["defaultProps","PolygonLayer","GeoCellLayer","props","elevationScale","extruded","wireframe","filled","stroked","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","lineJointRounded","lineMiterLimit","lineDashJustified","getElevation","getFillColor","getLineColor","getLineWidth","updateTriggers","material","transitions","CellLayer","getSubLayerClass","getSubLayerProps","id","indexToBounds","CompositeLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;AAEA,IAAMA,YAA6C,qBAC9CC,qBAAaD,YADiC,CAAnD;;IAOqBE,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,aAAO,IAAP;AACD;;;WAED,wBAA0C;AAExC,wBAiBI,KAAKC,KAjBT;AAAA,UACEC,cADF,eACEA,cADF;AAAA,UAEEC,QAFF,eAEEA,QAFF;AAAA,UAGEC,SAHF,eAGEA,SAHF;AAAA,UAIEC,MAJF,eAIEA,MAJF;AAAA,UAKEC,OALF,eAKEA,OALF;AAAA,UAMEC,cANF,eAMEA,cANF;AAAA,UAOEC,cAPF,eAOEA,cAPF;AAAA,UAQEC,kBARF,eAQEA,kBARF;AAAA,UASEC,kBATF,eASEA,kBATF;AAAA,UAUEC,gBAVF,eAUEA,gBAVF;AAAA,UAWEC,cAXF,eAWEA,cAXF;AAAA,UAYEC,iBAZF,eAYEA,iBAZF;AAAA,UAaEC,YAbF,eAaEA,YAbF;AAAA,UAcEC,YAdF,eAcEA,YAdF;AAAA,UAeEC,YAfF,eAeEA,YAfF;AAAA,UAgBEC,YAhBF,eAgBEA,YAhBF;AAoBA,yBAAgD,KAAKhB,KAArD;AAAA,UAAOiB,cAAP,gBAAOA,cAAP;AAAA,UAAuBC,QAAvB,gBAAuBA,QAAvB;AAAA,UAAiCC,WAAjC,gBAAiCA,WAAjC;AAGA,UAAMC,SAAS,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8BvB,oBAA9B,CAAlB;AACA,aAAO,IAAIsB,SAAJ,CACL;AACEhB,QAAAA,MAAM,EAANA,MADF;AAEED,QAAAA,SAAS,EAATA,SAFF;AAIED,QAAAA,QAAQ,EAARA,QAJF;AAKED,QAAAA,cAAc,EAAdA,cALF;AAOEI,QAAAA,OAAO,EAAPA,OAPF;AAQEC,QAAAA,cAAc,EAAdA,cARF;AASEC,QAAAA,cAAc,EAAdA,cATF;AAUEC,QAAAA,kBAAkB,EAAlBA,kBAVF;AAWEC,QAAAA,kBAAkB,EAAlBA,kBAXF;AAYEC,QAAAA,gBAAgB,EAAhBA,gBAZF;AAaEC,QAAAA,cAAc,EAAdA,cAbF;AAcEC,QAAAA,iBAAiB,EAAjBA,iBAdF;AAgBEM,QAAAA,QAAQ,EAARA,QAhBF;AAiBEC,QAAAA,WAAW,EAAXA,WAjBF;AAmBEN,QAAAA,YAAY,EAAZA,YAnBF;AAoBEC,QAAAA,YAAY,EAAZA,YApBF;AAqBEC,QAAAA,YAAY,EAAZA,YArBF;AAsBEC,QAAAA,YAAY,EAAZA;AAtBF,OADK,EAyBL,KAAKM,gBAAL,CAAsB;AACpBC,QAAAA,EAAE,EAAE,MADgB;AAEpBN,QAAAA,cAAc,EAAEA,cAAc,IAAI;AAChCJ,UAAAA,YAAY,EAAEI,cAAc,CAACJ,YADG;AAEhCC,UAAAA,YAAY,EAAEG,cAAc,CAACH,YAFG;AAGhCC,UAAAA,YAAY,EAAEE,cAAc,CAACF,YAHG;AAIhCC,UAAAA,YAAY,EAAEC,cAAc,CAACD;AAJG;AAFd,OAAtB,CAzBK,EAkCL,KAAKQ,aAAL,EAlCK,CAAP;AAoCD;;;EAzEgFC,oB;;;8BAA9D1B,Y,eAGA,c;8BAHAA,Y,kBAIiBF,Y","sourcesContent":["import {CompositeLayer, Layer, LayersList, DefaultProps} from '@deck.gl/core';\nimport {PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\n\nconst defaultProps: DefaultProps<GeoCellLayerProps> = {\n ...PolygonLayer.defaultProps\n};\n\n/** All properties supported by GeoCellLayer. */\nexport type GeoCellLayerProps<DataT = any> = PolygonLayerProps<DataT>;\n\nexport default class GeoCellLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<\n Required<GeoCellLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'GeoCellLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n /** Implement to generate props to create geometry. */\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n return null;\n }\n\n renderLayers(): Layer | null | LayersList {\n // Rendering props underlying layer\n const {\n elevationScale,\n extruded,\n wireframe,\n filled,\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n } = this.props;\n\n // Accessor props for underlying layers\n const {updateTriggers, material, transitions} = this.props;\n\n // Filled Polygon Layer\n const CellLayer = this.getSubLayerClass('cell', PolygonLayer);\n return new CellLayer(\n {\n filled,\n wireframe,\n\n extruded,\n elevationScale,\n\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n\n material,\n transitions,\n\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n },\n this.getSubLayerProps({\n id: 'cell',\n updateTriggers: updateTriggers && {\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n }),\n this.indexToBounds()\n );\n }\n}\n"],"file":"GeoCellLayer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.ts"],"names":["UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flattenPolygon","positions","Float64Array","mergeTriggers","trigger","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","H3HexagonLayer","_checkH3Lib","state","edgeLengthKM","resolution","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","props","dataChanged","updateTriggersChanged","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","hasPentagon","hasMultipleRes","data","iterable","index","hexResolution","Boolean","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","projectFlat","centerX","centerY","map","p","worldPosition","_renderPolygonLayer","_renderColumnLayer","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","updateTriggers","SubLayerClass","getSubLayerClass","forwardProps","_getForwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","ColumnLayer","getPosition","flatShading","diskResolution","radius","bind","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n H3Index\n} from 'h3-js';\nimport {lerp} from '@math.gl/core';\nimport {\n AccessorFunction,\n CompositeLayer,\n CompositeLayerProps,\n createIterable,\n Layer,\n LayersList,\n UpdateParameters,\n WebMercatorViewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices: number[][], refLng?: number): void {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId: H3Index, vertices: number[][], factor: number): void {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId: H3Index, coverage: number = 1): number[][] {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n return vertices;\n}\n\nfunction flattenPolygon(vertices: number[][]): Float64Array {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps: DefaultProps<H3HexagonLayerProps> = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n/** All properties supported by H3HexagonLayer */\nexport type H3HexagonLayerProps<DataT = any> = _H3HexagonLayerProps<DataT> &\n PolygonLayerProps<DataT> &\n CompositeLayerProps<DataT>;\n\n/** Props added by the H3HexagonLayer */\ntype _H3HexagonLayerProps<DataT> = {\n /**\n * Whether or not draw hexagons with high precision.\n * @default 'auto'\n */\n highPrecision?: boolean | 'auto';\n /**\n * Coverage of hexagon in cell.\n * @default 1\n */\n coverage?: number;\n /**\n * Center hexagon that best represents the shape of the set. If not specified, the hexagon closest to the center of the viewport is used.\n */\n centerHexagon?: H3Index | null;\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `hexagon` property of data object.\n */\n getHexagon?: AccessorFunction<DataT, string>;\n /**\n * Whether to extrude polygons.\n * @default true\n */\n extruded?: boolean;\n};\n\n/**\n * Render hexagons from the [H3](https://h3geo.org/) geospatial indexing system.\n */\nexport default class H3HexagonLayer<\n DataT = any,\n ExtraPropsT extends {} = {}\n> extends CompositeLayer<\n ExtraPropsT & Required<_H3HexagonLayerProps<DataT> & Required<PolygonLayerProps<DataT>>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'H3HexagonLayer';\n\n // See `main/bundle.ts`\n static _checkH3Lib = () => {};\n\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n this.state = {\n edgeLengthKM: 0,\n resolution: -1\n };\n }\n\n state!: {\n centerHex?: H3Index;\n edgeLengthKM: number;\n hasMultipleRes?: boolean;\n hasPentagon?: boolean;\n resolution: number;\n vertices?: number[][];\n };\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}: UpdateParameters<this>): void {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps();\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport as WebMercatorViewport);\n }\n\n private _calculateH3DataProps() {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(this.props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = this.props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!this.props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, 'km') : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n private _shouldUseHighPrecision(): boolean {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n Boolean(viewport?.resolution) ||\n hasMultipleRes ||\n hasPentagon ||\n (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n private _updateVertices(viewport: WebMercatorViewport): void {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers(): Layer | null | LayersList {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n private _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n } as {\n getFillColor: any;\n getElevation: any;\n getLineColor: any;\n getLineWidth: any;\n getPolygon?: any;\n getPosition?: any;\n }\n };\n }\n\n private _renderPolygonLayer(): PolygonLayer {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return flattenPolygon(h3ToPolygon(hexagonId, coverage));\n }\n }\n );\n }\n\n private _renderColumnLayer(): ColumnLayer {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n flatShading: true,\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n"],"file":"h3-hexagon-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.ts"],"names":["UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flattenPolygon","positions","Float64Array","mergeTriggers","trigger","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","H3HexagonLayer","_checkH3Lib","state","edgeLengthKM","resolution","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","props","dataChanged","updateTriggersChanged","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","hasPentagon","hasMultipleRes","data","iterable","index","hexResolution","Boolean","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","projectFlat","centerX","centerY","map","p","worldPosition","_renderPolygonLayer","_renderColumnLayer","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","updateTriggers","SubLayerClass","getSubLayerClass","forwardProps","_getForwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","ColumnLayer","getPosition","flatShading","diskResolution","radius","bind","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n H3Index\n} from 'h3-js';\nimport {lerp} from '@math.gl/core';\nimport {\n AccessorFunction,\n CompositeLayer,\n createIterable,\n Layer,\n LayersList,\n UpdateParameters,\n WebMercatorViewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices: number[][], refLng?: number): void {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId: H3Index, vertices: number[][], factor: number): void {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId: H3Index, coverage: number = 1): number[][] {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n return vertices;\n}\n\nfunction flattenPolygon(vertices: number[][]): Float64Array {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps: DefaultProps<H3HexagonLayerProps> = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n/** All properties supported by H3HexagonLayer */\nexport type H3HexagonLayerProps<DataT = any> = _H3HexagonLayerProps<DataT> &\n PolygonLayerProps<DataT>;\n\n/** Props added by the H3HexagonLayer */\ntype _H3HexagonLayerProps<DataT> = {\n /**\n * Whether or not draw hexagons with high precision.\n * @default 'auto'\n */\n highPrecision?: boolean | 'auto';\n /**\n * Coverage of hexagon in cell.\n * @default 1\n */\n coverage?: number;\n /**\n * Center hexagon that best represents the shape of the set. If not specified, the hexagon closest to the center of the viewport is used.\n */\n centerHexagon?: H3Index | null;\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `hexagon` property of data object.\n */\n getHexagon?: AccessorFunction<DataT, string>;\n /**\n * Whether to extrude polygons.\n * @default true\n */\n extruded?: boolean;\n};\n\n/**\n * Render hexagons from the [H3](https://h3geo.org/) geospatial indexing system.\n */\nexport default class H3HexagonLayer<\n DataT = any,\n ExtraPropsT extends {} = {}\n> extends CompositeLayer<ExtraPropsT & Required<H3HexagonLayerProps<DataT>>> {\n static defaultProps = defaultProps;\n static layerName = 'H3HexagonLayer';\n\n // See `main/bundle.ts`\n static _checkH3Lib = () => {};\n\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n this.state = {\n edgeLengthKM: 0,\n resolution: -1\n };\n }\n\n state!: {\n centerHex?: H3Index;\n edgeLengthKM: number;\n hasMultipleRes?: boolean;\n hasPentagon?: boolean;\n resolution: number;\n vertices?: number[][];\n };\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}: UpdateParameters<this>): void {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps();\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport as WebMercatorViewport);\n }\n\n private _calculateH3DataProps() {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(this.props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = this.props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!this.props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, 'km') : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n private _shouldUseHighPrecision(): boolean {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n Boolean(viewport?.resolution) ||\n hasMultipleRes ||\n hasPentagon ||\n (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n private _updateVertices(viewport: WebMercatorViewport): void {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers(): Layer | null | LayersList {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n private _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n } as {\n getFillColor: any;\n getElevation: any;\n getLineColor: any;\n getLineWidth: any;\n getPolygon?: any;\n getPosition?: any;\n }\n };\n }\n\n private _renderPolygonLayer(): PolygonLayer {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return flattenPolygon(h3ToPolygon(hexagonId, coverage));\n }\n }\n );\n }\n\n private _renderColumnLayer(): ColumnLayer {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n flatShading: true,\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n"],"file":"h3-hexagon-layer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mesh-layer/mesh-layer.ts"],"names":["validateGeometryAttributes","attributes","hasColorAttribute","COLOR_0","colors","constant","value","Float32Array","defaultProps","pbrMaterial","type","featureIds","optional","MeshLayer","shaders","modules","push","pbr","vs","fs","props","attributeManager","getAttributeManager","add","featureIdsPickingColors","size","noAlloc","update","calculateFeatureIdsPickingColors","params","oldProps","updatePbrMaterialUniforms","opts","state","model","setUniforms","u_Camera","getUniforms","project_uCameraPosition","pickFeatureIds","Boolean","mesh","id","materialParser","parseMaterial","setState","getShaders","Model","context","gl","geometry","defines","HAS_UV_REGIONS","uvRegions","parameters","isInstanced","uniforms","unlit","pbrMetallicRoughness","baseColorTexture","delete","GLTFMaterialParser","NORMAL","normals","TEXCOORD_0","texCoords","material","pbrDebug","imageBasedLightingEnvironment","lights","useTangents","attribute","Uint8ClampedArray","length","pickingColor","index","encodePickingColor","SimpleMeshLayer"],"mappings":"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","sourcesContent":["import type {NumericArray} from '@math.gl/core';\nimport {GLTFMaterialParser} from '@luma.gl/experimental';\nimport {Model, pbr} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport type {UpdateParameters, DefaultProps, LayerContext} from '@deck.gl/core';\nimport {SimpleMeshLayer, SimpleMeshLayerProps} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nexport type Mesh = {\n attributes: MeshAttributes;\n indices?: MeshAttribute;\n};\n\nfunction validateGeometryAttributes(attributes) {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};\n }\n}\n\nconst defaultProps: DefaultProps<MeshLayerProps> = {\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\n/** All properties supported by MeshLayer. */\nexport type MeshLayerProps<DataT = any> = _MeshLayerProps<DataT> & SimpleMeshLayerProps<DataT>;\n\n/** Properties added by MeshLayer. */\ntype _MeshLayerProps<DataT> = {\n /**\n * PBR material object. _lighting must be pbr for this to work\n */\n pbrMaterial?: any; // TODO add type when converting Tile3DLayer\n\n /**\n * List of feature ids.\n */\n featureIds?: NumericArray | null;\n};\n\nexport default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<\n DataT,\n Required<_MeshLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'MeshLayer';\n static defaultProps = defaultProps;\n\n getShaders() {\n const shaders = super.getShaders();\n const modules = shaders.modules;\n modules.push(pbr);\n return {...shaders, vs, fs};\n }\n\n initializeState() {\n const {featureIds} = this.props;\n super.initializeState();\n\n const attributeManager = this.getAttributeManager();\n if (featureIds) {\n // attributeManager is always defined in a primitive layer\n attributeManager!.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState(params: UpdateParameters<this>) {\n super.updateState(params);\n\n const {props, oldProps} = params;\n if (props.pbrMaterial !== oldProps.pbrMaterial) {\n this.updatePbrMaterialUniforms(props.pbrMaterial);\n }\n }\n\n draw(opts) {\n const {featureIds} = this.props;\n if (!this.state.model) {\n return;\n }\n this.state.model.setUniforms({\n // Needed for PBR (TODO: find better way to get it)\n // eslint-disable-next-line camelcase\n u_Camera: this.state.model.getUniforms().project_uCameraPosition,\n pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n protected getModel(mesh: Mesh): Model {\n const {id, pbrMaterial} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n // Keep material parser to explicitly remove textures\n this.setState({materialParser});\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.gl, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n defines: {\n ...shaders.defines,\n ...materialParser?.defines,\n HAS_UV_REGIONS: mesh.attributes.uvRegions\n },\n parameters: materialParser?.parameters,\n isInstanced: true\n });\n\n return model;\n }\n\n updatePbrMaterialUniforms(pbrMaterial) {\n const {model} = this.state;\n if (model) {\n const {mesh} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n // Keep material parser to explicitly remove textures\n this.setState({materialParser});\n model.setUniforms(materialParser.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh) {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n\n this.state.materialParser?.delete();\n\n return new GLTFMaterialParser(this.context.gl, {\n attributes: {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n material: {unlit, ...pbrMaterial},\n pbrDebug: false,\n imageBasedLightingEnvironment: null,\n lights: true,\n useTangents: false\n });\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n // This updater is only called if featureIds is not null\n const featureIds = this.props.featureIds!;\n const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n\n const pickingColor = [];\n for (let index = 0; index < featureIds.length; index++) {\n this.encodePickingColor(featureIds[index], pickingColor);\n\n value[index * 3] = pickingColor[0];\n value[index * 3 + 1] = pickingColor[1];\n value[index * 3 + 2] = pickingColor[2];\n }\n\n attribute.value = value;\n }\n\n finalizeState(context: LayerContext) {\n super.finalizeState(context);\n this.state.materialParser?.delete();\n this.setState({materialParser: null});\n }\n}\n"],"file":"mesh-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mesh-layer/mesh-layer.ts"],"names":["validateGeometryAttributes","attributes","hasColorAttribute","COLOR_0","colors","constant","value","Float32Array","defaultProps","pbrMaterial","type","featureIds","optional","MeshLayer","shaders","modules","push","pbr","vs","fs","props","attributeManager","getAttributeManager","add","featureIdsPickingColors","size","noAlloc","update","calculateFeatureIdsPickingColors","params","oldProps","updatePbrMaterialUniforms","opts","state","model","setUniforms","u_Camera","getUniforms","project_uCameraPosition","pickFeatureIds","Boolean","mesh","id","materialParser","parseMaterial","setState","getShaders","Model","context","gl","geometry","defines","HAS_UV_REGIONS","uvRegions","parameters","isInstanced","uniforms","unlit","pbrMetallicRoughness","baseColorTexture","delete","GLTFMaterialParser","NORMAL","normals","TEXCOORD_0","texCoords","material","pbrDebug","imageBasedLightingEnvironment","lights","useTangents","attribute","Uint8ClampedArray","length","pickingColor","index","encodePickingColor","SimpleMeshLayer"],"mappings":"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","sourcesContent":["import type {NumericArray} from '@math.gl/core';\nimport {GLTFMaterialParser} from '@luma.gl/experimental';\nimport {Model, pbr} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport type {UpdateParameters, DefaultProps, LayerContext} from '@deck.gl/core';\nimport {SimpleMeshLayer, SimpleMeshLayerProps} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nexport type Mesh = {\n attributes: MeshAttributes;\n indices?: MeshAttribute;\n};\n\nfunction validateGeometryAttributes(attributes) {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};\n }\n}\n\nconst defaultProps: DefaultProps<MeshLayerProps> = {\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\n/** All properties supported by MeshLayer. */\nexport type MeshLayerProps<DataT = any> = _MeshLayerProps & SimpleMeshLayerProps<DataT>;\n\n/** Properties added by MeshLayer. */\ntype _MeshLayerProps = {\n /**\n * PBR material object. _lighting must be pbr for this to work\n */\n pbrMaterial?: any; // TODO add type when converting Tile3DLayer\n\n /**\n * List of feature ids.\n */\n featureIds?: NumericArray | null;\n};\n\nexport default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<\n DataT,\n Required<_MeshLayerProps> & ExtraProps\n> {\n static layerName = 'MeshLayer';\n static defaultProps = defaultProps;\n\n getShaders() {\n const shaders = super.getShaders();\n const modules = shaders.modules;\n modules.push(pbr);\n return {...shaders, vs, fs};\n }\n\n initializeState() {\n const {featureIds} = this.props;\n super.initializeState();\n\n const attributeManager = this.getAttributeManager();\n if (featureIds) {\n // attributeManager is always defined in a primitive layer\n attributeManager!.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState(params: UpdateParameters<this>) {\n super.updateState(params);\n\n const {props, oldProps} = params;\n if (props.pbrMaterial !== oldProps.pbrMaterial) {\n this.updatePbrMaterialUniforms(props.pbrMaterial);\n }\n }\n\n draw(opts) {\n const {featureIds} = this.props;\n if (!this.state.model) {\n return;\n }\n this.state.model.setUniforms({\n // Needed for PBR (TODO: find better way to get it)\n // eslint-disable-next-line camelcase\n u_Camera: this.state.model.getUniforms().project_uCameraPosition,\n pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n protected getModel(mesh: Mesh): Model {\n const {id, pbrMaterial} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n // Keep material parser to explicitly remove textures\n this.setState({materialParser});\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.gl, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n defines: {\n ...shaders.defines,\n ...materialParser?.defines,\n HAS_UV_REGIONS: mesh.attributes.uvRegions\n },\n parameters: materialParser?.parameters,\n isInstanced: true\n });\n\n return model;\n }\n\n updatePbrMaterialUniforms(pbrMaterial) {\n const {model} = this.state;\n if (model) {\n const {mesh} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n // Keep material parser to explicitly remove textures\n this.setState({materialParser});\n model.setUniforms(materialParser.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh) {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n\n this.state.materialParser?.delete();\n\n return new GLTFMaterialParser(this.context.gl, {\n attributes: {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n material: {unlit, ...pbrMaterial},\n pbrDebug: false,\n imageBasedLightingEnvironment: null,\n lights: true,\n useTangents: false\n });\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n // This updater is only called if featureIds is not null\n const featureIds = this.props.featureIds!;\n const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n\n const pickingColor = [];\n for (let index = 0; index < featureIds.length; index++) {\n this.encodePickingColor(featureIds[index], pickingColor);\n\n value[index * 3] = pickingColor[0];\n value[index * 3 + 1] = pickingColor[1];\n value[index * 3 + 2] = pickingColor[2];\n }\n\n attribute.value = value;\n }\n\n finalizeState(context: LayerContext) {\n super.finalizeState(context);\n this.state.materialParser?.delete();\n this.setState({materialParser: null});\n }\n}\n"],"file":"mesh-layer.js"}
|
|
@@ -64,6 +64,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
64
64
|
var WORLD_SIZE = 512;
|
|
65
65
|
|
|
66
66
|
var defaultProps = _objectSpread(_objectSpread({}, _layers.GeoJsonLayer.defaultProps), {}, {
|
|
67
|
+
data: _tileset2d.urlType,
|
|
67
68
|
onDataLoad: {
|
|
68
69
|
type: 'function',
|
|
69
70
|
value: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.ts"],"names":["WORLD_SIZE","defaultProps","GeoJsonLayer","onDataLoad","type","value","optional","compare","uniqueIdProperty","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","context","viewport","resolution","undefined","props","setState","data","tileJSON","state","tileset","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","fetch","propName","layer","raiseError","tilejson","tiles","opts","minZoom","maxZoom","Number","isFinite","minzoom","maxzoom","loadProps","index","signal","url","Promise","reject","loadOptions","getLoadOptions","mimeType","mvt","coordinates","tileIndex","gis","format","tile","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","Boolean","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n GetPickingInfoParams,\n Viewport,\n COORDINATE_SYSTEM,\n DefaultProps\n} from '@deck.gl/core';\nimport {GeoJsonLayer, GeoJsonLayerProps} from '@deck.gl/layers';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';\n\nimport type {Tileset2DProps, TileLoadProps, GeoBoundingBox} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n getURLFromTemplate,\n isGeoBoundingBox,\n isURLTemplate\n} from '../tileset-2d';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps: DefaultProps<MVTLayerProps> = {\n ...GeoJsonLayer.defaultProps,\n onDataLoad: {type: 'function', value: null, optional: true, compare: false},\n uniqueIdProperty: '',\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport type TileJson = {\n tilejson: string;\n tiles: string[];\n // eslint-disable-next-line camelcase\n vector_layers: any[];\n attribution?: string;\n scheme?: string;\n maxzoom?: number;\n minzoom?: number;\n version?: string;\n};\n\ntype ParsedMvtTile = Feature[] | BinaryFeatures;\n\n/** All props supported by the MVTLayer */\nexport type MVTLayerProps<DataT extends Feature = Feature> = _MVTLayerProps &\n GeoJsonLayerProps<DataT> &\n TileLayerProps<ParsedMvtTile>;\n\n/** Props added by the MVTLayer */\nexport type _MVTLayerProps = {\n /** Called if `data` is a TileJSON URL when it is successfully fetched. */\n onDataLoad?: ((tilejson: TileJson | null) => void) | null;\n\n /** Needed for highlighting a feature split across two or more tiles. */\n uniqueIdProperty?: string;\n\n /** A feature with ID corresponding to the supplied value will be highlighted. */\n highlightedFeatureId?: string | null;\n\n /**\n * Use tile data in binary format.\n *\n * @default true\n */\n binary?: boolean;\n\n /**\n * Loaders used to transform tiles into `data` property passed to `renderSubLayers`.\n *\n * @default [MVTWorkerLoader] from `@loaders.gl/mvt`\n */\n loaders?: Loader[];\n};\n\ntype ContentWGS84Cache = {_contentWGS84?: Feature[]};\n\n/** Render data formatted as [Mapbox Vector Tiles](https://docs.mapbox.com/vector-tiles/specification/). */\nexport default class MVTLayer<\n DataT extends Feature = Feature,\n ExtraProps extends {} = {}\n> extends TileLayer<ParsedMvtTile, Required<_MVTLayerProps> & ExtraProps> {\n static layerName = 'MVTLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded(): boolean {\n return this.state && this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {\n if (changeFlags.dataChanged) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateTileData();\n }\n\n if (this.state?.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n private async _updateTileData(): Promise<void> {\n let data: any = this.props.data;\n let tileJSON: any = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error: any) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON, {propName: 'data', layer: this});\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const opts = super._getTilesetOptions();\n const tileJSON: TileJson | null | undefined = this.state.tileJSON;\n const {minZoom, maxZoom} = this.props;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {\n opts.minZoom = tileJSON.minzoom as number;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))\n ) {\n opts.maxZoom = tileJSON.maxzoom as number;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers(): Layer | null | LayersList {\n if (!this.state?.data) return null;\n return super.renderLayers();\n }\n\n getTileData(loadProps: TileLoadProps): Promise<ParsedMvtTile> {\n const {data, binary} = this.state;\n const {index, signal} = loadProps;\n\n const url = getURLFromTemplate(data, loadProps);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {fetch} = this.props;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: ParsedMvtTile;\n _offset: number;\n tile: Tile2DHeader<ParsedMvtTile>;\n }\n ): Layer | null | LayersList {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): TiledPickingInfo {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = Boolean(this.context.viewport.resolution);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {globalFeatureId: info.index}) as DataT;\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(\n info.object,\n info.tile!.bbox as GeoBoundingBox, // eslint-disable-line\n this.context.viewport\n );\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader<ParsedMvtTile>): Record<string, any> {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n private getHighlightedObjectIndex(tile: Tile2DHeader<ParsedMvtTile>): number {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n private _pickObjects(maxObjects: number | null): PickingInfo[] {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck!.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n /** Get the rendered features in the current viewport. */\n getRenderedFeatures(maxFeatures: number | null = null): DataT[] {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures: DataT[] = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object as DataT);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object as DataT);\n }\n }\n\n return renderedFeatures;\n }\n\n private _setWGS84PropertyForTiles(): void {\n const propName = 'dataInWGS84';\n const tileset: Tileset2D = this.state.tileset;\n\n // @ts-expect-error selectedTiles are always initialized when tile is being processed\n tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n const {bbox} = tile;\n if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {\n // Create a cache to transform only once\n\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature: Feature, uniqueIdProperty: string | undefined) {\n if (feature.properties && uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature: Feature): string | null {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(\n object: Feature,\n bbox: GeoBoundingBox,\n viewport: Viewport\n): Feature {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature as Feature;\n}\n"],"file":"mvt-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.ts"],"names":["WORLD_SIZE","defaultProps","GeoJsonLayer","data","urlType","onDataLoad","type","value","optional","compare","uniqueIdProperty","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","context","viewport","resolution","undefined","props","setState","tileJSON","state","tileset","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","fetch","propName","layer","raiseError","tilejson","tiles","opts","minZoom","maxZoom","Number","isFinite","minzoom","maxzoom","loadProps","index","signal","url","Promise","reject","loadOptions","getLoadOptions","mimeType","mvt","coordinates","tileIndex","gis","format","tile","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","Boolean","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n GetPickingInfoParams,\n Viewport,\n COORDINATE_SYSTEM,\n DefaultProps\n} from '@deck.gl/core';\nimport {GeoJsonLayer, GeoJsonLayerProps} from '@deck.gl/layers';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';\n\nimport type {Tileset2DProps, TileLoadProps, GeoBoundingBox} from '../tileset-2d';\nimport {\n urlType,\n Tileset2D,\n Tile2DHeader,\n getURLFromTemplate,\n isGeoBoundingBox,\n isURLTemplate\n} from '../tileset-2d';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps: DefaultProps<MVTLayerProps> = {\n ...GeoJsonLayer.defaultProps,\n data: urlType,\n onDataLoad: {type: 'function', value: null, optional: true, compare: false},\n uniqueIdProperty: '',\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport type TileJson = {\n tilejson: string;\n tiles: string[];\n // eslint-disable-next-line camelcase\n vector_layers: any[];\n attribution?: string;\n scheme?: string;\n maxzoom?: number;\n minzoom?: number;\n version?: string;\n};\n\ntype ParsedMvtTile = Feature[] | BinaryFeatures;\n\n/** All props supported by the MVTLayer */\nexport type MVTLayerProps = _MVTLayerProps &\n Omit<GeoJsonLayerProps, 'data'> &\n TileLayerProps<ParsedMvtTile>;\n\n/** Props added by the MVTLayer */\nexport type _MVTLayerProps = {\n /** Called if `data` is a TileJSON URL when it is successfully fetched. */\n onDataLoad?: ((tilejson: TileJson | null) => void) | null;\n\n /** Needed for highlighting a feature split across two or more tiles. */\n uniqueIdProperty?: string;\n\n /** A feature with ID corresponding to the supplied value will be highlighted. */\n highlightedFeatureId?: string | null;\n\n /**\n * Use tile data in binary format.\n *\n * @default true\n */\n binary?: boolean;\n\n /**\n * Loaders used to transform tiles into `data` property passed to `renderSubLayers`.\n *\n * @default [MVTWorkerLoader] from `@loaders.gl/mvt`\n */\n loaders?: Loader[];\n};\n\ntype ContentWGS84Cache = {_contentWGS84?: Feature[]};\n\n/** Render data formatted as [Mapbox Vector Tiles](https://docs.mapbox.com/vector-tiles/specification/). */\nexport default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<\n ParsedMvtTile,\n Required<_MVTLayerProps> & ExtraProps\n> {\n static layerName = 'MVTLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded(): boolean {\n return this.state && this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {\n if (changeFlags.dataChanged) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateTileData();\n }\n\n if (this.state?.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n private async _updateTileData(): Promise<void> {\n let data: any = this.props.data;\n let tileJSON: any = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error: any) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON, {propName: 'data', layer: this});\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const opts = super._getTilesetOptions();\n const tileJSON: TileJson | null | undefined = this.state.tileJSON;\n const {minZoom, maxZoom} = this.props;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {\n opts.minZoom = tileJSON.minzoom as number;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))\n ) {\n opts.maxZoom = tileJSON.maxzoom as number;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers(): Layer | null | LayersList {\n if (!this.state?.data) return null;\n return super.renderLayers();\n }\n\n getTileData(loadProps: TileLoadProps): Promise<ParsedMvtTile> {\n const {data, binary} = this.state;\n const {index, signal} = loadProps;\n\n const url = getURLFromTemplate(data, loadProps);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {fetch} = this.props;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: ParsedMvtTile;\n _offset: number;\n tile: Tile2DHeader<ParsedMvtTile>;\n }\n ): Layer | null | LayersList {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): TiledPickingInfo {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = Boolean(this.context.viewport.resolution);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {\n globalFeatureId: info.index\n }) as Feature;\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(\n info.object,\n info.tile!.bbox as GeoBoundingBox, // eslint-disable-line\n this.context.viewport\n );\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader<ParsedMvtTile>): Record<string, any> {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n private getHighlightedObjectIndex(tile: Tile2DHeader<ParsedMvtTile>): number {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n private _pickObjects(maxObjects: number | null): PickingInfo[] {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck!.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n /** Get the rendered features in the current viewport. */\n getRenderedFeatures(maxFeatures: number | null = null): Feature[] {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures: Feature[] = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object as Feature);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object as Feature);\n }\n }\n\n return renderedFeatures;\n }\n\n private _setWGS84PropertyForTiles(): void {\n const propName = 'dataInWGS84';\n const tileset: Tileset2D = this.state.tileset;\n\n // @ts-expect-error selectedTiles are always initialized when tile is being processed\n tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n const {bbox} = tile;\n if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {\n // Create a cache to transform only once\n\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature: Feature, uniqueIdProperty: string | undefined) {\n if (feature.properties && uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature: Feature): string | null {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(\n object: Feature,\n bbox: GeoBoundingBox,\n viewport: Viewport\n): Feature {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature as Feature;\n}\n"],"file":"mvt-layer.js"}
|
|
@@ -56,34 +56,29 @@ var defaultProps = {
|
|
|
56
56
|
value: [0, 0, 0, 255]
|
|
57
57
|
},
|
|
58
58
|
pointSize: 1.0,
|
|
59
|
-
data:
|
|
59
|
+
data: '',
|
|
60
60
|
loader: _dTiles.Tiles3DLoader,
|
|
61
61
|
onTilesetLoad: {
|
|
62
62
|
type: 'function',
|
|
63
|
-
value: function value(tileset3d) {}
|
|
64
|
-
compare: false
|
|
63
|
+
value: function value(tileset3d) {}
|
|
65
64
|
},
|
|
66
65
|
onTileLoad: {
|
|
67
66
|
type: 'function',
|
|
68
|
-
value: function value(tileHeader) {}
|
|
69
|
-
compare: false
|
|
67
|
+
value: function value(tileHeader) {}
|
|
70
68
|
},
|
|
71
69
|
onTileUnload: {
|
|
72
70
|
type: 'function',
|
|
73
|
-
value: function value(tileHeader) {}
|
|
74
|
-
compare: false
|
|
71
|
+
value: function value(tileHeader) {}
|
|
75
72
|
},
|
|
76
73
|
onTileError: {
|
|
77
74
|
type: 'function',
|
|
78
|
-
value: function value(tile, message, url) {}
|
|
79
|
-
compare: false
|
|
75
|
+
value: function value(tile, message, url) {}
|
|
80
76
|
},
|
|
81
77
|
_getMeshColor: {
|
|
82
78
|
type: 'function',
|
|
83
79
|
value: function value(tileHeader) {
|
|
84
80
|
return [255, 255, 255];
|
|
85
|
-
}
|
|
86
|
-
compare: false
|
|
81
|
+
}
|
|
87
82
|
}
|
|
88
83
|
};
|
|
89
84
|
|