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)
|
||
|
}
|
||
|
|
||
|
})
|
||
|
|
||
|
})
|
||
|
}
|
||
|
|
||
|
}
|