forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			56 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								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<Loc>({
							 | 
						||
| 
								 | 
							
								            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
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |