Download cached features as geojson

This commit is contained in:
Arno Deceuninck 2021-07-15 09:34:00 +02:00
parent f5c7683d9d
commit b68bf7b950
5 changed files with 32 additions and 0 deletions

View file

@ -7,6 +7,8 @@ import Translations from "../i18n/Translations";
import LayerConfig from "../../Customizations/JSON/LayerConfig";
import BaseUIElement from "../BaseUIElement";
import {Translation} from "../i18n/Translation";
import {SubtleButton} from "../Base/SubtleButton";
import {exportAsGeoJson} from "../GeoJsonExport";
/**
* Shows the panel with all layers and a toggle for each of them
@ -74,6 +76,9 @@ export default class LayerSelection extends Combine {
);
}
const downloadButton = new SubtleButton("./assets/svg/floppy.svg", "Download visible data as geojson")
downloadButton.onClick(() => exportAsGeoJson(State.state.featurePipeline)) // TODO: Define this
checkboxes.push(downloadButton)
super(checkboxes)
this.SetStyle("display:flex;flex-direction:column;")

15
UI/GeoJsonExport.ts Normal file
View file

@ -0,0 +1,15 @@
import FeaturePipeline from "../Logic/FeatureSource/FeaturePipeline";
import {Utils} from "../Utils";
export function exportAsGeoJson(featurePipeline: FeaturePipeline, options?: {metadata?: boolean}) {
let defaults = {
metadata: false
}
options = Utils.setDefaults(options, defaults);
// Select all features, ignore the freshness and other data
// TODO: Remove mapcomplete metadata (starting with underscore)
let featureList: JSON[] = featurePipeline? featurePipeline.features.data.map((feature) => feature.feature) : ["I'm empty"];
let geojson = {type: "FeatureCollection", features: featureList}
Utils.offerContentsAsDownloadableFile(JSON.stringify(geojson), "Geodata.json");
}