addArea(
		item,
		name,
		feature,
		areaOptions,
		selectedAreaOptions,
		onclick,
		setInput,
		unsetInput,
		link,
		ignoreZoom
	) {
		if (!Leaflet) throw new Error('Leaflet is not yet available');

		if (!this.lastSelectedLayer) {
			this.lastSelectedLayer = null;
		}
		if (!this.originalStyles) {
			this.originalStyles = new Map();
		}

		const geoJsonLayer = Leaflet.geoJSON(feature, {
			...areaOptions,
			onEachFeature: (feature, layer) => {
				// Store the initial style of each layer as soon as it's created
				this.originalStyles.set(layer, areaOptions);
				layer.ignoreZoom = ignoreZoom;
				layer.on('click', () => {
					if (this.lastSelectedLayer === layer) {
						layer.setStyle(this.originalStyles.get(layer)); // Restore the original style
						unsetInput(item, name);
						this.lastSelectedLayer = null;
					} else {
						if (this.lastSelectedLayer) {
							this.lastSelectedLayer.setStyle(this.originalStyles.get(this.lastSelectedLayer)); // Restore the last layer's original style
						}
						layer.bringToFront();
						layer.setStyle(selectedAreaOptions);
						setInput(item, name);
						this.lastSelectedLayer = layer;
					}
					onclick(feature);
					if (link) {
						window.location.href = link;
					}
				});
			}
		}).addTo(this.#map);

		// Set ignoreZoom for all sublayers to ensure it makes it through to updateBounds()
		geoJsonLayer.eachLayer((sublayer) => {
			if (sublayer instanceof Leaflet.Path) {
				sublayer.ignoreZoom = ignoreZoom; // Apply ignoreZoom to all Path layers
			}
		});

		this.#bounds.extend(geoJsonLayer.getBounds());
		if (!this.#initialViewSet) {
			this.updateBounds();
		} else {
			this.#map.setZoom(this.#initZoom ?? 5);
		}
		geoJsonLayer.bringToBack();
		return geoJsonLayer;
	}
Adds an interactive geoJSON layer to the map that responds to click events.
@param {object} item - The data item associated with the area.
@param {string} name - The identifier used for input interaction.
@param {object} feature - GeoJSON feature data.
@param {object} areaOptions - Initial styling options for the area.
@param {object} selectedAreaOptions - Styling options for when the area is selected.
@param {Function} onclick - Function to execute when the area is clicked.
@param {Function} setInput - Function to set input data when an area is selected.
@param {Function} unsetInput - Function to clear input data when an area is deselected.
@param {string} [link] - URL to navigate to on area click.
@returns {import('leaflet').Layer} The created geoJSON layer.