@@ -10,17 +10,12 @@ export class AppreciableLayerBase extends Events {
10
10
this . appendLayers = options . appendLayers || false ;
11
11
this . unexpectedSourceNames = [ 'tdt-search-' , 'tdt-route-' , 'smmeasure' , 'mapbox-gl-draw' , 'maplibre-gl-draw' , / t r a c k l a y e r - \d + - l i n e / ] ;
12
12
this . layersVisibleMap = new Map ( ) ;
13
- this . layerCatalogs = [ ] ;
14
- this . appreciableLayers = [ ] ;
15
13
this . eventTypes = [ 'layerupdatechanged' ] ;
16
14
this . _styleDataUpdatedHandler = this . _styleDataUpdatedHandler . bind ( this ) ;
17
15
}
18
16
19
17
setSelfLayers ( layers ) {
20
18
this . layers = layers ;
21
- if ( this . appreciableLayers . length > 0 ) {
22
- this . _styleDataUpdatedHandler ( ) ;
23
- }
24
19
}
25
20
26
21
createAppreciableLayers ( ) {
@@ -36,11 +31,13 @@ export class AppreciableLayerBase extends Events {
36
31
}
37
32
38
33
getLayerCatalog ( ) {
39
- return this . layerCatalogs ;
34
+ const layerCatalog = this . createLayerCatalogs ( ) ;
35
+ this . _updateLayerCatalogsVisible ( layerCatalog ) ;
36
+ return layerCatalog ;
40
37
}
41
38
42
39
getLayers ( ) {
43
- return this . appreciableLayers ;
40
+ return this . createAppreciableLayers ( ) ;
44
41
}
45
42
46
43
getSelfLayers ( appreciableLayers = this . getLayers ( ) ) {
@@ -50,19 +47,15 @@ export class AppreciableLayerBase extends Events {
50
47
) ;
51
48
}
52
49
53
- toggleLayerVisible ( layerId , visible ) {
54
- const item = this . _findLayerCatalog ( this . layerCatalogs , layerId ) ;
55
- if ( ! item ) {
56
- return ;
57
- }
50
+ toggleLayerVisible ( layer , visible ) {
58
51
const visibility = visible ? 'visible' : 'none' ;
59
- if ( item . type === 'group' ) {
60
- const visbleId = this . _getLayerVisibleId ( item ) ;
52
+ if ( layer . type === 'group' ) {
53
+ const visbleId = this . _getLayerVisibleId ( layer ) ;
61
54
this . layersVisibleMap . set ( visbleId , visible ) ;
62
- const targetLayers = getLayerInfosFromCatalogs ( item . children ) ;
55
+ const targetLayers = getLayerInfosFromCatalogs ( layer . children ) ;
63
56
this . setLayersVisible ( targetLayers , visibility ) ;
64
57
} else {
65
- this . setLayersVisible ( [ item ] , visibility ) ;
58
+ this . setLayersVisible ( [ layer ] , visibility ) ;
66
59
}
67
60
}
68
61
@@ -74,7 +67,7 @@ export class AppreciableLayerBase extends Events {
74
67
( layer . CLASS_INSTANCE && layer . CLASS_INSTANCE . show && layer . CLASS_INSTANCE . hide )
75
68
) {
76
69
visibility === 'visible' ? layer . CLASS_INSTANCE . show ( ) : layer . CLASS_INSTANCE . hide ( ) ;
77
- this . _styleDataUpdatedHandler ( ) ;
70
+ this . map . style . fire ( 'data' , { dataType : 'style' } ) ;
78
71
return ;
79
72
}
80
73
layer . renderLayers . forEach ( ( layerId ) => {
@@ -98,7 +91,7 @@ export class AppreciableLayerBase extends Events {
98
91
if ( ! this . map ) {
99
92
return ;
100
93
}
101
- this . _initializeData ( ) ;
94
+ this . _styleDataUpdatedHandler ( ) ;
102
95
this . _registerMapEvent ( ) ;
103
96
}
104
97
@@ -122,20 +115,19 @@ export class AppreciableLayerBase extends Events {
122
115
}
123
116
124
117
_initSourceList ( detailLayers ) {
125
- const datas = detailLayers . reduce ( ( sourceList , layer ) => {
118
+ const datas = detailLayers . slice ( ) . reverse ( ) . reduce ( ( sourceList , layer ) => {
119
+ const id = layer . renderSource . sourceLayer ? `${ layer . renderSource . id } -${ + new Date ( ) } ` : layer . id ;
126
120
let matchItem = sourceList . find ( ( item ) => {
127
- const sourceId = layer . renderSource . id || layer . id ;
128
- return item . id === sourceId ;
121
+ return item . id === id ;
129
122
} ) ;
130
123
if ( ! matchItem ) {
131
- const sourceListItem = new SourceModel ( layer ) ;
124
+ const sourceListItem = new SourceModel ( layer , id ) ;
132
125
sourceList . push ( sourceListItem ) ;
133
126
matchItem = sourceListItem ;
134
127
}
135
128
matchItem . addLayer ( layer ) ;
136
129
return sourceList ;
137
130
} , [ ] ) ;
138
- datas . reverse ( ) ;
139
131
return datas ;
140
132
}
141
133
@@ -278,23 +270,14 @@ export class AppreciableLayerBase extends Events {
278
270
}
279
271
}
280
272
281
- _initializeData ( ) {
282
- this . appreciableLayers = this . createAppreciableLayers ( ) ;
283
- this . layerCatalogs = this . createLayerCatalogs ( ) ;
284
- this . _updateLayerCatalogsVisible ( this . layerCatalogs ) ;
285
- }
286
-
287
273
_registerMapEvent ( ) {
288
274
this . map . on ( 'styledata' , this . _styleDataUpdatedHandler ) ;
289
275
}
290
276
291
277
_styleDataUpdatedHandler ( ) {
292
- this . _initializeData ( ) ;
293
- if ( ! this . _appendLayers ) {
294
- this . triggerEvent ( 'layerupdatechanged' , {
295
- layers : this . appreciableLayers ,
296
- layerCatalog : this . layerCatalogs
297
- } ) ;
278
+ this . triggerEvent ( 'layerupdatechanged' , {
279
+ layers : this . getLayers ( ) ,
280
+ layerCatalog : this . getLayerCatalog ( )
281
+ } ) ;
298
282
}
299
283
}
300
- }
0 commit comments