export const convertWKTPointToLatLng = (wktString: string) => { if ( !wktString || typeof wktString !== "string" || !wktString.startsWith("POINT") ) { return null; } const matched = wktString.match(/POINT\s*\(([-\d.]+)\s+([-\d.]+)\)/); if (!matched) return null; const lng = parseFloat(matched[1]); const lat = parseFloat(matched[2]); return [lng, lat]; // [longitude, latitude] }; export const convertWKTLineStringToLatLngArray = (wktString: string) => { if ( !wktString || typeof wktString !== "string" || !wktString.startsWith("LINESTRING") ) { return []; } const matched = wktString.match(/LINESTRING\s*\((.*)\)/); if (!matched) return []; const coordinates = matched[1].split(",").map((coordStr) => { const [x, y] = coordStr.trim().split(" ").map(Number); return [y, x]; // [lat, lng] }); return coordinates; }; export const convertWKTtoLatLngString = (wktString: string) => { if (!wktString || typeof wktString !== "string") return []; const clean = wktString.trim(); // MULTIPOLYGON if (clean.startsWith("MULTIPOLYGON")) { const matched = clean.match(/MULTIPOLYGON\s*\(\(\((.*)\)\)\)/); if (!matched) return []; const polygons = matched[1].split(")),((").map((polygonStr) => polygonStr .trim() .split(",") .map((coordStr) => { const [lng, lat] = coordStr.trim().split(/\s+/).map(Number); return [lat, lng]; // Đảo ngược: [latitude, longitude] }) ); return polygons; // Mỗi phần tử là 1 polygon (mảng các [lat, lng]) } // POLYGON if (clean.startsWith("POLYGON")) { const matched = clean.match(/POLYGON\s*\(\((.*)\)\)/); if (!matched) return []; const polygon = matched[1].split(",").map((coordStr) => { const [lng, lat] = coordStr.trim().split(/\s+/).map(Number); return [lat, lng]; }); return [polygon]; } return []; }; export const getBanzoneNameByType = (type: number) => { switch (type) { case 1: return "Cấm đánh bắt"; case 2: return "Cấm di chuyển"; case 3: return "Vùng an toàn"; default: return "Chưa có"; } };