@@ -8,30 +8,32 @@ var url = GlobeParameter.ChinaURL + '/zxyTileImage.png?z={z}&x={x}&y={y}';
8
8
9
9
describe ( 'maplibregl_L7Layer' , ( ) => {
10
10
var originalTimeout ;
11
- var testDiv , map , getL7Scene , setLayoutProperty , removeLayer ;
11
+ var testDiv , map , getL7Scene , setLayoutProperty , removeLayer ;
12
12
var data = [
13
13
{
14
14
id : '5011000000404' ,
15
15
name : '铁路新村(华池路)' ,
16
16
longitude : 121.4316962 ,
17
17
latitude : 31.26082325 ,
18
18
unit_price : 71469.4 ,
19
- count : 2
19
+ count : 2 ,
20
+ v : 100
20
21
}
21
22
] ;
22
23
beforeAll ( ( done ) => {
23
24
getL7Scene = maplibregl . Map . prototype . getL7Scene ;
24
25
setLayoutProperty = maplibregl . Map . prototype . setLayoutProperty ;
25
26
removeLayer = maplibregl . Map . prototype . removeLayer ;
26
27
mbglmap . prototype . getL7Scene = getL7Scene ;
28
+ mbglmap . prototype . setLayoutProperty = setLayoutProperty ;
27
29
28
30
spyOn ( maplibregl , 'Map' ) . and . callFake ( mbglmap ) ;
29
31
30
32
spyOn ( L7 , 'PointLayer' ) . and . callFake ( mockL7 . PointLayer ) ;
31
33
spyOn ( L7 , 'GeometryLayer' ) . and . callFake ( mockL7 . GeometryLayer ) ;
34
+ spyOn ( L7 , 'HeatmapLayer' ) . and . callFake ( mockL7 . HeatmapLayer ) ;
32
35
spyOn ( L7 , 'Scene' ) . and . callFake ( mockL7 . Scene ) ;
33
36
spyOn ( L7 , 'Maplibre' ) . and . callFake ( mockL7 . Maplibre ) ;
34
-
35
37
testDiv = window . document . createElement ( 'div' ) ;
36
38
testDiv . setAttribute ( 'id' , 'map' ) ;
37
39
testDiv . style . styleFloat = 'left' ;
@@ -83,14 +85,16 @@ describe('maplibregl_L7Layer', () => {
83
85
document . body . removeChild ( testDiv ) ;
84
86
map = null ;
85
87
} ) ;
88
+
86
89
it ( 'getL7Scene' , ( done ) => {
87
90
map . getL7Scene ( ) . then ( ( scene ) => {
88
91
expect ( scene ) . not . toBeNull ( ) ;
89
92
map . $l7scene = null ;
90
93
done ( ) ;
91
94
} ) ;
92
95
} ) ;
93
- it ( 'getL7Scene' , ( done ) => {
96
+
97
+ it ( 'getL7Scene1' , ( done ) => {
94
98
var layer = new L7Layer ( { type : 'PointLayer' } ) ;
95
99
var l7Layer = layer . getL7Layer ( ) ;
96
100
l7Layer
@@ -111,6 +115,7 @@ describe('maplibregl_L7Layer', () => {
111
115
map . $l7scene = null ;
112
116
done ( ) ;
113
117
} ) ;
118
+ expect ( layer . isSourceLoaded ( ) ) . toBeTruthy ( ) ;
114
119
} ) ;
115
120
116
121
it ( 'PointLayer' , ( done ) => {
@@ -272,7 +277,6 @@ describe('maplibregl_L7Layer', () => {
272
277
expect ( map . style . setLayoutProperty ) . toHaveBeenCalled ( ) ;
273
278
expect ( layer . animateStatus ) . toBeFalsy ( ) ;
274
279
275
-
276
280
map . setLayoutProperty ( layer . id , 'visibility' , 'visible' ) ;
277
281
expect ( l7Layer . show ) . toHaveBeenCalled ( ) ;
278
282
expect ( map . style . setLayoutProperty ) . toHaveBeenCalled ( ) ;
@@ -299,15 +303,17 @@ describe('maplibregl_L7Layer', () => {
299
303
map . addLayer ( layer ) ;
300
304
map . style . fire = ( ) => { } ;
301
305
map . style . setLayoutProperty = ( ) => { } ;
306
+
302
307
map . overlayLayersManager = { [ layer . id ] : layer } ;
303
308
expect ( l7Layer ) . not . toBeNull ( ) ;
304
309
map . setLayoutProperty = setLayoutProperty ;
310
+
305
311
spyOn ( l7Layer , 'show' ) ;
306
312
spyOn ( l7Layer , 'hide' ) ;
307
313
spyOn ( map . style , 'setLayoutProperty' ) ;
308
314
expect ( layer . animateStatus ) . toBeTruthy ( ) ;
309
315
310
- map . setLayoutProperty ( layer . id , 'visibility' , 'hidden ' ) ;
316
+ map . setLayoutProperty ( layer . id , 'visibility' , 'none ' ) ;
311
317
expect ( l7Layer . hide ) . toHaveBeenCalled ( ) ;
312
318
expect ( map . style . setLayoutProperty ) . toHaveBeenCalled ( ) ;
313
319
expect ( layer . animateStatus ) . toBeFalsy ( ) ;
@@ -318,6 +324,109 @@ describe('maplibregl_L7Layer', () => {
318
324
319
325
done ( ) ;
320
326
} ) ;
327
+ it ( 'HeatmapLayer grid updateSource' , ( done ) => {
328
+ var layer = new L7Layer ( { type : 'HeatmapLayer' } ) ;
329
+ var l7Layer = layer . getL7Layer ( ) ;
330
+ l7Layer
331
+ . source ( data , {
332
+ parser : {
333
+ type : 'json' ,
334
+ x : 'longitude' ,
335
+ y : 'latitude'
336
+ } ,
337
+ transforms : [
338
+ {
339
+ type : 'grid' ,
340
+ size : 2000000 ,
341
+ field : 'v' ,
342
+ method : 'sum'
343
+ }
344
+ ]
345
+ } )
346
+ . shape ( 'circle' )
347
+ . active ( true )
348
+ . animate ( true )
349
+ . size ( 56 )
350
+ . color ( '#4cfd47' ) ;
351
+ map . addLayer ( layer ) ;
352
+ spyOn ( layer , 'reRender' ) ;
353
+ l7Layer . setData ( data , {
354
+ parser : {
355
+ type : 'json' ,
356
+ x : 'j' ,
357
+ y : 'w'
358
+ } ,
359
+ transforms : [
360
+ {
361
+ type : 'grid' ,
362
+ size : 200000 ,
363
+ field : 'v' ,
364
+ method : 'sum'
365
+ }
366
+ ]
367
+ } ) ;
368
+ expect ( l7Layer ) . not . toBeNull ( ) ;
369
+ expect ( layer . reRender ) . toHaveBeenCalled ( ) ;
370
+ done ( ) ;
371
+ } ) ;
372
+
373
+ it ( 'mvt layer' , ( done ) => {
374
+ var layer = new L7Layer ( { type : 'PointLayer' } ) ;
375
+ var l7Layer = layer . getL7Layer ( ) ;
376
+ l7Layer
377
+ . source ( 'http://localhost:8190/zhejiang.mbtiles/{z}/{x}/{y}.pbf' , {
378
+ parser : {
379
+ type : 'mvt' ,
380
+ tileSize : 256 ,
381
+ zoomOffset : 0 ,
382
+ maxZoom : 9 ,
383
+ extent : [ - 180 , - 85.051129 , 179 , 85.051129 ]
384
+ }
385
+ } )
386
+ . shape ( 'circle' )
387
+ . color ( '#4cfd47' ) ;
388
+ map . addLayer ( layer ) ;
389
+ map . style . fire = ( ) => { } ;
390
+ map . style . setLayoutProperty = ( ) => { } ;
391
+
392
+ map . overlayLayersManager = { [ layer . id ] : layer } ;
393
+ expect ( layer . sourceId ) . toBe ( layer . id ) ;
394
+ const layerSource = layer . getSource ( layer . id ) ;
395
+ expect ( layerSource . type ) . toBe ( 'vector' ) ;
396
+ let features ;
397
+ const result = {
398
+ cb : function ( data ) {
399
+ features = data ;
400
+ }
401
+ } ;
402
+ spyOn ( result , 'cb' ) . and . callThrough ( ) ;
403
+ layer . queryRenderedFeatures ( [ 0 , 0 ] , { } , result . cb ) ;
404
+ expect ( result . cb . calls . count ( ) ) . toBe ( 1 ) ;
405
+ expect ( features ) . not . toBeUndefined ( ) ;
406
+ expect ( layer . querySourceFeatures ( ) . length ) . toBeGreaterThan ( 0 ) ;
407
+
408
+ layer = new L7Layer ( { type : 'PointLayer' , options : { layerID : 'empty-test' } } ) ;
409
+ l7Layer = layer . getL7Layer ( ) ;
410
+ l7Layer
411
+ . source ( 'http://localhost:8190/zhejiang.mbtiles/{z}/{x}/{y}.pbf' , {
412
+ parser : {
413
+ type : 'mvt' ,
414
+ tileSize : 256 ,
415
+ zoomOffset : 0 ,
416
+ maxZoom : 9 ,
417
+ extent : [ - 180 , - 85.051129 , 179 , 85.051129 ]
418
+ }
419
+ } )
420
+ . shape ( 'circle' )
421
+ . color ( '#4cfd47' ) ;
422
+ map . addLayer ( layer ) ;
423
+ expect ( layer . isSourceLoaded ( ) ) . toBeFalsy ( ) ;
424
+
425
+ map . overlayLayersManager = { [ layer . id ] : layer } ;
426
+ l7Layer . rawConfig . name = 'empty-test' ;
427
+ expect ( layer . querySourceFeatures ( ) . length ) . toBe ( 0 ) ;
428
+ done ( ) ;
429
+ } ) ;
321
430
322
431
it ( 'extend custom overlayLayer base' , ( done ) => {
323
432
const paint = {
0 commit comments