onClick/onHover
by felixp
HTML
<!DOCTYPE html>
<html>
<head>
<title>deck.gl+Google</title>
<script src="https://api.tiles.mapbox.com/mapbox-gl-js/v1.4.0/mapbox-gl.js"></script>
<link href="https://api.tiles.mapbox.com/mapbox-gl-js/v1.4.0/mapbox-gl.css" rel="stylesheet" />
<script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
<script src="https://unpkg.com/[email protected]/dist.min.js"></script>
<script src="https://unpkg.com/deck.gl/[email protected]/dist.min.js"></script>
<script src="https://unpkg.com/@deck.gl/[email protected]/dist.min.js"></script>
<!-- jsFiddle will insert css and js -->
</head>
<body>
<div id="map"></div>
</body>
</html>
CSS
body {
margin: 0;
padding: 0;
}
#map{
width: 100vw;
height: 100vh;
}
JavaScript
deck.carto.setDefaultCredentials({
accessToken: 'eyJhbGciOiJIUzI1NiJ9.eyJhIjoiYWNfN3hoZnd5bWwiLCJqdGkiOiJhMjQyNDM4MSJ9.5bAXb8y7PyIOB__X7i-iQUWCZgLkedtGoqRI25HuQxc'
});
const longitude = -3.7082998;
const latitude = 40.4205556;
new deck.DeckGL({
container: 'map',
mapStyle: deck.carto.BASEMAP.DARK_MATTER_NOLABELS,
initialViewState: {latitude, longitude, zoom: 15, pitch: 60},
controller: true,
layerFilter: ({layer, isPicking, renderPass}) => {
if (layer.id === 'buildings' && renderPass === 'picking:query'){
return false;
}
if (layer.id === 'circle' && renderPass === 'picking:hover') {
return false;
}
return true;
},
layers: [
new deck.carto.CartoLayer({
id: 'buildings',
connection: 'bigquery',
type: deck.carto.MAP_TYPES.TABLE,
data: 'cartodb-on-gcp-backend-team.alasarr.madrid_buildings',
getFillColor: [255, 0, 0],
pickable: true,
onHover: info => info.object && console.log(info.object.properties)
}),
new deck.ScatterplotLayer({
id: 'circle',
data: [[longitude, latitude]],
getPosition: d => d,
getRadius: 1000,
getFillColor: [0, 0, 255, 80],
pickable: true,
onClick: () => console.log('Clicked overlay')
})
]
});