30 lines
998 B
TypeScript
30 lines
998 B
TypeScript
import { point, multiPolygon, booleanPointInPolygon, booleanIntersects, polygon } from "@turf/turf";
|
|
import leitstellenGeoJSON from "../_components/map/_geojson/Leitstellen.json"; // Pfad anpassen
|
|
|
|
export function findLeitstelleForPosition(lat: number, lng: number) {
|
|
const heliPoint = point([lat, lng]);
|
|
|
|
for (const feature of (leitstellenGeoJSON as any).features) {
|
|
const geom = feature.geometry;
|
|
|
|
if (geom.type === "Polygon") {
|
|
const turfPolygon = polygon(geom.coordinates);
|
|
if (booleanPointInPolygon(heliPoint, turfPolygon)) {
|
|
return feature.properties?.name ?? "Unbenannte Leitstelle";
|
|
}
|
|
} else if (geom.type === "MultiPolygon") {
|
|
// MultiPolygon: check each polygon
|
|
for (const coords of geom.coordinates) {
|
|
const turfPolygon = polygon(coords);
|
|
if (booleanPointInPolygon(heliPoint, turfPolygon)) {
|
|
return feature.properties?.name ?? "Unbenannte Leitstelle";
|
|
}
|
|
}
|
|
} else {
|
|
continue; // Andere Geometrietypen ignorieren
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|