{
const recordBatch = table.batches[0];
const geometryColumnIdx = 2;
const geometryColumn = recordBatch.getChildAt(geometryColumnIdx);
const geometryOffsets = geometryColumn.data[0].valueOffsets;
const polygonOffsets = geometryColumn.getChildAt(0).data[0].valueOffsets;
const ringOffsets = geometryColumn.getChildAt(0).getChildAt(0)
.data[0].valueOffsets;
const flatCoordinateArray = geometryColumn
.getChildAt(0)
.getChildAt(0)
.getChildAt(0)
.getChildAt(0).data[0].values;
const resolvedPolygonOffsets = new Int32Array(polygonOffsets.length);
for (let i = 0; i < resolvedPolygonOffsets.length; ++i) {
resolvedPolygonOffsets[i] = ringOffsets[polygonOffsets[i]];
}
const fillColors = new Float32Array(flatCoordinateArray.length * 4);
for (let i = 0; i < flatCoordinateArray.length; ++i) {
fillColors[i * 4] = 0;
fillColors[i * 4 + 1] = i / flatCoordinateArray.length;
fillColors[i * 4 + 2] = i / flatCoordinateArray.length;
fillColors[i * 4 + 3] = 100 / 255;
}
console.log(polygonOffsets.length);
const data = {
length: polygonOffsets.length,
startIndices: resolvedPolygonOffsets,
attributes: {
getPolygon: { value: flatCoordinateArray, size: 2 },
getFillColor: { value: fillColors, size: 4 }
}
};
const layer = new deck.SolidPolygonLayer({
id: `layer-${Date.now()}`,
data,
_normalize: false,
_windingOrder: "CCW",
getLineColor: [0, 0, 0, 255]
});
deckglMap.setProps({ layers: [layer] });
}