@@ -85,26 +85,29 @@ function addBoxSelectionToMap(map: Map, model?: AnyModel): void {
8585 dragBox . on ( 'boxend' , function ( ) {
8686 const extent = dragBox . getGeometry ( ) . transform ( 'EPSG:3857' , 'EPSG:4326' ) . getExtent ( ) ;
8787 console . log ( "box extent" , extent ) ;
88- //
8988 for ( let layer of map . getLayers ( ) . getArray ( ) ) {
90- if ( layer instanceof VectorLayer || layer instanceof WebGLVectorLayer ) {
91- const source : VectorSource = layer . getSource ( ) ;
92- console . log ( "source extend" , source . getExtent ( ) ) ;
93- // const features = source.getFeaturesInExtent(extent).filter((feature: Feature) => feature?.getGeometry()?.intersectsExtent(extent));
94- source . forEachFeatureIntersectingExtent ( extent , ( feature : Feature ) => {
95- feature . set ( "layer" , layer . get ( "id" ) ) ;
96- selected . push ( feature ) ;
97- if ( layer instanceof VectorLayer ) {
98- feature . setStyle ( highlightStyle ) ;
99- }
100- } ) ;
101- const output = selected . map ( f => featureToGeoJSON ( f ) ) ;
102- console . log ( "selected features" , output ) ;
103- if ( model ) {
104- model . set ( "features" , { selected : output } ) ;
105- model . save_changes ( ) ;
89+ if ( ! ( layer instanceof VectorLayer ) && ! ( layer instanceof WebGLVectorLayer ) ) {
90+ console . log ( "skip layer" , layer . get ( "id" ) ) ;
91+ continue ;
92+ }
93+
94+ const source : VectorSource = layer . getSource ( ) ;
95+ console . log ( "source extend" , source . getExtent ( ) ) ;
96+ // const features = source.getFeaturesInExtent(extent).filter((feature: Feature) => feature?.getGeometry()?.intersectsExtent(extent));
97+ source . forEachFeatureIntersectingExtent ( extent , ( feature : Feature ) => {
98+ feature . set ( "layer" , layer . get ( "id" ) ) ;
99+ selected . push ( feature ) ;
100+ if ( layer instanceof VectorLayer ) {
101+ feature . setStyle ( highlightStyle ) ;
106102 }
103+ } ) ;
104+ const output = selected . map ( feature => featureToGeoJSON ( feature ) ) ;
105+ console . log ( "selected features" , output ) ;
106+ if ( model ) {
107+ model . set ( "features" , { selected : output } ) ;
108+ model . save_changes ( ) ;
107109 }
110+ // }
108111 }
109112 } ) ;
110113
0 commit comments