Skip to content

Commit 88e6a0b

Browse files
committed
Toggle base layer visibility insted of updating overall style which prevents reloading the entire style and re-adding overalays
1 parent 88138da commit 88e6a0b

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed

frontend/src/components/basemapMenu.js

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,34 @@
11
import { useState } from 'react';
22

3-
import { MAPBOX_TOKEN, BASEMAP_OPTIONS } from '../config';
3+
import { baseLayers } from '../config';
44

55
export const BasemapMenu = ({ map }) => {
6-
// Remove elements that require mapbox token;
7-
let styles = BASEMAP_OPTIONS;
8-
if (!MAPBOX_TOKEN) {
9-
styles = BASEMAP_OPTIONS.filter((s) => typeof s.value === 'object');
10-
}
6+
const [basemap, setBasemap] = useState('OSM');
117

12-
const [basemap, setBasemap] = useState(styles[0].label);
13-
14-
const handleClick = (style) => {
15-
let styleValue = style.value;
16-
17-
if (typeof style.value === 'string') {
18-
styleValue = 'mapbox://styles/mapbox/' + style.value;
19-
}
20-
map.setStyle(styleValue);
21-
setBasemap(style.label);
8+
const handleClick = (activeLayer) => {
9+
// toggle visibiity as per active base layer
10+
Object.keys(baseLayers).forEach((layer) => {
11+
map.setLayoutProperty(
12+
`${layer}-layer`,
13+
'visibility',
14+
`${activeLayer}-layer` === `${layer}-layer` ? 'visible' : 'none',
15+
);
16+
});
17+
setBasemap(activeLayer);
2218
};
2319

2420
return (
2521
<div className="bg-white blue-dark flex mt2 ml2 f7 fr br1 shadow-1">
26-
{styles.map((style, k) => {
22+
{Object.keys(baseLayers).map((baseLayer, k) => {
2723
return (
2824
<div
2925
key={k}
30-
onClick={() => handleClick(style)}
26+
onClick={() => handleClick(baseLayer)}
3127
className={`ttc pv2 ph3 pointer link + ${
32-
basemap === style.label ? 'bg-grey-light fw6' : ''
28+
basemap === baseLayer ? 'bg-grey-light fw6' : ''
3329
}`}
3430
>
35-
{style.label}
31+
{k === 0 ? `Default (${baseLayer})` : baseLayer}
3632
</div>
3733
);
3834
})}

0 commit comments

Comments
 (0)