Skip to content

Commit

Permalink
asdfghjklø
Browse files Browse the repository at this point in the history
  • Loading branch information
Otro1 committed Jan 24, 2024
1 parent 39b481f commit dc7aa80
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 78 deletions.
154 changes: 77 additions & 77 deletions src/modules/kommune/kommuneLayerCheckbox.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import {
Dispatch,
MutableRefObject,
SetStateAction,
useEffect,
useMemo,
useRef,
useState,
Dispatch,
MutableRefObject,
SetStateAction,
useEffect,
useMemo,
useRef,
useState,
} from "react";
import { Layer } from "ol/layer";
import VectorLayer from "ol/layer/Vector";
Expand All @@ -16,90 +16,90 @@ import { Polygon } from "ol/geom";
import React from "react";

type KommuneProperties = {
kommunenummer: string;
navn: {
sprak: string;
navn: string;
}[];
kommunenummer: string;
navn: {
sprak: string;
navn: string;
}[];
};

type KommuneFeature = Feature<Polygon> & {
getProperties(): KommuneProperties;
getProperties(): KommuneProperties;
};

const kommuneSource = new VectorSource<KommuneFeature>({
url: "/KartbaserteF2/kommuner.json",
format: new GeoJSON(),
url: "/KartbaserteF2/kommuner.json",
format: new GeoJSON(),
});
const kommuneLayer = new VectorLayer({
source: kommuneSource,
source: kommuneSource,
});

export function KommuneLayerCheckbox({
map,
setLayers,
map,
setLayers,
}: {
map: Map;
setLayers: Dispatch<SetStateAction<Layer[]>>;
map: Map;
setLayers: Dispatch<SetStateAction<Layer[]>>;
}) {
const [checked, setChecked] = useState(false);
const overlay = useMemo(() => new Overlay({}), []);
const overlayRef = useRef() as MutableRefObject<HTMLDivElement>;
useEffect(() => {
overlay.setElement(overlayRef.current);
map.addOverlay(overlay);
return () => {
map.removeOverlay(overlay);
};
}, []);
const [selectedKommune, setSelectedKommune] = useState<
KommuneFeature | undefined
>();
function handleClick(e: MapBrowserEvent<MouseEvent>) {
const clickedKommune = kommuneSource.getFeaturesAtCoordinate(
e.coordinate
) as KommuneFeature[];
if (clickedKommune.length === 1) {
setSelectedKommune(clickedKommune[0]);
overlay.setPosition(e.coordinate);
} else {
setSelectedKommune(undefined);
overlay.setPosition(undefined);
}
const [checked, setChecked] = useState(false);
const overlay = useMemo(() => new Overlay({}), []);
const overlayRef = useRef() as MutableRefObject<HTMLDivElement>;
useEffect(() => {
overlay.setElement(overlayRef.current);
map.addOverlay(overlay);
return () => {
map.removeOverlay(overlay);
};
}, []);
const [selectedKommune, setSelectedKommune] = useState<
KommuneFeature | undefined
>();
function handleClick(e: MapBrowserEvent<MouseEvent>) {
const clickedKommune = kommuneSource.getFeaturesAtCoordinate(
e.coordinate,
) as KommuneFeature[];
if (clickedKommune.length === 1) {
setSelectedKommune(clickedKommune[0]);
overlay.setPosition(e.coordinate);
} else {
setSelectedKommune(undefined);
overlay.setPosition(undefined);
}
}

useEffect(() => {
if (checked) {
setLayers((old) => [...old, kommuneLayer]);
map.on("click", handleClick);
}
return () => {
map.un("click", handleClick);
setLayers((old) => old.filter((l) => l !== kommuneLayer));
};
}, [checked]);
useEffect(() => {
if (checked) {
setLayers((old) => [...old, kommuneLayer]);
map.on("click", handleClick);
}
return () => {
map.un("click", handleClick);
setLayers((old) => old.filter((l) => l !== kommuneLayer));
};
}, [checked]);

return (
<div>
<label>
<input
type={"checkbox"}
checked={checked}
onChange={(e) => setChecked(e.target.checked)}
/>
{checked ? "Hide" : "Show"} kommune layer
</label>
<div ref={overlayRef} className={"kommune-overlay"}>
{selectedKommune && (
<>
{
(
selectedKommune.getProperties() as KommuneProperties
).navn.find((n) => n.sprak === "nor")!.navn
}
</>
)}
</div>
</div>
);
return (
<div>
<label>
<input
type={"checkbox"}
checked={checked}
onChange={(e) => setChecked(e.target.checked)}
/>
{checked ? "Hide" : "Show"} kommune layer
</label>
<div ref={overlayRef} className={"kommune-overlay"}>
{selectedKommune && (
<>
{
(selectedKommune.getProperties() as KommuneProperties).navn.find(
(n) => n.sprak === "nor",
)!.navn
}
</>
)}
</div>
</div>
);
}
2 changes: 1 addition & 1 deletion vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
export default {
base: "/KartbaserteF2/",
base: "/KartbaserteF2/",
};

0 comments on commit dc7aa80

Please sign in to comment.