Map Operations
Author: Lukas Weigmann
Overview
The MapOperations class provides a set of methods for managing and interacting with geographical data on the map. It contains functionality for the main MapComponent but also for smaller components such as Cloropleths that are used in the map.
Class Details
convertCountriesToFeatureCollection()
Description
This method converts a list of country features into a GeoJSON FeatureCollection.
Parameters
countryFeatures
: List of country features
Returns
A GeoJSON FeatureCollection.
createCountryNameTooltipElement()
Description
The method creates an HTML div element rendering the given country name within a CountryHoverPopover. This is required because Leaflet tooltips do not natively support React components.
Parameters
countryName
: Name of the country.
Returns
An HTMLDivElement containing the tooltip content.
updateRegionLabelTooltip()
Description
Updates the text content of a tooltip based on the zoom level and the properties of the feature. This is for example needed when the user is zooming in or out.
Parameters
feature
: GeoJSON feature providing tooltip datamap
: Leaflet map instancetooltip
: Tooltip instance to be updated
Workflow
You can find details about the region labeling under region labels.
setupRegionLabelTooltip()
Description
The method configures a permanent tooltip for region labels and updates it dynamically during zoom events.
Parameters
feature
: GeoJSON feature representing the labelregionLabelData
: Data for region labelscountryIso3
: iso3 code for matching the regions with the countrymap
: Leaflet map instance
Returns
The method returns the created tooltip
Workflow
You can find details about the region labeling under region labels.
handleCountryTooltip()
Description
This method handles the functionality for the tooltips shown in the global view when hovering over a country.
Parameters
geoJsonRef
: Reference to the cloropleth element i.e. the country the tooltip is being attached tomap
: The leaflet mapfcsData?
: Food consumption data - needs to be set when calling from FCS cloroplethnutritionData?
: Nutrition data - needs to be set when calling from nutrition cloroplethcountryMapData?
: general data about the country the tooltip is being attached to - needs to be set when calling from nutrition cloropleth
Returns
A method destructing the map listeners that is used in the corresponding useEffect of the Cloropleth Elments.
Workflow
The method binds and unbinds the tooltips to the leaflet map. When dragging the map however, there is a certain lag which can lead to other tooltips being opened even though they are not supposed to. Therefore, when dragging, the method unbinds all the tooltips of the countries except for the one that the mouse is currently hovering over and rebinds them once the dragging is finished.