forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			52 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
 | |
|     }
 | |
| }
 |