Skip to content

Commit 52d5979

Browse files
committed
intelligence map - add label and tooltip on hover
1 parent 22b06ca commit 52d5979

File tree

1 file changed

+41
-29
lines changed

1 file changed

+41
-29
lines changed

src/components/intelligence-map.js

Lines changed: 41 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
import { FlyToInterpolator, MapView } from '@deck.gl/core'
1010
import DeckGL from '@deck.gl/react'
1111
import { StaticMap } from 'react-map-gl'
12-
import { GeoJsonLayer } from '@deck.gl/layers';
12+
import { GeoJsonLayer, TextLayer } from '@deck.gl/layers';
1313

1414
import { styled, setup } from 'goober'
1515

@@ -30,9 +30,9 @@ const INIT_VIEW_STATE = {
3030
bearing: 0,
3131
transitionDuration: 1000,
3232
transitionInterpolator: new FlyToInterpolator(),
33-
latitude: 57.411,
33+
latitude: 61.411,
3434
longitude: -99,
35-
zoom: 2.9,
35+
zoom: 2.5,
3636
}
3737

3838
const propTypes = {
@@ -92,41 +92,53 @@ const IntelligenceMap = ({
9292
}, []);
9393

9494
const handleFillColor = d => {
95-
let fillColor = [100, 105, 155, 50]
95+
let fillColor = [153, 204, 255, 70]
9696
if (hoverProvince.object) {
9797
if (d.pr_code === hoverProvince.object.pr_code) {
98-
fillColor = [100, 105, 155]
98+
fillColor = [0, 128, 255, 99]
9999
} else {
100-
fillColor = [100, 105, 155, 50]
100+
fillColor = [153, 204, 255, 70]
101101
}
102102
}
103103

104104
return fillColor
105105
}
106106

107-
layers = new GeoJsonLayer({
108-
id: 'polygon-layer',
109-
data: GeoJson,
107+
layers = [
108+
new GeoJsonLayer({
109+
id: 'polygon-layer',
110+
data: GeoJson,
111+
pickable: true,
112+
stroked: false,
113+
extruded: true,
114+
filled: true,
115+
wireframe: true,
116+
getLineWidth: 1,
117+
lineWidthMinPixels: 1,
118+
lineWidthScale: 20,
119+
getText: d => d.pr_name,
120+
getLineWidth: 1,
121+
getElevation: 30,
122+
getFillColor: d => handleFillColor(d),
123+
getRadius: 100,
124+
updateTriggers: {
125+
getFillColor: [hoverProvince]
126+
},
127+
onHover: d => setHoverProvince(d)
128+
}),
129+
130+
new TextLayer({
131+
id: 'text-layer',
132+
data: 'https://raw.githubusercontent.com/Clavicus/Testing-Requests/master/canadian-provinces.json',
110133
pickable: true,
111-
stroked: false,
112-
extruded: true,
113-
filled: true,
114-
wireframe: true,
115-
getLineWidth: 1,
116-
lineWidthMinPixels: 1,
117-
lineWidthScale: 20,
118-
getLineColor: (data => {
119-
return [80, 80, 80]
120-
}),
121-
getLineWidth: 1,
122-
getElevation: 30,
123-
getFillColor: d => handleFillColor(d),
124-
getRadius: 100,
125-
updateTriggers: {
126-
getFillColor: [hoverProvince]
127-
},
128-
onHover: d => setHoverProvince(d)
129-
});
134+
getPosition: d => [d.longitude, d.latitude],
135+
getText: d => d.short,
136+
getSize: 30,
137+
getAngle: 0,
138+
getTextAnchor: 'middle',
139+
getAlignmentBaseline: 'center',
140+
}),
141+
];
130142

131143
useLayoutEffect(() => {
132144
setViewState(o => ({
@@ -172,7 +184,7 @@ const IntelligenceMap = ({
172184
}}
173185
initialViewState={viewState}
174186
views={ MAP_VIEW }
175-
layers={[layers]}
187+
layers={layers}
176188
controller={true}
177189
onHover={finalOnHover}
178190
getTooltip={data => data.object && data.object.pr_name}

0 commit comments

Comments
 (0)