fix(carto): render GeoJSON layers after map style changes

This commit is contained in:
Paul Chavard 2022-03-18 15:29:45 +01:00
parent f033194ffa
commit af166f5520

View file

@ -144,7 +144,8 @@ function LineStringLayer({
const sourceId = String(feature.properties?.id);
const layerId = `${sourceId}-layer`;
useEffect(() => {
const render = () => {
if (!map.getSource(sourceId)) {
map
.addSource(sourceId, {
type: 'geojson',
@ -156,8 +157,11 @@ function LineStringLayer({
type: 'line',
paint: lineStringSelectionLine
});
}, [map, layerId, sourceId, feature]);
}
};
useEffect(render, [map, layerId, sourceId, feature]);
useMapEvent('styledata', render);
useMapEvent('mouseenter', onMouseEnter, layerId);
useMapEvent('mouseleave', onMouseLeave, layerId);
@ -177,7 +181,8 @@ function PointLayer({
const sourceId = String(feature.properties?.id);
const layerId = `${sourceId}-layer`;
useEffect(() => {
const render = () => {
if (!map.getSource(sourceId)) {
map
.addSource(sourceId, {
type: 'geojson',
@ -189,8 +194,11 @@ function PointLayer({
type: 'circle',
paint: pointSelectionCircle
});
}, [map, layerId, sourceId, feature]);
}
};
useEffect(render, [map, layerId, sourceId, feature]);
useMapEvent('styledata', render);
useMapEvent('mouseenter', onMouseEnter, layerId);
useMapEvent('mouseleave', onMouseLeave, layerId);
@ -211,7 +219,8 @@ function PolygonLayer({
const layerId = `${sourceId}-layer`;
const lineLayerId = `${sourceId}-line-layer`;
useEffect(() => {
const render = () => {
if (!map.getSource(sourceId)) {
map
.addSource(sourceId, {
type: 'geojson',
@ -229,8 +238,11 @@ function PolygonLayer({
type: 'fill',
paint: polygonSelectionFill
});
}, [map, layerId, lineLayerId, sourceId, feature]);
}
};
useEffect(render, [map, layerId, lineLayerId, sourceId, feature]);
useMapEvent('styledata', render);
useMapEvent('mouseenter', onMouseEnter, layerId);
useMapEvent('mouseleave', onMouseLeave, layerId);