examples/website/heatmap/app.js (48 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 {HeatmapLayer} from '@deck.gl/aggregation-layers';
// Set your mapbox token here
const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line
const DATA_URL =
'https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/screen-grid/uber-pickup-locations.json'; // eslint-disable-line
const INITIAL_VIEW_STATE = {
longitude: -73.75,
latitude: 40.73,
zoom: 9,
maxZoom: 16,
pitch: 0,
bearing: 0
};
export default function App({
data = DATA_URL,
intensity = 1,
threshold = 0.03,
radiusPixels = 30,
mapStyle = 'mapbox://styles/mapbox/dark-v9'
}) {
const layers = [
new HeatmapLayer({
data,
id: 'heatmp-layer',
pickable: false,
getPosition: d => [d[0], d[1]],
getWeight: d => d[2],
radiusPixels,
intensity,
threshold
})
];
return (
<DeckGL initialViewState={INITIAL_VIEW_STATE} controller={true} layers={layers}>
<StaticMap
reuseMaps
mapStyle={mapStyle}
preventStyleDiffing={true}
mapboxApiAccessToken={MAPBOX_TOKEN}
/>
</DeckGL>
);
}
export function renderToDOM(container) {
render(<App />, container);
}