in modules/manifold/src/utils/kepler-utils.js [77:135]
export function getKeplerLayers(
idsInSegmentgroups,
geoFeatures,
isVisible,
colorByFeature
) {
// iterate each feature
const layersInfoNested = geoFeatures.map((geoFeatureDef, geoFeatureId) => {
// no need to create 2 layers if this is an agregated layer
if (!geoFeatureDef.pair) {
return {
geoFeatureDef,
geoFeatureId,
};
}
// iterate each segment groups since no per-layer filtering is supported T3638323 https://github.com/keplergl/kepler.gl/issues/403
return idsInSegmentgroups.map((dataIds, segmentGroupId) => {
return {
geoFeatureDef,
geoFeatureId,
numDataPoints: dataIds.length,
segmentGroupId,
};
});
});
// flatten
const layersInfo = [].concat.apply([], layersInfoNested);
return layersInfo.map(info => {
const {geoFeatureDef, geoFeatureId, numDataPoints, segmentGroupId} = info;
const layerSuffix = segmentGroupId
? `group_${segmentGroupId}`
: 'aggregated';
const layerId = `${geoFeatureDef.name}_${layerSuffix}`;
const type = getLayerType(geoFeatureDef);
// if this is hexagonId layer, point to the aggregated dataset
const dataId =
type === 'hexagonId'
? `${KEPLER_DATASET_NAME}_hex_${geoFeatureDef.name}`
: `${KEPLER_DATASET_NAME}_${segmentGroupId}`;
const columns = getLayerColumns(geoFeatureDef, type);
const visualChannels = getLayerVisualChannels(type, colorByFeature);
const visConfig = getLayerVisConfig(type, numDataPoints, segmentGroupId);
return {
id: layerId,
type,
config: {
dataId,
label: layerId,
columns,
isVisible: isVisible[geoFeatureId],
visConfig,
},
visualChannels,
};
});
}