import {UIEventSource} from "../../Logic/UIEventSource"; import Loc from "../../Models/Loc"; import Minimap from "../Base/Minimap"; import ShowDataLayer from "../ShowDataLayer/ShowDataLayer"; import LayerConfig from "../../Models/ThemeConfig/LayerConfig"; import * as left_right_style_json from "../../assets/layers/left_right_style/left_right_style.json"; import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeatureSource"; import {SpecialVisualization} from "../SpecialVisualization"; export class SidedMinimap implements SpecialVisualization { funcName = "sided_minimap" docs = "A small map showing _only one side_ the selected feature. *This features requires to have linerenderings with offset* as only linerenderings with a postive or negative offset will be shown. Note: in most cases, this map will be automatically introduced" args = [ { doc: "The side to show, either `left` or `right`", name: "side", required: true, }, ] example = "`{sided_minimap(left)}`" public constr(state, tagSource, args) { const properties = tagSource.data const locationSource = new UIEventSource({ lat: Number(properties._lat), lon: Number(properties._lon), zoom: 18, }) const minimap = Minimap.createMiniMap({ background: state.backgroundLayer, location: locationSource, allowMoving: false, }) const side = args[0] const feature = state.allElements.ContainingFeatures.get(tagSource.data.id) const copy = {...feature} copy.properties = { id: side, } new ShowDataLayer({ leafletMap: minimap["leafletMap"], zoomToFeatures: true, layerToShow: new LayerConfig( left_right_style_json, "all_known_layers", true ), features: StaticFeatureSource.fromGeojson([copy]), state, }) minimap.SetStyle("overflow: hidden; pointer-events: none;") return minimap } }