diff --git a/Logic/FeatureSource/GeoJsonSource.ts b/Logic/FeatureSource/GeoJsonSource.ts index 3216230a2..3da47bd04 100644 --- a/Logic/FeatureSource/GeoJsonSource.ts +++ b/Logic/FeatureSource/GeoJsonSource.ts @@ -121,7 +121,6 @@ export default class GeoJsonSource implements FeatureSource { if (location.zoom < flayer.layerDef.minzoom || location.zoom > flayer.layerDef.maxzoom) { // No need to download! - the layer is disabled - console.log("Not loading layers for " + url, "zoom" + location.zoom, " not between", flayer.layerDef.minzoom, "and", flayer.layerDef.maxzoom) return undefined; } diff --git a/Logic/FeatureSource/ZoomRespectingFeatureSource.ts b/Logic/FeatureSource/ZoomRespectingFeatureSource.ts new file mode 100644 index 000000000..09a757b55 --- /dev/null +++ b/Logic/FeatureSource/ZoomRespectingFeatureSource.ts @@ -0,0 +1,25 @@ +import FeatureSource from "./FeatureSource"; +import {UIEventSource} from "../UIEventSource"; +import LayerConfig from "../../Customizations/JSON/LayerConfig"; + +export default class ZoomRespectingFeatureSource implements FeatureSource{ + public readonly features: UIEventSource<{ feature: any; freshness: Date }[]>; + public readonly name: string; + + constructor(layerConfig: LayerConfig, location: UIEventSource<{zoom: number}>, upstream: FeatureSource) { + this.name = "zoomrespecting("+upstream.name+")" + const empty = [] + this.features = upstream.features.map( + features => { + const z = location.data.zoom + + if(layerConfig.minzoom < z || layerConfig.maxzoom > z){ + return empty + } + + + return features + },[location] + ) + } +} \ No newline at end of file