@@ -13,14 +13,13 @@ import { getImageKey, isMapboxExpression, isMultiSymbol, validateSymbol } from "
13
13
* @private
14
14
*/
15
15
class SymbolHandler {
16
- #layerSymbols; // 图层与symbol的映射关系
17
16
18
17
constructor ( map ) {
19
18
this . map = map ;
20
19
this . symbolManager = new SymbolManager ( ) ;
21
20
this . singleSymbolRender = new SingleSymbolRender ( map ) ;
22
21
this . compositeSymbolRender = new CompositeSymbolRender ( map ) ;
23
- this . #layerSymbols = { } ;
22
+ this . _layerSymbols = { } ; // 图层与symbol的映射关系
24
23
}
25
24
26
25
_update ( map ) {
@@ -66,11 +65,12 @@ class SymbolHandler {
66
65
} ) ;
67
66
}
68
67
this . map . removeLayer ( layerId ) ;
69
- const beforeId = layers [ layerIndex + 1 ] ?. id ;
70
- const before = beforeId && ( this . map . style . getLayer ( beforeId ) ?. id ?? this . getFirstLayerId ( beforeId ) ) ;
68
+ const beforeId = layers [ layerIndex + 1 ] && layers [ layerIndex + 1 ] . id ;
69
+ const layer = beforeId && this . map . style . getLayer ( beforeId ) ;
70
+ const before = ( layer && layer . id ) || ( beforeId && this . getFirstLayerId ( beforeId ) ) ;
71
71
const orginLayer = layers [ layerIndex ] ;
72
72
this . addLayer ( { ...orginLayer , paint : { } , layout : {
73
- visibility : orginLayer . layout ?. visibility ?? 'visible'
73
+ visibility : ( orginLayer . layout && orginLayer . layout . visibility ) || 'visible'
74
74
} , symbol } , before ) ;
75
75
}
76
76
@@ -145,7 +145,8 @@ class SymbolHandler {
145
145
match : this . getMatchLayers ,
146
146
case : this . getCaseLayers
147
147
}
148
- const layers = rules [ layer . symbol [ 0 ] ] ?. ( layer ) ;
148
+ const getLayersFn = rules [ layer . symbol [ 0 ] ] ;
149
+ const layers = getLayersFn && getLayersFn ( layer ) ;
149
150
if ( ! layers ) {
150
151
return this . map . fire ( 'error' , {
151
152
error : new Error ( `This expressions not supported` )
@@ -174,7 +175,7 @@ class SymbolHandler {
174
175
*/
175
176
addSymbolImageToMap ( symbol , image ) {
176
177
const { type, name } = getImageKey ( symbol ) ;
177
- const id = symbol [ type ] ?. [ name ] ;
178
+ const id = symbol [ type ] && symbol [ type ] [ name ] ;
178
179
if ( id && ! this . map . hasImage ( id ) ) {
179
180
// 如果需要使用到image 的需要addImage
180
181
this . map . addImage ( id , image ) ;
@@ -209,7 +210,7 @@ class SymbolHandler {
209
210
* @param {string | array } symbol
210
211
*/
211
212
setSymbolTolayer ( layerId , symbol ) {
212
- this . #layerSymbols [ layerId ] = symbol ;
213
+ this . _layerSymbols [ layerId ] = symbol ;
213
214
}
214
215
215
216
/**
@@ -218,15 +219,15 @@ class SymbolHandler {
218
219
* @return {string | array } symbol
219
220
*/
220
221
getSymbol ( layerId ) {
221
- return this . #layerSymbols [ layerId ] ;
222
+ return this . _layerSymbols [ layerId ] ;
222
223
}
223
224
224
225
/**
225
226
* 判断是否有symbol
226
227
* @return {boolean }
227
228
*/
228
229
hasSymbol ( ) {
229
- return Object . keys ( this . #layerSymbols ) . length > 0 ;
230
+ return Object . keys ( this . _layerSymbols ) . length > 0 ;
230
231
}
231
232
232
233
/**
@@ -251,7 +252,7 @@ class SymbolHandler {
251
252
* @returns {array }
252
253
*/
253
254
getLayerIds ( layerId ) {
254
- return this . compositeSymbolRender . getLayerIds ( layerId ) ;
255
+ return this . compositeSymbolRender . getLayerIds ( layerId ) || [ ] ;
255
256
}
256
257
257
258
/**
@@ -284,7 +285,7 @@ class SymbolHandler {
284
285
return symbol ? { ...layer , symbol } : layer ;
285
286
} else {
286
287
const layerIds = this . getLayerIds ( layerId ) ;
287
- if ( layerIds ?. [ 0 ] ) {
288
+ if ( layerIds [ 0 ] ) {
288
289
const reallayer = this . map . getLayerBySymbolBak ( layerIds [ 0 ] ) ;
289
290
return reallayer && { ...reallayer , symbol, id : layerId }
290
291
}
@@ -297,7 +298,7 @@ class SymbolHandler {
297
298
*/
298
299
removeLayer ( layerId ) {
299
300
const layerIds = this . getLayerIds ( layerId ) ;
300
- if ( layerIds ? .length > 0 ) {
301
+ if ( layerIds . length > 0 ) {
301
302
layerIds . forEach ( id => this . map . style . removeLayer ( id ) ) ;
302
303
this . removeLayerId ( layerId ) ;
303
304
} else {
@@ -334,7 +335,7 @@ class SymbolHandler {
334
335
*/
335
336
getFirstLayerId ( layerId ) {
336
337
const layerIds = this . getLayerIds ( layerId ) ;
337
- return layerIds ?. [ 0 ] ;
338
+ return layerIds [ 0 ] ;
338
339
}
339
340
340
341
/**
@@ -344,8 +345,9 @@ class SymbolHandler {
344
345
*/
345
346
moveLayer ( layerId , beforeId ) {
346
347
const layerIds = this . getLayerIds ( layerId ) ;
347
- const realBeforeId = beforeId && ( this . map . style . getLayer ( beforeId ) ?. id ?? this . getFirstLayerId ( beforeId ) ) ;
348
- if ( layerIds ?. length > 0 ) {
348
+ const layer = beforeId && this . map . style . getLayer ( beforeId ) ;
349
+ const realBeforeId = ( layer && layer . id ) || ( beforeId && this . getFirstLayerId ( beforeId ) ) ;
350
+ if ( layerIds . length > 0 ) {
349
351
layerIds . forEach ( id => this . map . style . moveLayer ( id , realBeforeId ) ) ;
350
352
} else {
351
353
this . map . style . moveLayer ( layerId , realBeforeId ) ;
@@ -369,7 +371,7 @@ class SymbolHandler {
369
371
return ;
370
372
}
371
373
const layerIds = this . getLayerIds ( layerId ) ;
372
- if ( layerIds ? .length > 0 ) {
374
+ if ( layerIds . length > 0 ) {
373
375
layerIds . forEach ( id => this . map . style . setFilter ( id , filter , options ) ) ;
374
376
} else {
375
377
this . map . style . setFilter ( layerId , filter , options ) ;
@@ -396,7 +398,7 @@ class SymbolHandler {
396
398
*/
397
399
setLayerZoomRange ( layerId , minzoom , maxzoom ) {
398
400
const layerIds = this . getLayerIds ( layerId ) ;
399
- if ( layerIds ? .length > 0 ) {
401
+ if ( layerIds . length > 0 ) {
400
402
layerIds . forEach ( id => this . map . style . setLayerZoomRange ( id , minzoom , maxzoom ) ) ;
401
403
} else {
402
404
this . map . style . setLayerZoomRange ( layerId , minzoom , maxzoom ) ;
@@ -412,7 +414,7 @@ class SymbolHandler {
412
414
*/
413
415
setPaintProperty ( layerId , name , value , options ) {
414
416
const layerIds = this . getLayerIds ( layerId ) ;
415
- if ( layerIds ? .length > 0 ) {
417
+ if ( layerIds . length > 0 ) {
416
418
layerIds . forEach ( id => this . map . style . setPaintProperty ( id , name , value , options ) ) ;
417
419
} else {
418
420
this . map . style . setPaintProperty ( layerId , name , value , options ) ;
@@ -439,7 +441,7 @@ class SymbolHandler {
439
441
*/
440
442
setLayoutProperty ( layerId , name , value , options ) {
441
443
const layerIds = this . getLayerIds ( layerId ) ;
442
- if ( layerIds ? .length > 0 ) {
444
+ if ( layerIds . length > 0 ) {
443
445
layerIds . forEach ( id => this . map . style . setLayoutProperty ( id , name , value , options ) ) ;
444
446
} else {
445
447
this . map . style . setLayoutProperty ( layerId , name , value , options ) ;
0 commit comments