in examples/website/icon/app.js [63:122]
export default function App({
data = DATA_URL,
iconMapping = 'data/location-icon-mapping.json',
iconAtlas = 'data/location-icon-atlas.png',
showCluster = true,
mapStyle = 'mapbox://styles/mapbox/dark-v9'
}) {
const [hoverInfo, setHoverInfo] = useState({});
const hideTooltip = () => {
setHoverInfo({});
};
const expandTooltip = info => {
if (info.picked && showCluster) {
setHoverInfo(info);
} else {
setHoverInfo({});
}
};
const layerProps = {
data,
pickable: true,
getPosition: d => d.coordinates,
iconAtlas,
iconMapping,
onHover: !hoverInfo.objects && setHoverInfo
};
const layer = showCluster
? new IconClusterLayer({...layerProps, id: 'icon-cluster', sizeScale: 60})
: new IconLayer({
...layerProps,
id: 'icon',
getIcon: d => 'marker',
sizeUnits: 'meters',
sizeScale: 2000,
sizeMinPixels: 6
});
return (
<DeckGL
layers={[layer]}
views={MAP_VIEW}
initialViewState={INITIAL_VIEW_STATE}
controller={{dragRotate: false}}
onViewStateChange={hideTooltip}
onClick={expandTooltip}
>
<StaticMap
reuseMaps
mapStyle={mapStyle}
preventStyleDiffing={true}
mapboxApiAccessToken={MAPBOX_TOKEN}
/>
{renderTooltip(hoverInfo)}
</DeckGL>
);
}