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);
}