1+ import maplibregl from 'maplibre-gl' ;
2+ import '../../libs/deck.gl/5.1.3/deck.gl' ;
3+ import { Point } from '../../../src/common/commontypes/geometry/Point' ;
4+ import { LineString } from '../../../src/common/commontypes/geometry/LineString' ;
5+ import { DeckglLayer } from '../../../src/maplibregl/overlay/DeckglLayer' ;
6+
7+ maplibregl . accessToken = 'pk.eyJ1IjoibW9ua2VyIiwiYSI6ImNpd2Z6aTE5YTAwdHEyb2tpOWs2ZzRydmoifQ.LwQMRArUP8Q9P7QApuOIHg' ;
8+ describe ( 'maplibregl_DeckglLayer' , ( ) => {
9+ var originalTimeout ;
10+ var testDiv , map , deckglLayer , features ;
11+ beforeAll ( ( ) => {
12+ testDiv = window . document . createElement ( "div" ) ;
13+ testDiv . setAttribute ( "id" , "map" ) ;
14+ testDiv . style . styleFloat = "left" ;
15+ testDiv . style . marginLeft = "8px" ;
16+ testDiv . style . marginTop = "50px" ;
17+ testDiv . style . width = "500px" ;
18+ testDiv . style . height = "500px" ;
19+ window . document . body . appendChild ( testDiv ) ;
20+ map = new maplibregl . Map ( {
21+ container : 'map' ,
22+ style : 'mapbox://styles/mapbox/streets-v9' ,
23+ center : [ 13.413952 , 52.531913 ] ,
24+ zoom : 16.000000000000004 ,
25+ pitch : 33.2
26+ } ) ;
27+ var pointList = [ ] ,
28+ p1 = new Point ( 20.05408801141 , 38.837029131724 ) ,
29+ p2 = new Point ( 18.80757663534 , 38.606951847395 ) ,
30+ p3 = new Point ( 17.43207212138 , 38.530259419285 ) ;
31+ pointList . push ( p1 ) ;
32+ pointList . push ( p2 ) ;
33+ pointList . push ( p3 ) ;
34+ var line = new LineString ( pointList ) ;
35+ features = {
36+ fieldNames : [ ] ,
37+ fieldValues : [ ] ,
38+ geometry : line
39+ } ;
40+
41+ } ) ;
42+ beforeEach ( ( ) => {
43+ originalTimeout = jasmine . DEFAULT_TIMEOUT_INTERVAL ;
44+ jasmine . DEFAULT_TIMEOUT_INTERVAL = 50000 ;
45+ } ) ;
46+ afterEach ( ( ) => {
47+ jasmine . DEFAULT_TIMEOUT_INTERVAL = originalTimeout ;
48+ } ) ;
49+ afterAll ( ( ) => {
50+ document . body . removeChild ( testDiv ) ;
51+ } ) ;
52+
53+ it ( 'onAdd_PathLayer' , ( done ) => {
54+ deckglLayer = new DeckglLayer ( "path-layer" , {
55+ data : features ,
56+ props : {
57+ strokeWidth : 12 //线宽
58+ } ,
59+ callback : {
60+ getSourcePosition : d => d . from . coordinates ,
61+ getTargetPosition : d => d . to . coordinates ,
62+ getSourceColor : d => [ Math . sqrt ( d . inbound ) , 140 , 0 ] ,
63+ getTargetColor : d => [ Math . sqrt ( d . outbound ) , 140 , 0 ] ,
64+ }
65+ } ) ;
66+ deckglLayer . onAdd ( map ) ;
67+
68+ setTimeout ( ( ) => {
69+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
70+ done ( ) ;
71+ } , 0 )
72+ } ) ;
73+
74+ it ( 'onAdd_ArcLayer' , ( done ) => {
75+ deckglLayer = new DeckglLayer ( "arc-layer" , {
76+ data : features ,
77+ props : {
78+ strokeWidth : 12 //线宽
79+ } ,
80+ callback : {
81+ getSourcePosition : d => d . from . coordinates ,
82+ getTargetPosition : d => d . to . coordinates ,
83+ getSourceColor : d => [ Math . sqrt ( d . inbound ) , 140 , 0 ] ,
84+ getTargetColor : d => [ Math . sqrt ( d . outbound ) , 140 , 0 ] ,
85+ }
86+ } ) ;
87+ deckglLayer . onAdd ( map ) ;
88+
89+ setTimeout ( ( ) => {
90+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
91+ done ( ) ;
92+ } , 0 )
93+ } ) ;
94+
95+ it ( 'onAdd_HexagonLayer' , ( done ) => {
96+ deckglLayer = new DeckglLayer ( "hexagon-layer" , {
97+ data : features ,
98+ props : {
99+ strokeWidth : 12 //线宽
100+ } ,
101+ callback : {
102+ getSourcePosition : d => d . from . coordinates ,
103+ getTargetPosition : d => d . to . coordinates ,
104+ getSourceColor : d => [ Math . sqrt ( d . inbound ) , 140 , 0 ] ,
105+ getTargetColor : d => [ Math . sqrt ( d . outbound ) , 140 , 0 ] ,
106+ }
107+ } ) ;
108+ deckglLayer . onAdd ( map ) ;
109+
110+ setTimeout ( ( ) => {
111+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
112+ done ( ) ;
113+ } , 0 )
114+ } ) ;
115+
116+ it ( 'onAdd_PolygonLayer' , ( done ) => {
117+ deckglLayer = new DeckglLayer ( "polygon-layer" , {
118+ data : features ,
119+ props : {
120+ strokeWidth : 12 //线宽
121+ } ,
122+ callback : {
123+ getSourcePosition : d => d . from . coordinates ,
124+ getTargetPosition : d => d . to . coordinates ,
125+ getSourceColor : d => [ Math . sqrt ( d . inbound ) , 140 , 0 ] ,
126+ getTargetColor : d => [ Math . sqrt ( d . outbound ) , 140 , 0 ] ,
127+ }
128+ } ) ;
129+ deckglLayer . onAdd ( map ) ;
130+
131+ setTimeout ( ( ) => {
132+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
133+ done ( ) ;
134+ } , 0 )
135+ } ) ;
136+
137+ it ( 'onAdd_scatter-plot' , ( done ) => {
138+ var p1 = new Point ( 20.05408801141 , 38.837029131724 ) ;
139+ var p2 = new Point ( 18.80757663534 , 38.606951847395 ) ;
140+ var p3 = new Point ( 17.43207212138 , 38.530259419285 ) ;
141+ deckglLayer = new DeckglLayer ( "scatter-plot" , {
142+ data : { p1, p2, p3} ,
143+ props : {
144+ radiusScale : 300 ,
145+ radiusMaxPixels : 500 ,
146+ opacity : 0.3 ,
147+ autoHighlight : true ,
148+ highlightColor : [ 255 , 255 , 0 , 255 ] ,
149+ } ,
150+ callback : {
151+ getPosition : function ( feature ) {
152+ if ( ! feature || ! feature . Longitude || ! feature . Latitude ) {
153+ return [ 0 , 0 , 0 ] ;
154+ }
155+ return [ Number ( feature . Longitude ) , Number ( feature . Latitude ) , 0 ] ;
156+ } ,
157+ getColor : function ( feature ) {
158+ if ( feature . Magnitude >= 2.5 && feature . Magnitude <= 3.31 ) {
159+ return [ 118 , 42 , 131 ] ;
160+ }
161+ return [ 0 , 0 , 0 , 0 ]
162+ } ,
163+ getRadius : function ( feature ) {
164+
165+ return Math . pow ( Number ( feature . Magnitude ) , 2.5 ) ;
166+ }
167+ }
168+ } ) ;
169+ deckglLayer . onAdd ( map ) ;
170+ setTimeout ( ( ) => {
171+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
172+ done ( ) ;
173+ } , 0 )
174+ } ) ;
175+
176+ it ( 'setVisibility' , ( done ) => {
177+ deckglLayer . setVisibility ( false ) ;
178+ expect ( deckglLayer . visibility ) . toBeFalsy ;
179+ done ( ) ;
180+ } ) ;
181+
182+ it ( 'setData,removeFromMap' , ( done ) => {
183+ var data = [
184+ { "ADDRESS" : "939 ELLIS ST" , "RACKS" : 2 , "SPACES" : 4 , "COORDINATES" : [ - 122.42177834 , 37.78346622 ] } ,
185+ { "ADDRESS" : "1380 HOWARD ST" , "RACKS" : 1 , "SPACES" : 2 , "COORDINATES" : [ - 122.414411 , 37.774458 ] }
186+ ] ;
187+ deckglLayer = new DeckglLayer ( "hexagon-layer" , {
188+ data : features ,
189+ props : {
190+ strokeWidth : 12 //线宽
191+ } ,
192+ callback : {
193+ getSourcePosition : d => d . from . coordinates ,
194+ getTargetPosition : d => d . to . coordinates ,
195+ getSourceColor : d => [ Math . sqrt ( d . inbound ) , 140 , 0 ] ,
196+ getTargetColor : d => [ Math . sqrt ( d . outbound ) , 140 , 0 ] ,
197+ }
198+ } ) ;
199+ map . addLayer ( deckglLayer ) ;
200+ setTimeout ( ( ) => {
201+ deckglLayer . setData ( data ) ;
202+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
203+ expect ( deckglLayer . data ) . toEqual ( data ) ;
204+ expect ( deckglLayer . data . length ) . toEqual ( 2 ) ;
205+ } , 0 )
206+ setTimeout ( ( ) => {
207+ deckglLayer . removeFromMap ( )
208+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
209+ expect ( deckglLayer . data . length ) . toEqual ( 0 ) ;
210+ done ( ) ;
211+ } , 0 )
212+
213+
214+ } ) ;
215+
216+ it ( 'addData,removeData' , ( done ) => {
217+ var data = [
218+ { "ADDRESS" : "939 ELLIS ST" , "RACKS" : 2 , "SPACES" : 4 , "COORDINATES" : [ - 122.42177834 , 37.78346622 ] } ,
219+ { "ADDRESS" : "1380 HOWARD ST" , "RACKS" : 1 , "SPACES" : 2 , "COORDINATES" : [ - 122.414411 , 37.774458 ] } ,
220+ { "ADDRESS" : "685 CHENERY ST" , "RACKS" : 1 , "SPACES" : 2 , "COORDINATES" : [ - 122.433618 , 37.73435 ] }
221+ ] ;
222+ deckglLayer = new DeckglLayer ( "arc-layer" , {
223+ data : features ,
224+ props : {
225+ strokeWidth : 12 //线宽
226+ } ,
227+ callback : {
228+ getSourcePosition : d => d . from . coordinates ,
229+ getTargetPosition : d => d . to . coordinates ,
230+ getSourceColor : d => [ Math . sqrt ( d . inbound ) , 140 , 0 ] ,
231+ getTargetColor : d => [ Math . sqrt ( d . outbound ) , 140 , 0 ] ,
232+ }
233+ } ) ;
234+ map . addLayer ( deckglLayer ) ;
235+
236+ setTimeout ( ( ) => {
237+ deckglLayer . addData ( data ) ;
238+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
239+ expect ( deckglLayer . data . length ) . toEqual ( 4 ) ;
240+ } , 0 )
241+ setTimeout ( ( ) => {
242+ deckglLayer . removeData ( ) ;
243+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
244+ expect ( deckglLayer . data . length ) . toEqual ( 0 ) ;
245+ done ( ) ;
246+ } , 0 )
247+ } ) ;
248+
249+ it ( 'setStyle,hexagon-layer' , ( done ) => {
250+ deckglLayer = new DeckglLayer ( "hexagon-layer" , {
251+ data : features ,
252+ props : {
253+ radius : 100 //线宽
254+ }
255+ } ) ;
256+ map . addLayer ( deckglLayer ) ;
257+
258+ setTimeout ( ( ) => {
259+ expect ( deckglLayer . deckGL ) . not . toBeNull ( ) ;
260+ expect ( deckglLayer . deckGL . props . radius ) . toEqual ( 100 ) ;
261+ deckglLayer . setStyle ( { radius : 1000 } ) ;
262+ expect ( deckglLayer . deckGL . props . radius ) . toEqual ( 1000 ) ;
263+ done ( ) ;
264+ } , 0 )
265+
266+ } ) ;
267+ } ) ;
0 commit comments