examples/website/scatterplot/app.js (52 lines of code) (raw):

import React from 'react'; import {render} from 'react-dom'; import {StaticMap} from 'react-map-gl'; import DeckGL from '@deck.gl/react'; import {ScatterplotLayer} from '@deck.gl/layers'; // Set your mapbox token here const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line const MALE_COLOR = [0, 128, 255]; const FEMALE_COLOR = [255, 0, 128]; // Source data CSV const DATA_URL = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/scatterplot/manhattan.json'; // eslint-disable-line const INITIAL_VIEW_STATE = { longitude: -74, latitude: 40.7, zoom: 11, maxZoom: 16, pitch: 0, bearing: 0 }; export default function App({ data = DATA_URL, radius = 30, maleColor = MALE_COLOR, femaleColor = FEMALE_COLOR, mapStyle = 'mapbox://styles/mapbox/light-v9' }) { const layers = [ new ScatterplotLayer({ id: 'scatter-plot', data, radiusScale: radius, radiusMinPixels: 0.25, getPosition: d => [d[0], d[1], 0], getFillColor: d => (d[2] === 1 ? maleColor : femaleColor), getRadius: 1, updateTriggers: { getFillColor: [maleColor, femaleColor] } }) ]; return ( <DeckGL layers={layers} initialViewState={INITIAL_VIEW_STATE} controller={true}> <StaticMap reuseMaps mapStyle={mapStyle} preventStyleDiffing={true} mapboxApiAccessToken={MAPBOX_TOKEN} /> </DeckGL> ); } export function renderToDOM(container) { render(<App />, container); }