forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import * as L from "leaflet"
 | |
| import TilesourceConfig from "../../Models/ThemeConfig/TilesourceConfig"
 | |
| import { UIEventSource } from "../../Logic/UIEventSource"
 | |
| import ShowOverlayLayer from "./ShowOverlayLayer"
 | |
| 
 | |
| export default class ShowOverlayLayerImplementation {
 | |
|     public static Implement() {
 | |
|         ShowOverlayLayer.implementation = ShowOverlayLayerImplementation.AddToMap
 | |
|     }
 | |
| 
 | |
|     public static AddToMap(
 | |
|         config: TilesourceConfig,
 | |
|         leafletMap: UIEventSource<any>,
 | |
|         isShown: UIEventSource<boolean> = undefined
 | |
|     ) {
 | |
|         leafletMap.map((leaflet) => {
 | |
|             if (leaflet === undefined) {
 | |
|                 return
 | |
|             }
 | |
| 
 | |
|             const tileLayer = L.tileLayer(config.source, {
 | |
|                 attribution: "",
 | |
|                 maxZoom: config.maxzoom,
 | |
|                 minZoom: config.minzoom,
 | |
|                 // @ts-ignore
 | |
|                 wmts: false,
 | |
|             })
 | |
| 
 | |
|             if (isShown === undefined) {
 | |
|                 tileLayer.addTo(leaflet)
 | |
|             }
 | |
| 
 | |
|             isShown?.addCallbackAndRunD((isShown) => {
 | |
|                 if (isShown) {
 | |
|                     tileLayer.addTo(leaflet)
 | |
|                 } else {
 | |
|                     leaflet.removeLayer(tileLayer)
 | |
|                 }
 | |
|             })
 | |
|         })
 | |
|     }
 | |
| }
 |