@@ -13,14 +13,13 @@ import { getImageKey, isMapboxExpression, isMultiSymbol, validateSymbol } from "
1313 * @private
1414 */
1515class SymbolHandler {
16- #layerSymbols; // 图层与symbol的映射关系
1716
1817 constructor ( map ) {
1918 this . map = map ;
2019 this . symbolManager = new SymbolManager ( ) ;
2120 this . singleSymbolRender = new SingleSymbolRender ( map ) ;
2221 this . compositeSymbolRender = new CompositeSymbolRender ( map ) ;
23- this . #layerSymbols = { } ;
22+ this . _layerSymbols = { } ; // 图层与symbol的映射关系
2423 }
2524
2625 _update ( map ) {
@@ -66,11 +65,12 @@ class SymbolHandler {
6665 } ) ;
6766 }
6867 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 ) ) ;
7171 const orginLayer = layers [ layerIndex ] ;
7272 this . addLayer ( { ...orginLayer , paint : { } , layout : {
73- visibility : orginLayer . layout ?. visibility ?? 'visible'
73+ visibility : ( orginLayer . layout && orginLayer . layout . visibility ) || 'visible'
7474 } , symbol } , before ) ;
7575 }
7676
@@ -145,7 +145,8 @@ class SymbolHandler {
145145 match : this . getMatchLayers ,
146146 case : this . getCaseLayers
147147 }
148- const layers = rules [ layer . symbol [ 0 ] ] ?. ( layer ) ;
148+ const getLayersFn = rules [ layer . symbol [ 0 ] ] ;
149+ const layers = getLayersFn && getLayersFn ( layer ) ;
149150 if ( ! layers ) {
150151 return this . map . fire ( 'error' , {
151152 error : new Error ( `This expressions not supported` )
@@ -174,7 +175,7 @@ class SymbolHandler {
174175 */
175176 addSymbolImageToMap ( symbol , image ) {
176177 const { type, name } = getImageKey ( symbol ) ;
177- const id = symbol [ type ] ?. [ name ] ;
178+ const id = symbol [ type ] && symbol [ type ] [ name ] ;
178179 if ( id && ! this . map . hasImage ( id ) ) {
179180 // 如果需要使用到image 的需要addImage
180181 this . map . addImage ( id , image ) ;
@@ -209,7 +210,7 @@ class SymbolHandler {
209210 * @param {string | array } symbol
210211 */
211212 setSymbolTolayer ( layerId , symbol ) {
212- this . #layerSymbols [ layerId ] = symbol ;
213+ this . _layerSymbols [ layerId ] = symbol ;
213214 }
214215
215216 /**
@@ -218,15 +219,15 @@ class SymbolHandler {
218219 * @return {string | array } symbol
219220 */
220221 getSymbol ( layerId ) {
221- return this . #layerSymbols [ layerId ] ;
222+ return this . _layerSymbols [ layerId ] ;
222223 }
223224
224225 /**
225226 * 判断是否有symbol
226227 * @return {boolean }
227228 */
228229 hasSymbol ( ) {
229- return Object . keys ( this . #layerSymbols ) . length > 0 ;
230+ return Object . keys ( this . _layerSymbols ) . length > 0 ;
230231 }
231232
232233 /**
@@ -251,7 +252,7 @@ class SymbolHandler {
251252 * @returns {array }
252253 */
253254 getLayerIds ( layerId ) {
254- return this . compositeSymbolRender . getLayerIds ( layerId ) ;
255+ return this . compositeSymbolRender . getLayerIds ( layerId ) || [ ] ;
255256 }
256257
257258 /**
@@ -284,7 +285,7 @@ class SymbolHandler {
284285 return symbol ? { ...layer , symbol } : layer ;
285286 } else {
286287 const layerIds = this . getLayerIds ( layerId ) ;
287- if ( layerIds ?. [ 0 ] ) {
288+ if ( layerIds [ 0 ] ) {
288289 const reallayer = this . map . getLayerBySymbolBak ( layerIds [ 0 ] ) ;
289290 return reallayer && { ...reallayer , symbol, id : layerId }
290291 }
@@ -297,7 +298,7 @@ class SymbolHandler {
297298 */
298299 removeLayer ( layerId ) {
299300 const layerIds = this . getLayerIds ( layerId ) ;
300- if ( layerIds ? .length > 0 ) {
301+ if ( layerIds . length > 0 ) {
301302 layerIds . forEach ( id => this . map . style . removeLayer ( id ) ) ;
302303 this . removeLayerId ( layerId ) ;
303304 } else {
@@ -334,7 +335,7 @@ class SymbolHandler {
334335 */
335336 getFirstLayerId ( layerId ) {
336337 const layerIds = this . getLayerIds ( layerId ) ;
337- return layerIds ?. [ 0 ] ;
338+ return layerIds [ 0 ] ;
338339 }
339340
340341 /**
@@ -344,8 +345,9 @@ class SymbolHandler {
344345 */
345346 moveLayer ( layerId , beforeId ) {
346347 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 ) {
349351 layerIds . forEach ( id => this . map . style . moveLayer ( id , realBeforeId ) ) ;
350352 } else {
351353 this . map . style . moveLayer ( layerId , realBeforeId ) ;
@@ -369,7 +371,7 @@ class SymbolHandler {
369371 return ;
370372 }
371373 const layerIds = this . getLayerIds ( layerId ) ;
372- if ( layerIds ? .length > 0 ) {
374+ if ( layerIds . length > 0 ) {
373375 layerIds . forEach ( id => this . map . style . setFilter ( id , filter , options ) ) ;
374376 } else {
375377 this . map . style . setFilter ( layerId , filter , options ) ;
@@ -396,7 +398,7 @@ class SymbolHandler {
396398 */
397399 setLayerZoomRange ( layerId , minzoom , maxzoom ) {
398400 const layerIds = this . getLayerIds ( layerId ) ;
399- if ( layerIds ? .length > 0 ) {
401+ if ( layerIds . length > 0 ) {
400402 layerIds . forEach ( id => this . map . style . setLayerZoomRange ( id , minzoom , maxzoom ) ) ;
401403 } else {
402404 this . map . style . setLayerZoomRange ( layerId , minzoom , maxzoom ) ;
@@ -412,7 +414,7 @@ class SymbolHandler {
412414 */
413415 setPaintProperty ( layerId , name , value , options ) {
414416 const layerIds = this . getLayerIds ( layerId ) ;
415- if ( layerIds ? .length > 0 ) {
417+ if ( layerIds . length > 0 ) {
416418 layerIds . forEach ( id => this . map . style . setPaintProperty ( id , name , value , options ) ) ;
417419 } else {
418420 this . map . style . setPaintProperty ( layerId , name , value , options ) ;
@@ -439,7 +441,7 @@ class SymbolHandler {
439441 */
440442 setLayoutProperty ( layerId , name , value , options ) {
441443 const layerIds = this . getLayerIds ( layerId ) ;
442- if ( layerIds ? .length > 0 ) {
444+ if ( layerIds . length > 0 ) {
443445 layerIds . forEach ( id => this . map . style . setLayoutProperty ( id , name , value , options ) ) ;
444446 } else {
445447 this . map . style . setLayoutProperty ( layerId , name , value , options ) ;
0 commit comments