renderLayer()

in src/layers/h3-hexagon-layer/h3-hexagon-layer.js [231:305]


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

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

    const h3HexagonLayerTriggers = {
      getFillColor: {
        color: config.color,
        colorField: config.colorField,
        colorRange: visConfig.colorRange,
        colorScale: config.colorScale
      },
      getElevation: {
        sizeField: config.sizeField,
        sizeRange: visConfig.sizeRange,
        sizeScale: config.sizeScale,
        enable3d: visConfig.enable3d
      },
      getFilterValue: gpuFilter.filterValueUpdateTriggers
    };

    const columnLayerTriggers = {
      getCoverage: {
        coverageField: config.coverageField,
        coverageRange: visConfig.coverageRange
      }
    };

    const defaultLayerProps = this.getDefaultDeckLayerProps(opts);

    return [
      new H3HexagonLayer({
        ...defaultLayerProps,
        ...data,
        wrapLongitude: false,

        getHexagon: x => x.id,

        // coverage
        coverage: config.coverageField ? 1 : visConfig.coverage,

        // highlight
        autoHighlight: visConfig.enable3d,
        highlightColor: HIGHLIGH_COLOR_3D,

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

        // render
        updateTriggers: h3HexagonLayerTriggers,
        _subLayerProps: {
          'hexagon-cell': {
            type: EnhancedColumnLayer,
            getCoverage: data.getCoverage,
            updateTriggers: columnLayerTriggers
          }
        }
      }),
      ...(this.isLayerHovered(objectHovered) && !config.sizeField
        ? [
            new GeoJsonLayer({
              ...this.getDefaultHoverLayerProps(),
              data: [idToPolygonGeo(objectHovered)],
              getLineColor: config.highlightColor,
              lineWidthScale: DEFAULT_LINE_SCALE_VALUE * zoomFactor,
              wrapLongitude: false
            })
          ]
        : [])
    ];
  }