57 lines
2.1 KiB
Svelte
57 lines
2.1 KiB
Svelte
<script lang="ts">
|
|
/**
|
|
* Can be used for both WayImportFlow and ConflateImportFlow
|
|
*/
|
|
import WayImportFlowState from "./WayImportFlowState"
|
|
import ImportFlow from "./ImportFlow.svelte"
|
|
import { UIEventSource } from "../../../Logic/UIEventSource"
|
|
import { Map as MlMap } from "maplibre-gl"
|
|
import { MapLibreAdaptor } from "../../Map/MapLibreAdaptor"
|
|
import MaplibreMap from "../../Map/MaplibreMap.svelte"
|
|
import ShowDataLayer from "../../Map/ShowDataLayer"
|
|
import StaticFeatureSource from "../../../Logic/FeatureSource/Sources/StaticFeatureSource"
|
|
import { ImportFlowUtils } from "./ImportFlow"
|
|
import { GeoOperations } from "../../../Logic/GeoOperations"
|
|
import ConflateImportFlowState from "./ConflateImportFlowState"
|
|
import OpenBackgroundSelectorButton from "../../BigComponents/OpenBackgroundSelectorButton.svelte"
|
|
|
|
export let importFlow: WayImportFlowState | ConflateImportFlowState
|
|
|
|
const state = importFlow.state
|
|
const map = new UIEventSource<MlMap>(undefined)
|
|
const [lon, lat] = GeoOperations.centerpointCoordinates(importFlow.originalFeature)
|
|
const mla = new MapLibreAdaptor(map, {
|
|
allowMoving: UIEventSource.feedFrom(state.featureSwitchIsTesting),
|
|
allowZooming: UIEventSource.feedFrom(state.featureSwitchIsTesting),
|
|
rasterLayer: state.mapProperties.rasterLayer,
|
|
location: new UIEventSource<{ lon: number; lat: number }>({ lon, lat }),
|
|
zoom: new UIEventSource<number>(18),
|
|
})
|
|
|
|
// Show all relevant data - including (eventually) the way of which the geometry will be replaced
|
|
ShowDataLayer.showMultipleLayers(
|
|
map,
|
|
new StaticFeatureSource([importFlow.originalFeature]),
|
|
state.layout.layers,
|
|
{ zoomToFeatures: false }
|
|
)
|
|
|
|
importFlow.GetPreview().then((features) => {
|
|
new ShowDataLayer(map, {
|
|
zoomToFeatures: false,
|
|
features,
|
|
layer: ImportFlowUtils.conflationLayer,
|
|
})
|
|
})
|
|
</script>
|
|
|
|
<ImportFlow {importFlow} on:confirm={() => importFlow.onConfirm()}>
|
|
<div slot="map" class="relative">
|
|
<div class="h-32">
|
|
<MaplibreMap {map} />
|
|
</div>
|
|
<div class="absolute bottom-0">
|
|
<OpenBackgroundSelectorButton />
|
|
</div>
|
|
</div>
|
|
</ImportFlow>
|