fix tilesets for vectors map
This commit is contained in:
parent
2715c56b4f
commit
f009a57b8e
7 changed files with 209 additions and 18 deletions
|
|
@ -38,6 +38,7 @@ export default function App() {
|
|||
const [vectorSource, setVectorSource] = useState<"mbtiles" | "tileset">("mbtiles");
|
||||
const [tilesets, setTilesets] = useState<string[]>([]);
|
||||
const [activeTileset, setActiveTileset] = useState<string>("");
|
||||
const [tilesetKinds, setTilesetKinds] = useState<Record<string, string>>({});
|
||||
const [selectedFileName, setSelectedFileName] = useState<string>("");
|
||||
const fileInputRef = useRef<HTMLInputElement | null>(null);
|
||||
const [sliceParams, setSliceParams] = useState<SliceParams>(initialSliceParams);
|
||||
|
|
@ -96,6 +97,7 @@ export default function App() {
|
|||
if (!res.ok) throw new Error(data?.detail || `status ${res.status}`);
|
||||
setTilesets(data.tilesets || []);
|
||||
setActiveTileset(data.active || "");
|
||||
setTilesetKinds(data.kinds || {});
|
||||
}, [config]);
|
||||
|
||||
useEffect(() => {
|
||||
|
|
@ -164,8 +166,15 @@ export default function App() {
|
|||
if (!res.ok) throw new Error(data?.detail || `status ${res.status}`);
|
||||
setActiveTileset(data.active || name);
|
||||
sendFrontLog(`tileset activated: ${data.active || name}`, "info");
|
||||
const kind = (data.kind as string | undefined) || tilesetKinds[name] || "";
|
||||
if (kind.startsWith("vector")) {
|
||||
setMapMode("vector");
|
||||
setVectorSource(kind === "vector-dir" ? "tileset" : "mbtiles");
|
||||
} else if (kind.startsWith("raster")) {
|
||||
setMapMode("raster");
|
||||
}
|
||||
},
|
||||
[config, sendFrontLog],
|
||||
[config, sendFrontLog, tilesetKinds],
|
||||
);
|
||||
|
||||
const createTileset = useCallback(
|
||||
|
|
@ -273,9 +282,13 @@ export default function App() {
|
|||
setMapMode("raster");
|
||||
}
|
||||
sendFrontLog(`map ingested: kind=${data.kind} driver=${data.driver}`, "info");
|
||||
if (data.tileset) {
|
||||
refreshTilesets().catch(() => {});
|
||||
activateTileset(String(data.tileset)).catch(() => {});
|
||||
}
|
||||
return data;
|
||||
},
|
||||
[sendFrontLog, sliceParams.max_zoom, sliceParams.min_zoom, sliceParams.tileset],
|
||||
[activateTileset, refreshTilesets, sendFrontLog, sliceParams.max_zoom, sliceParams.min_zoom, sliceParams.tileset],
|
||||
);
|
||||
|
||||
const uploadFileBlob = useCallback(
|
||||
|
|
@ -291,6 +304,10 @@ export default function App() {
|
|||
.then((res) => {
|
||||
setSliceParams((p) => ({ ...p, source: res.path }));
|
||||
setSelectedFileName(res.filename);
|
||||
const lower = String(res.filename || "").toLowerCase();
|
||||
if (lower.endsWith(".mbtiles")) setSliceParams((p) => ({ ...p, source_format: "mbtiles" }));
|
||||
if (lower.endsWith(".tif") || lower.endsWith(".tiff") || lower.endsWith(".vrt"))
|
||||
setSliceParams((p) => ({ ...p, source_format: "geotiff" }));
|
||||
setSliceParams((p) => {
|
||||
if (p.tileset) return p;
|
||||
const proposed = String(res.filename || "")
|
||||
|
|
@ -326,7 +343,11 @@ export default function App() {
|
|||
],
|
||||
});
|
||||
if (typeof selected === "string") {
|
||||
const lower = selected.toLowerCase();
|
||||
setSliceParams((p) => ({ ...p, source: selected }));
|
||||
if (lower.endsWith(".mbtiles")) setSliceParams((p) => ({ ...p, source_format: "mbtiles" }));
|
||||
if (lower.endsWith(".tif") || lower.endsWith(".tiff") || lower.endsWith(".vrt"))
|
||||
setSliceParams((p) => ({ ...p, source_format: "geotiff" }));
|
||||
setSelectedFileName(selected.split("/").pop() || selected);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue