-
Tadeusz Miesiąc authoredTadeusz Miesiąc authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
useOlMapOverlaysLayer.ts 1.31 KiB
import Geometry from 'ol/geom/Geometry';
import VectorLayer from 'ol/layer/Vector';
import VectorSource from 'ol/source/Vector';
import { Feature } from 'ol';
import { useMemo } from 'react';
import { useOverlayFeatures } from './useOverlayFeatures';
/**
* Prerequisites: "view" button triggers opening overlays -> it triggers downloading overlayBioEntityData for given overlay for ALL available submaps(models)
*
* 1. For each active overlay
* 2. get overlayBioEntity data (current map data passed by selector)
* 3. based on nOverlays, calculate coordinates for given overlayBioEntity to render Polygon from extend
* 4. Calculate coordinates in following steps:
* - polygonWidth = width/nOverlays
* - xMin = xMin + polygonWidth * overlayIndexBasedOnOrder
* - xMax = xMin + polygonWidth
* - yMin,yMax -> is const taken from store
* 5. generate Feature(xMin,yMin,xMax,yMax)
*/
export const useOlMapOverlaysLayer = (): VectorLayer<VectorSource<Feature<Geometry>>> => {
const overlaysFeatures = useOverlayFeatures();
const vectorSource = useMemo(() => {
return new VectorSource({
features: overlaysFeatures,
});
}, [overlaysFeatures]);
const overlaysLayer = useMemo(
() =>
new VectorLayer({
source: vectorSource,
}),
[vectorSource],
);
return overlaysLayer;
};