45 lines
No EOL
1.3 KiB
TypeScript
45 lines
No EOL
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)
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
}
|
|
|
|
} |