renderLayer()

in src/layers/s2-geometry-layer/s2-geometry-layer.js [264:330]


  renderLayer(opts) {
    const {data, gpuFilter, interactionConfig, mapState} = opts;

    const defaultLayerProps = this.getDefaultDeckLayerProps(opts);

    const eleZoomFactor = this.getElevationZoomFactor(mapState);
    const zoomFactor = this.getZoomFactor(mapState);
    const {config} = this;
    const {visConfig} = config;

    const updateTriggers = {
      getLineColor: {
        color: visConfig.strokeColor,
        colorField: config.strokeColorField,
        colorRange: visConfig.strokeColorRange,
        colorScale: config.strokeColorScale
      },
      getLineWidth: {
        sizeField: config.sizeField,
        sizeRange: visConfig.sizeRange
      },
      getFillColor: {
        color: config.color,
        colorField: config.colorField,
        colorRange: visConfig.colorRange,
        colorScale: config.colorScale
      },
      getElevation: {
        heightField: config.heightField,
        heightScaleType: config.heightScale,
        heightRange: visConfig.heightRange
      },
      getFilterValue: gpuFilter.filterValueUpdateTriggers
    };

    return [
      new S2Layer({
        ...defaultLayerProps,
        ...interactionConfig,
        ...data,
        getS2Token: d => d.token,

        autoHighlight: visConfig.enable3d,
        highlightColor: HIGHLIGH_COLOR_3D,

        // stroke
        lineWidthScale: visConfig.thickness * zoomFactor * zoomFactorValue,
        stroked: visConfig.stroked,
        lineMiterLimit: 2,

        // Filled color
        filled: visConfig.filled,
        opacity: visConfig.opacity,
        wrapLongitude: false,

        // Elevation
        elevationScale: visConfig.elevationScale * eleZoomFactor,
        extruded: visConfig.enable3d,

        wireframe: visConfig.wireframe,

        pickable: true,

        updateTriggers
      })
    ];
  }