Skip to content

Custom hazard layer

registerHazardLayer declares a new hazard type and its field bindings:

ts
import { registerHazardLayer, HazardLayer } from '@yodolabs/plateau-r3f';

registerHazardLayer({
  type: 'heat_island',
  valueField: 'heat_island_index',
  coveredField: 'heat_island_covered',
  defaultRamp: {
    type: 'linear',
    stops: [
      { value: 0, color: '#fff7bc' },
      { value: 1, color: '#fec44f' },
      { value: 2, color: '#d95f0e' },
    ],
  },
});

// then anywhere inside <Plateau>:
<HazardLayer type="heat_island" opacity={0.6} />

For zone-style hazards (boolean per building), set inZoneField instead of valueField:

ts
registerHazardLayer({
  type: 'evac_zone_a',
  inZoneField: 'evac_zone_a_in',
  coveredField: 'evac_zone_a_covered',
});

Built-in types cannot be overridden — registerHazardLayer({ type: 'river_flood', ... }) throws.

The unregister function returned by registerHazardLayer removes the registration. Call it on unmount if you registered conditionally.

MIT License. PLATEAU data © Project PLATEAU / MLIT — CC BY 4.0.