| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  | import FeatureSource, { Tiled } from "../FeatureSource" | 
					
						
							| 
									
										
										
										
											2021-09-28 17:30:48 +02:00
										 |  |  | import { BBox } from "../../BBox" | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default interface TileHierarchy<T extends FeatureSource & Tiled> { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * A mapping from 'tile_index' to the actual tile featrues | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     loadedTiles: Map<number, T> | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class TileHierarchyTools { | 
					
						
							|  |  |  |     public static getTiles<T extends FeatureSource & Tiled>( | 
					
						
							|  |  |  |         hierarchy: TileHierarchy<T>, | 
					
						
							|  |  |  |         bbox: BBox | 
					
						
							|  |  |  |     ): T[] { | 
					
						
							| 
									
										
										
										
											2022-07-13 17:56:10 +02:00
										 |  |  |         const result: T[] = [] | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  |         hierarchy.loadedTiles.forEach((tile) => { | 
					
						
							|  |  |  |             if (tile.bbox.overlapsWith(bbox)) { | 
					
						
							|  |  |  |                 result.push(tile) | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         return result | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |