forked from MapComplete/MapComplete
		
	More refactoring, move minimap behind facade
This commit is contained in:
		
							parent
							
								
									c11ff652b8
								
							
						
					
					
						commit
						d5c1ba4cd1
					
				
					 79 changed files with 1848 additions and 1118 deletions
				
			
		|  | @ -0,0 +1,63 @@ | |||
| import FilteredLayer from "../../../Models/FilteredLayer"; | ||||
| import {FeatureSourceForLayer} from "../FeatureSource"; | ||||
| import {UIEventSource} from "../../UIEventSource"; | ||||
| import Loc from "../../../Models/Loc"; | ||||
| import DynamicTileSource from "./DynamicTileSource"; | ||||
| import {Utils} from "../../../Utils"; | ||||
| import GeoJsonSource from "../Sources/GeoJsonSource"; | ||||
| 
 | ||||
| export default class DynamicGeoJsonTileSource extends DynamicTileSource { | ||||
|     constructor(layer: FilteredLayer, | ||||
|                 registerLayer: (layer: FeatureSourceForLayer) => void, | ||||
|                 state: { | ||||
|                     locationControl: UIEventSource<Loc> | ||||
|                     leafletMap: any | ||||
|                 }) { | ||||
|         const source = layer.layerDef.source | ||||
|         if (source.geojsonZoomLevel === undefined) { | ||||
|             throw "Invalid layer: geojsonZoomLevel expected" | ||||
|         } | ||||
|         if (source.geojsonSource === undefined) { | ||||
|             throw "Invalid layer: geojsonSource expected" | ||||
|         } | ||||
|          | ||||
|         const whitelistUrl = source.geojsonSource.replace("{z}_{x}_{y}.geojson", "overview.json") | ||||
|             .replace("{layer}",layer.layerDef.id) | ||||
|          | ||||
|         let whitelist = undefined | ||||
|         Utils.downloadJson(whitelistUrl).then( | ||||
|             json => { | ||||
|                 const data = new Map<number, Set<number>>(); | ||||
|                 for (const x in json) { | ||||
|                     data.set(Number(x), new Set(json[x])) | ||||
|                 } | ||||
|                 whitelist = data | ||||
|             } | ||||
|         ).catch(err => { | ||||
|             console.warn("No whitelist found for ", layer.layerDef.id, err) | ||||
|         }) | ||||
| 
 | ||||
|         super( | ||||
|             layer, | ||||
|             source.geojsonZoomLevel, | ||||
|             (zxy) => { | ||||
|                 if(whitelist !== undefined){ | ||||
|                     const isWhiteListed = whitelist.get(zxy[1])?.has(zxy[2]) | ||||
|                     if(!isWhiteListed){ | ||||
|                         return undefined; | ||||
|                     } | ||||
|                 } | ||||
|                  | ||||
|                 const src = new GeoJsonSource( | ||||
|                     layer, | ||||
|                     zxy | ||||
|                 ) | ||||
|                 registerLayer(src) | ||||
|                 return src | ||||
|             }, | ||||
|             state | ||||
|         ); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue