1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
<html>
<head>
<script src="https://unpkg.com/deck.gl@^8.8.0/dist.min.js"></script>
<script src="https://unpkg.com/@deck.gl/carto@^8.8.0/dist.min.js"></script>
<script src="https://unpkg.com/maplibre-gl@2.1.9/dist/maplibre-gl.js"></script>
<link href="https://unpkg.com/maplibre-gl@2.1.9/dist/maplibre-gl.css" rel="stylesheet" />
</head>
<body style="margin: 0; padding: 0;">
<div id="map" style="width: 100vw; height: 100vh"></div>
</body>
<script type="text/javascript">
const material = {
ambient: 0.2,
diffuse: 0.6,
shininess: 32,
specularColor: [232, 232, 247]
};
const lightingEffect = new deck.LightingEffect({
light1: new deck.AmbientLight({
color: [255, 255, 255],
intensity: 1.0
}),
light2: new deck.DirectionalLight({
color: [255, 255, 255],
intensity: 2.0,
direction: [-1, -2, -3],
_shadow: true
})
});
lightingEffect.shadowColor = [0, 0, 0, 0.3];
const theme = {
buildingColor: [232, 232, 247],
material,
effects: [lightingEffect]
};
async function initialize() {
deck.carto.setDefaultCredentials({
apiBaseUrl: 'https://gcp-us-east1.api.carto.com',
accessToken: 'eyJhbGciOiJIUzI1NiJ9.eyJhIjoiYWNfbHFlM3p3Z3UiLCJqdGkiOiI1YjI0OWE2ZCJ9.Y7zB30NJFzq5fPv8W5nkoH5lPXFWQP0uywDtqUg8y8c'
});
const deckgl = new deck.DeckGL({
container: 'map',
map: maplibregl,
mapStyle: deck.carto.BASEMAP.POSITRON_NOLABELS,
initialViewState: {
longitude: -74.012,
latitude: 40.705,
zoom: 14.5,
pitch: 40,
bearing: 0
},
controller: true,
layers: [
// This is only needed when using shadow effects
new deck.PolygonLayer({
id: 'ground-layer',
data: [[[-74.0, 40.7], [-74.02, 40.7], [-74.02, 40.72], [-74.0, 40.72]]],
getPolygon: f => f,
stroked: false,
getFillColor: [0, 0, 0, 0]
}),
new deck.carto.CartoLayer({
id: 'buildings-layer',
connection: 'bqconn',
type: deck.carto.MAP_TYPES.QUERY,
data: 'SELECT geom, height FROM cartobq.public_account.lower_manhattan_buildings',
extruded: true,
getElevation: f => f.properties.height,
getFillColor: theme.buildingColor
})
],
effects: theme.effects
});
}
initialize();
</script>
</html>
|