@@ -8,30 +8,32 @@ var url = GlobeParameter.ChinaURL + '/zxyTileImage.png?z={z}&x={x}&y={y}';
88
99describe ( 'maplibregl_L7Layer' , ( ) => {
1010 var originalTimeout ;
11- var testDiv , map , getL7Scene , setLayoutProperty , removeLayer ;
11+ var testDiv , map , getL7Scene , setLayoutProperty , removeLayer ;
1212 var data = [
1313 {
1414 id : '5011000000404' ,
1515 name : '铁路新村(华池路)' ,
1616 longitude : 121.4316962 ,
1717 latitude : 31.26082325 ,
1818 unit_price : 71469.4 ,
19- count : 2
19+ count : 2 ,
20+ v : 100
2021 }
2122 ] ;
2223 beforeAll ( ( done ) => {
2324 getL7Scene = maplibregl . Map . prototype . getL7Scene ;
2425 setLayoutProperty = maplibregl . Map . prototype . setLayoutProperty ;
2526 removeLayer = maplibregl . Map . prototype . removeLayer ;
2627 mbglmap . prototype . getL7Scene = getL7Scene ;
28+ mbglmap . prototype . setLayoutProperty = setLayoutProperty ;
2729
2830 spyOn ( maplibregl , 'Map' ) . and . callFake ( mbglmap ) ;
2931
3032 spyOn ( L7 , 'PointLayer' ) . and . callFake ( mockL7 . PointLayer ) ;
3133 spyOn ( L7 , 'GeometryLayer' ) . and . callFake ( mockL7 . GeometryLayer ) ;
34+ spyOn ( L7 , 'HeatmapLayer' ) . and . callFake ( mockL7 . HeatmapLayer ) ;
3235 spyOn ( L7 , 'Scene' ) . and . callFake ( mockL7 . Scene ) ;
3336 spyOn ( L7 , 'Maplibre' ) . and . callFake ( mockL7 . Maplibre ) ;
34-
3537 testDiv = window . document . createElement ( 'div' ) ;
3638 testDiv . setAttribute ( 'id' , 'map' ) ;
3739 testDiv . style . styleFloat = 'left' ;
@@ -83,14 +85,16 @@ describe('maplibregl_L7Layer', () => {
8385 document . body . removeChild ( testDiv ) ;
8486 map = null ;
8587 } ) ;
88+
8689 it ( 'getL7Scene' , ( done ) => {
8790 map . getL7Scene ( ) . then ( ( scene ) => {
8891 expect ( scene ) . not . toBeNull ( ) ;
8992 map . $l7scene = null ;
9093 done ( ) ;
9194 } ) ;
9295 } ) ;
93- it ( 'getL7Scene' , ( done ) => {
96+
97+ it ( 'getL7Scene1' , ( done ) => {
9498 var layer = new L7Layer ( { type : 'PointLayer' } ) ;
9599 var l7Layer = layer . getL7Layer ( ) ;
96100 l7Layer
@@ -111,6 +115,7 @@ describe('maplibregl_L7Layer', () => {
111115 map . $l7scene = null ;
112116 done ( ) ;
113117 } ) ;
118+ expect ( layer . isSourceLoaded ( ) ) . toBeTruthy ( ) ;
114119 } ) ;
115120
116121 it ( 'PointLayer' , ( done ) => {
@@ -272,7 +277,6 @@ describe('maplibregl_L7Layer', () => {
272277 expect ( map . style . setLayoutProperty ) . toHaveBeenCalled ( ) ;
273278 expect ( layer . animateStatus ) . toBeFalsy ( ) ;
274279
275-
276280 map . setLayoutProperty ( layer . id , 'visibility' , 'visible' ) ;
277281 expect ( l7Layer . show ) . toHaveBeenCalled ( ) ;
278282 expect ( map . style . setLayoutProperty ) . toHaveBeenCalled ( ) ;
@@ -299,15 +303,17 @@ describe('maplibregl_L7Layer', () => {
299303 map . addLayer ( layer ) ;
300304 map . style . fire = ( ) => { } ;
301305 map . style . setLayoutProperty = ( ) => { } ;
306+
302307 map . overlayLayersManager = { [ layer . id ] : layer } ;
303308 expect ( l7Layer ) . not . toBeNull ( ) ;
304309 map . setLayoutProperty = setLayoutProperty ;
310+
305311 spyOn ( l7Layer , 'show' ) ;
306312 spyOn ( l7Layer , 'hide' ) ;
307313 spyOn ( map . style , 'setLayoutProperty' ) ;
308314 expect ( layer . animateStatus ) . toBeTruthy ( ) ;
309315
310- map . setLayoutProperty ( layer . id , 'visibility' , 'hidden ' ) ;
316+ map . setLayoutProperty ( layer . id , 'visibility' , 'none ' ) ;
311317 expect ( l7Layer . hide ) . toHaveBeenCalled ( ) ;
312318 expect ( map . style . setLayoutProperty ) . toHaveBeenCalled ( ) ;
313319 expect ( layer . animateStatus ) . toBeFalsy ( ) ;
@@ -318,6 +324,109 @@ describe('maplibregl_L7Layer', () => {
318324
319325 done ( ) ;
320326 } ) ;
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+ } ) ;
321430
322431 it ( 'extend custom overlayLayer base' , ( done ) => {
323432 const paint = {
0 commit comments