forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			28 lines
		
	
	
	
		
			1,020 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			1,020 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {FeatureSource, FeatureSourceForLayer } from "../FeatureSource"
 | 
						|
import StaticFeatureSource from "./StaticFeatureSource"
 | 
						|
import { GeoOperations } from "../../GeoOperations"
 | 
						|
import { BBox } from "../../BBox"
 | 
						|
import FilteredLayer from "../../../Models/FilteredLayer"
 | 
						|
 | 
						|
/**
 | 
						|
 * Results in a feature source which has all the elements that touch the given features
 | 
						|
 */
 | 
						|
export default class BBoxFeatureSource extends StaticFeatureSource {
 | 
						|
    constructor(features: FeatureSource, mustTouch: BBox) {
 | 
						|
        const bbox = mustTouch.asGeoJson({})
 | 
						|
        super(
 | 
						|
            features.features.mapD((features) =>
 | 
						|
                features.filter((feature) => GeoOperations.intersect(feature, bbox) !== undefined)
 | 
						|
            )
 | 
						|
        )
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
export class BBoxFeatureSourceForLayer extends BBoxFeatureSource implements FeatureSourceForLayer {
 | 
						|
    constructor(features: FeatureSourceForLayer, mustTouch: BBox) {
 | 
						|
        super(features, mustTouch)
 | 
						|
        this.layer = features.layer
 | 
						|
    }
 | 
						|
 | 
						|
    readonly layer: FilteredLayer
 | 
						|
}
 |