in modules/layers/src/layers/editable-geojson-layer.ts [468:541]
createGuidesLayers() {
const mode = this.getActiveMode();
// @ts-expect-error narrow type
const guides: FeatureCollection = mode.getGuides(this.getModeProps(this.props));
if (!guides || !guides.features.length) {
return [];
}
const subLayerProps = {
linestrings: {
billboard: this.props.billboard,
autoHighlight: false,
},
'polygons-fill': {
autoHighlight: false,
},
'polygons-stroke': {
billboard: this.props.billboard,
},
};
if (this.props.editHandleType === 'icon') {
subLayerProps['points-icon'] = {
type: IconLayer,
iconAtlas: this.props.editHandleIconAtlas,
iconMapping: this.props.editHandleIconMapping,
sizeUnits: this.props.editHandleIconSizeUnits,
sizeScale: this.props.editHandleIconSizeScale,
getIcon: guideAccessor(this.props.getEditHandleIcon),
getSize: guideAccessor(this.props.getEditHandleIconSize),
getColor: guideAccessor(this.props.getEditHandleIconColor),
getAngle: guideAccessor(this.props.getEditHandleIconAngle),
billboard: this.props.billboard,
};
} else {
subLayerProps['points-circle'] = {
type: ScatterplotLayer,
radiusScale: this.props.editHandlePointRadiusScale,
stroked: this.props.editHandlePointOutline,
getLineWidth: this.props.editHandlePointStrokeWidth,
radiusUnits: this.props.editHandlePointRadiusUnits,
radiusMinPixels: this.props.editHandlePointRadiusMinPixels,
radiusMaxPixels: this.props.editHandlePointRadiusMaxPixels,
getRadius: guideAccessor(this.props.getEditHandlePointRadius),
getFillColor: guideAccessor(this.props.getEditHandlePointColor),
getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor),
billboard: this.props.billboard,
};
}
const layer = new GeoJsonLayer(
this.getSubLayerProps({
id: `guides`,
data: guides,
fp64: this.props.fp64,
_subLayerProps: subLayerProps,
lineWidthScale: this.props.lineWidthScale,
lineWidthMinPixels: this.props.lineWidthMinPixels,
lineWidthMaxPixels: this.props.lineWidthMaxPixels,
lineWidthUnits: this.props.lineWidthUnits,
lineJointRounded: this.props.lineJointRounded,
lineCapRounded: this.props.lineCapRounded,
lineMiterLimit: this.props.lineMiterLimit,
getLineColor: guideAccessor(this.props.getTentativeLineColor),
getLineWidth: guideAccessor(this.props.getTentativeLineWidth),
getFillColor: guideAccessor(this.props.getTentativeFillColor),
pointType: this.props.editHandleType === 'icon' ? 'icon' : 'circle',
iconAtlas: this.props.editHandleIconAtlas,
})
);
return [layer];
}