| 
									
										
										
										
											2021-09-26 17:36:39 +02:00
										 |  |  | import FeatureSource, {Tiled} from "../../Logic/FeatureSource/FeatureSource"; | 
					
						
							|  |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							|  |  |  | import LayerConfig from "../../Models/ThemeConfig/LayerConfig"; | 
					
						
							|  |  |  | import ShowDataLayer from "./ShowDataLayer"; | 
					
						
							|  |  |  | import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeatureSource"; | 
					
						
							|  |  |  | import {GeoOperations} from "../../Logic/GeoOperations"; | 
					
						
							|  |  |  | import {Tiles} from "../../Models/TileRange"; | 
					
						
							| 
									
										
										
										
											2021-09-29 01:12:29 +02:00
										 |  |  | import * as clusterstyle from "../../assets/layers/cluster_style/cluster_style.json" | 
					
						
							| 
									
										
										
										
											2022-01-19 20:34:04 +01:00
										 |  |  | import State from "../../State"; | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-26 17:36:39 +02:00
										 |  |  | export default class ShowTileInfo { | 
					
						
							| 
									
										
										
										
											2021-12-21 18:35:31 +01:00
										 |  |  |     public static readonly styling = new LayerConfig(clusterstyle, "ShowTileInfo", true) | 
					
						
							| 
									
										
										
										
											2021-09-26 17:36:39 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     constructor(options: { | 
					
						
							|  |  |  |         source: FeatureSource & Tiled, leafletMap: UIEventSource<any>, layer?: LayerConfig, | 
					
						
							|  |  |  |         doShowLayer?: UIEventSource<boolean> | 
					
						
							|  |  |  |     }) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const source = options.source | 
					
						
							|  |  |  |         const metaFeature: UIEventSource<any[]> = | 
					
						
							|  |  |  |             source.features.map(features => { | 
					
						
							|  |  |  |                 const bbox = source.bbox | 
					
						
							|  |  |  |                 const [z, x, y] = Tiles.tile_from_index(source.tileIndex) | 
					
						
							|  |  |  |                 const box = { | 
					
						
							|  |  |  |                     "type": "Feature", | 
					
						
							|  |  |  |                     "properties": { | 
					
						
							|  |  |  |                         "z": z, | 
					
						
							|  |  |  |                         "x": x, | 
					
						
							|  |  |  |                         "y": y, | 
					
						
							|  |  |  |                         "tileIndex": source.tileIndex, | 
					
						
							|  |  |  |                         "source": source.name, | 
					
						
							|  |  |  |                         "count": features.length, | 
					
						
							|  |  |  |                         tileId: source.name + "/" + source.tileIndex | 
					
						
							|  |  |  |                     }, | 
					
						
							|  |  |  |                     "geometry": { | 
					
						
							|  |  |  |                         "type": "Polygon", | 
					
						
							|  |  |  |                         "coordinates": [ | 
					
						
							|  |  |  |                             [ | 
					
						
							|  |  |  |                                 [bbox.minLon, bbox.minLat], | 
					
						
							|  |  |  |                                 [bbox.minLon, bbox.maxLat], | 
					
						
							|  |  |  |                                 [bbox.maxLon, bbox.maxLat], | 
					
						
							|  |  |  |                                 [bbox.maxLon, bbox.minLat], | 
					
						
							|  |  |  |                                 [bbox.minLon, bbox.minLat] | 
					
						
							|  |  |  |                             ] | 
					
						
							|  |  |  |                         ] | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 const center = GeoOperations.centerpoint(box) | 
					
						
							|  |  |  |                 return [box, center] | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         new ShowDataLayer({ | 
					
						
							|  |  |  |             layerToShow: ShowTileInfo.styling, | 
					
						
							|  |  |  |             features: new StaticFeatureSource(metaFeature, false), | 
					
						
							|  |  |  |             leafletMap: options.leafletMap, | 
					
						
							| 
									
										
										
										
											2022-01-19 20:34:04 +01:00
										 |  |  |             doShowLayer: options.doShowLayer, | 
					
						
							|  |  |  |             state: State.state, | 
					
						
							|  |  |  |             popup: undefined | 
					
						
							| 
									
										
										
										
											2021-09-26 17:36:39 +02:00
										 |  |  |         }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |