Skip to content

Commit 5203984

Browse files
Merge pull request #134 from OCA-UFCG/fix/decrease-request-time
enhancing request time when loading maps
2 parents 82afb60 + 230c9d3 commit 5203984

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

src/components/MapTiff/MapTiff.tsx

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,9 @@ const MapTiff = ({
113113
}
114114
}, [isReduced, mapContainer]);
115115

116-
const loadMapLayer = useCallback(
116+
const loadSource = useCallback(
117117
async (name: string, year: string) => {
118-
setLoading(true);
119118
if (!map?.getSource(name + year) && mapsData.length > 0) {
120-
// Filter the contentful map data by name
121119
const mapData = mapsData.find(
122120
(data) => data.fields.id === name,
123121
)?.fields;
@@ -134,6 +132,7 @@ const MapTiff = ({
134132
body,
135133
},
136134
);
135+
137136
if (response.status !== 200) {
138137
setLoading(false);
139138

@@ -145,14 +144,34 @@ const MapTiff = ({
145144
map?.addSource(name + year, {
146145
type: "raster",
147146
tiles: [url],
148-
tileSize: 256,
147+
tileSize: isReduced ? 128 : 256,
149148
});
150149
}
151150
}
151+
},
152+
[map, mapsData, setLoading, isReduced],
153+
);
154+
155+
const cacheMapData = useCallback(async () => {
156+
mapsData.forEach(async (data) => {
157+
const id = data.fields.id;
158+
const imageData = data.fields.imageData;
159+
if (!isReduced) {
160+
Object.keys(imageData).forEach(async (year) => {
161+
if (map && !map?.getSource(data + year)) loadSource(id, year);
162+
});
163+
} else {
164+
const dates = Object.keys(imageData);
165+
loadSource(id, dates[dates.length - 1]);
166+
}
167+
});
168+
}, [mapsData, loadSource, isReduced, map]);
169+
170+
const loadMapLayer = useCallback(
171+
async (name: string, year: string) => {
172+
setLoading(true);
173+
await loadSource(name, year);
152174

153-
// This code adds a raster layer on top of the first "symbol" layer in the map's style.
154-
// It checks if the map and its layers exist, finds the first layer of type "symbol",
155-
// and inserts the raster layer right above it.
156175
const symbolLayer = map
157176
?.getStyle()
158177
?.layers?.find((layer) => layer.type === "symbol");
@@ -167,9 +186,12 @@ const MapTiff = ({
167186
symbolLayer.id,
168187
);
169188
}
189+
190+
cacheMapData();
191+
170192
setLoading(false);
171193
},
172-
[map, mapsData, setLoading],
194+
[map, setLoading, loadSource, cacheMapData],
173195
);
174196

175197
const addPopupEffect = useCallback(

0 commit comments

Comments
 (0)