caprigis/webgis/js/state.js

60 lines
1.3 KiB
JavaScript

/**
* @typedef {Object.<string, L.Marker>} MarkerLookup
* A lookup table of markers keyed by 'lat lng' (no groupings)
*/
/**
* @typedef {Object.<string, L.LayerGroup>} LayerGroupLookup
* A lookup table of Leaflet layer groups by category
*/
/**
* @typedef {Object.<string, Object>} BibliographyLookup
* A lookup table of bibliography data by category
*/
/**
* @typedef {Object} GisStateType
* @property {L.Map|null} map
* @property {String|null} apiUrl
* @property {MarkerLookup} markers
* @property {LayerGroupLookup} layers
* @property {BibliographyLookup} bibliography
*/
/** @type {GisStateType} */
export const GisState = {
map: null,
markers: {
sites: {},
notConserved: {},
findings: {},
prehistoric: {},
underwater: {},
},
layers: {
sites: {},
notConserved: {},
findings: {},
prehistoric: {},
underwater: {},
},
bibliography: {
sites: {},
notConserved: {},
findings: {},
prehistoric: {},
underwater: {},
},
apiUrl : null,
}
/**
* @param {array} coords - ['lat', 'lng']
* @param {string} group
* @returns {L.Marker|undefined}
*/
export function getMarkerByCoords(coords, group) {
return GisState.markers[group][`${coords[0]} ${coords[1]}`];
}