website/src/doc-demos/layers.js (191 lines of code) (raw):

import {COORDINATE_SYSTEM} from '@deck.gl/core'; import { ArcLayer, BitmapLayer, ColumnLayer, GeoJsonLayer, GridCellLayer, IconLayer, LineLayer, PathLayer, PointCloudLayer, PolygonLayer, ScatterplotLayer, TextLayer } from '@deck.gl/layers'; import makeLayerDemo from './layer-demo'; import {DATA_URI} from '../constants/defaults'; import {colorToRGBArray} from '../utils/format-utils'; export const ArcLayerDemo = makeLayerDemo({ getTooltip: ({object}) => `${object.from.name} to ${object.to.name}`, layer: new ArcLayer({ data: `${DATA_URI}/bart-segments.json`, pickable: true, getWidth: 12, getSourcePosition: d => d.from.coordinates, getTargetPosition: d => d.to.coordinates, getSourceColor: d => [Math.sqrt(d.inbound), 140, 0], getTargetColor: d => [Math.sqrt(d.outbound), 140, 0] }) }); export const BitmapLayerDemo = makeLayerDemo({ layer: new BitmapLayer({ bounds: [-122.519, 37.7045, -122.355, 37.829], image: `${DATA_URI}/sf-districts.png` }) }); export const ColumnLayerDemo = makeLayerDemo({ getTooltip: ({object}) => `height: ${object.value * 5000}m`, layer: new ColumnLayer({ data: `${DATA_URI}/hexagons.json`, diskResolution: 12, radius: 250, extruded: true, pickable: true, elevationScale: 100, getPosition: d => d.centroid, getFillColor: d => [48, 128, d.value * 255, 255], getLineColor: [0, 0, 0], getLineWidth: 20, getElevation: d => d.value * 50 }) }); export const GeoJsonLayerDemo = makeLayerDemo({ getTooltip: ({object}) => object.properties.name || object.properties.station, layer: new GeoJsonLayer({ data: `${DATA_URI}/bart.geo.json`, pickable: true, stroked: false, filled: true, extruded: true, lineWidthScale: 20, lineWidthMinPixels: 2, getFillColor: [160, 160, 180, 200], getLineColor: d => colorToRGBArray(d.properties.color), getRadius: 100, getLineWidth: 1, getElevation: 30 }) }); export const GridCellLayerDemo = makeLayerDemo({ getTooltip: ({object}) => `height: ${object.value * 5000}m`, layer: new GridCellLayer({ data: `${DATA_URI}/hexagons.json`, pickable: true, extruded: true, cellSize: 200, elevationScale: 5000, getPosition: d => d.centroid, getFillColor: d => [48, 128, d.value * 255, 255], getElevation: d => d.value }) }); export const IconLayerDemo = makeLayerDemo({ getTooltip: ({object}) => `${object.name}\n${object.address}`, layer: new IconLayer({ data: `${DATA_URI}/bart-stations.json`, pickable: true, iconAtlas: `${DATA_URI}/icon-atlas.png`, iconMapping: { marker: { x: 0, y: 0, width: 128, height: 128, anchorY: 128, mask: true } }, sizeScale: 8, getPosition: d => d.coordinates, getIcon: d => 'marker', getSize: d => 5, getColor: d => [Math.sqrt(d.exits), 140, 0] }) }); export const LineLayerDemo = makeLayerDemo({ getTooltip: ({object}) => `${object.from.name} to ${object.to.name}`, layer: new LineLayer({ data: `${DATA_URI}/bart-segments.json`, pickable: true, getWidth: 12, getSourcePosition: d => d.from.coordinates, getTargetPosition: d => d.to.coordinates, getColor: d => [Math.sqrt(d.inbound + d.outbound), 140, 0] }) }); export const PathLayerDemo = makeLayerDemo({ getTooltip: ({object}) => object.name, layer: new PathLayer({ data: `${DATA_URI}/bart-lines.json`, parameters: { depthMask: false }, pickable: true, widthScale: 20, widthMinPixels: 2, getPath: d => d.path, getColor: d => colorToRGBArray(d.color), getWidth: d => 5 }) }); export const PointCloudLayerDemo = makeLayerDemo({ getTooltip: ({object}) => object.position.join(', '), layer: new PointCloudLayer({ data: `${DATA_URI}/pointcloud.json`, pickable: false, coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS, coordinateOrigin: [-122.4, 37.74], pointSize: 2, getPosition: d => d.position, getNormal: d => d.normal, getColor: d => d.color }) }); export const PolygonLayerDemo = makeLayerDemo({ getTooltip: ({object}) => `${object.zipcode}\nPopulation: ${object.population}`, layer: new PolygonLayer({ data: `${DATA_URI}/sf-zipcodes.json`, pickable: true, stroked: true, filled: true, wireframe: true, lineWidthMinPixels: 1, getPolygon: d => d.contour, getElevation: d => d.population / d.area / 10, getFillColor: d => [d.population / d.area / 60, 140, 0], getLineColor: [80, 80, 80], getLineWidth: d => 1 }) }); export const ScatterplotLayerDemo = makeLayerDemo({ getTooltip: ({object}) => `${object.name}\n${object.address}`, layer: new ScatterplotLayer({ data: `${DATA_URI}/bart-stations.json`, pickable: true, opacity: 0.8, stroked: true, radiusScale: 6, radiusMinPixels: 1, radiusMaxPixels: 100, lineWidthMinPixels: 1, getPosition: d => d.coordinates, getRadius: d => Math.sqrt(d.exits), getFillColor: [255, 140, 0], getLineColor: [0, 0, 0] }) }); export const TextLayerDemo = makeLayerDemo({ getTooltip: ({object}) => `${object.name}\n${object.address}`, layer: new TextLayer({ data: `${DATA_URI}/bart-stations.json`, pickable: true, sizeScale: 1, getPosition: d => d.coordinates, getText: d => d.name, getSize: 16, getAngle: 0, getTextAnchor: 'middle', getAlignmentBaseline: 'center' }) });