@@ -17,6 +17,17 @@ function sleep(milliseconds: number): Promise<void> {
17
17
} ) ;
18
18
}
19
19
20
+ class TestScatterplotLayer extends ScatterplotLayer {
21
+ draw ( params ) {
22
+ super . draw ( params ) ;
23
+ this . props . onAfterRedraw ( {
24
+ viewport : this . context . viewport ,
25
+ layer : this
26
+ } ) ;
27
+ }
28
+ }
29
+ TestScatterplotLayer . layerName = 'TestScatterplotLayer' ;
30
+
20
31
test ( 'MapboxOverlay#overlaid' , t => {
21
32
const map = new MockMapboxMap ( {
22
33
center : { lng : - 122.45 , lat : 37.78 } ,
@@ -147,13 +158,22 @@ test('MapboxOverlay#overlaidNoIntitalLayers', t => {
147
158
} ) ;
148
159
149
160
test ( 'MapboxOverlay#interleaved' , t => {
161
+ let drawLog = [ ] ;
162
+ const onRedrawLayer = ( { viewport, layer} ) => {
163
+ drawLog . push ( layer . id ) ;
164
+ } ;
165
+
150
166
const map = new MockMapboxMap ( {
151
167
center : { lng : - 122.45 , lat : 37.78 } ,
152
168
zoom : 14
153
169
} ) ;
154
170
const overlay = new MapboxOverlay ( {
155
171
interleaved : true ,
156
- layers : [ new ScatterplotLayer ( { id : 'poi' } ) ] ,
172
+ layers : [
173
+ new TestScatterplotLayer ( { id : 'poi' , onAfterRedraw : onRedrawLayer } ) ,
174
+ new TestScatterplotLayer ( { id : 'poi2' , onAfterRedraw : onRedrawLayer } )
175
+ ] ,
176
+ layerFilter : ( { layer} ) => layer . id === 'poi' ,
157
177
parameters : {
158
178
depthWriteEnabled : false ,
159
179
cullMode : 'back'
@@ -199,14 +219,19 @@ test('MapboxOverlay#interleaved', t => {
199
219
200
220
await sleep ( 100 ) ;
201
221
t . ok ( map . getLayer ( 'poi' ) , 'MapboxLayer is added' ) ;
222
+ t . ok ( map . getLayer ( 'poi2' ) , 'MapboxLayer is added' ) ;
223
+ t . deepEqual ( drawLog , [ 'poi' ] , 'layers correctly filtered' ) ;
224
+ drawLog = [ ] ;
202
225
203
226
overlay . setProps ( {
204
- layers : [ new ScatterplotLayer ( { id : 'cities' } ) ]
227
+ layers : [ new TestScatterplotLayer ( { id : 'cities' , onAfterRedraw : onRedrawLayer } ) ] ,
228
+ layerFilter : undefined
205
229
} ) ;
206
230
207
231
await sleep ( 100 ) ;
208
232
t . notOk ( map . getLayer ( 'poi' ) , 'MapboxLayer is removed' ) ;
209
233
t . ok ( map . getLayer ( 'cities' ) , 'MapboxLayer is added' ) ;
234
+ t . deepEqual ( drawLog , [ 'cities' ] , 'layers correctly filtered' ) ;
210
235
211
236
map . removeControl ( overlay ) ;
212
237
t . notOk ( overlay . _deck , 'Deck instance is finalized' ) ;
0 commit comments