async loadGeoJson(url) {
		const cached = EvidenceMap.#geoJsonCache.get(url);
		if (cached) return cached;

		if (!browser) return;

		const promise = fetch(url)
			.then((r) => r.json())
			.catch((e) => {
				this.#geoJsonData.update((map) => {
					map.delete(url);
					return map;
				});
				console.error(`Failed to load GeoJSON at URL '${url}': ${e}`);
			});
		EvidenceMap.#geoJsonCache.set(url, promise);

		// Set null to indicate we are loading data for this URL
		this.#geoJsonData.update((map) => map.set(url, null));
		const data = await promise;
		this.#geoJsonData.update((map) => {
			if (data) {
				map.set(url, data);
			} else {
				map.delete(url);
			}
			return map;
		});

		return data;
	}
@param {string} url
@returns {Promise<any | undefined>} GeoJSON data