forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
	
		
			1.3 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)
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								}
							 |