@@ -36,7 +36,7 @@ class SymbolHandler {
3636 if ( typeof layer . symbol === 'string' ) {
3737 const id = layer . symbol ;
3838 if ( id ) {
39- const symbol = this . symbolManager . getSymbol ( id ) ;
39+ const symbol = this . getSymbol ( id ) ;
4040 if ( ! symbol ) {
4141 return this . map . fire ( 'error' , {
4242 error : new Error ( `Symbol "${ id } " could not be loaded. Please make sure you have added the symbol with map.addSymbol().` )
@@ -85,6 +85,7 @@ class SymbolHandler {
8585 if ( layer . filter ) {
8686 filter . push ( layer . filter ) ;
8787 }
88+ const defaultFilter = [ ] ;
8889 const expression = layer . symbol . slice ( 2 ) ;
8990 expression . forEach ( ( r , index ) => {
9091 if ( index % 2 === 1 ) {
@@ -98,8 +99,16 @@ class SymbolHandler {
9899 ]
99100 ] , symbol : r
100101 } ) ;
102+ defaultFilter . push ( [
103+ "!=" ,
104+ layer . symbol [ 1 ] [ 1 ] ,
105+ expression [ index - 1 ]
106+ ] ) ;
101107 } else if ( index === expression . length - 1 ) {
102- layers . unshift ( { ...layer , symbol : r } ) ;
108+ layers . unshift ( { ...layer , "filter" : [
109+ ...filter ,
110+ ...defaultFilter
111+ ] , symbol : r } ) ;
103112 }
104113 } ) ;
105114 return layers ;
@@ -116,6 +125,7 @@ class SymbolHandler {
116125 if ( layer . filter ) {
117126 filter . push ( layer . filter ) ;
118127 }
128+ const defaultFilter = [ ] ;
119129 const expression = layer . symbol . slice ( 1 ) ;
120130 expression . forEach ( ( r , index ) => {
121131 if ( index % 2 === 1 ) {
@@ -125,8 +135,12 @@ class SymbolHandler {
125135 expression [ index - 1 ]
126136 ] , symbol : r
127137 } ) ;
138+ defaultFilter . push ( [ '!' , expression [ index - 1 ] ] )
128139 } else if ( index === expression . length - 1 ) {
129- layers . unshift ( { ...layer , symbol : r } ) ;
140+ layers . unshift ( { ...layer , "filter" : [
141+ ...filter ,
142+ ...defaultFilter
143+ ] , symbol : r } ) ;
130144 }
131145 } ) ;
132146 return layers ;
@@ -153,7 +167,7 @@ class SymbolHandler {
153167 } ) ;
154168 }
155169 layers . forEach ( ( l ) => {
156- l . id = Util . createUniqueID ( `${ layer . id } _ ` ) ;
170+ l . id = Util . createUniqueID ( `${ layer . id } _compositeLayer_ ` ) ;
157171 this . compositeSymbolRender . addLayerId ( layer . id , l . id ) ;
158172 this . addLayer ( l , before ) ;
159173 } ) ;
@@ -190,7 +204,7 @@ class SymbolHandler {
190204 * @param {object } symbol
191205 */
192206 addSymbol ( id , symbol ) {
193- if ( this . symbolManager . getSymbol ( id ) ) {
207+ if ( this . getSymbol ( id ) ) {
194208 return this . map . fire ( 'error' , {
195209 error : new Error ( 'An symbol with this name already exists.' )
196210 } ) ;
@@ -218,7 +232,7 @@ class SymbolHandler {
218232 * @param {string } layerId
219233 * @return {string | array } symbol
220234 */
221- getSymbol ( layerId ) {
235+ getLayerSymbol ( layerId ) {
222236 return this . _layerSymbols [ layerId ] ;
223237 }
224238
@@ -242,7 +256,7 @@ class SymbolHandler {
242256 * 通过symbolId获取symbol内容
243257 * @param {string } symbolId
244258 */
245- getSymbolInfo ( symbolId ) {
259+ getSymbol ( symbolId ) {
246260 return this . symbolManager . getSymbol ( symbolId ) ;
247261 }
248262
@@ -280,7 +294,7 @@ class SymbolHandler {
280294 */
281295 getLayer ( layerId ) {
282296 const layer = this . map . getLayerBySymbolBak ( layerId ) ;
283- const symbol = this . getSymbol ( layerId ) ;
297+ const symbol = this . getLayerSymbol ( layerId ) ;
284298 if ( layer ) {
285299 return symbol ? { ...layer , symbol } : layer ;
286300 } else {
@@ -316,9 +330,9 @@ class SymbolHandler {
316330 style . layers = style . layers . reduce ( ( pre , layer ) => {
317331 const compositeId = this . getLayerId ( layer . id ) ;
318332 if ( compositeId ) {
319- ! pre . find ( l => l . id === compositeId ) && pre . push ( { ...layer , symbol : this . getSymbol ( compositeId ) , id : compositeId } )
320- } else if ( this . getSymbol ( layer . id ) ) {
321- pre . push ( { ...layer , symbol : this . getSymbol ( layer . id ) } )
333+ ! pre . find ( l => l . id === compositeId ) && pre . push ( { ...layer , symbol : this . getLayerSymbol ( compositeId ) , id : compositeId } )
334+ } else if ( this . getLayerSymbol ( layer . id ) ) {
335+ pre . push ( { ...layer , symbol : this . getLayerSymbol ( layer . id ) } )
322336 } else {
323337 pre . push ( layer ) ;
324338 }
@@ -361,12 +375,12 @@ class SymbolHandler {
361375 * @param {object } options
362376 */
363377 setFilter ( layerId , filter , options ) {
364- const symbol = this . getSymbol ( layerId ) ;
378+ const symbol = this . getLayerSymbol ( layerId ) ;
365379 if ( isMapboxExpression ( symbol ) ) {
366380 // 如果 symbol 是数据驱动,filter需要重新计算
367381 const realLayerId = this . getFirstLayerId ( layerId ) ;
368382 this . map . style . setFilter ( realLayerId , filter , options ) ;
369- const symbol = this . getSymbol ( layerId ) ;
383+ const symbol = this . getLayerSymbol ( layerId ) ;
370384 this . setSymbol ( layerId , symbol ) ;
371385 return ;
372386 }
@@ -479,7 +493,7 @@ class SymbolHandler {
479493 */
480494 updateSymbol ( symbolId , symbol ) {
481495 // symbol不存在
482- if ( ! this . symbolManager . getSymbol ( symbolId ) ) {
496+ if ( ! this . getSymbol ( symbolId ) ) {
483497 return this . map . fire ( 'error' , {
484498 error : new Error ( `Symbol "${ symbolId } " could not be loaded. Please make sure you have added the symbol with map.addSymbol().` )
485499 } ) ;
@@ -503,7 +517,7 @@ class SymbolHandler {
503517 * @param {any } value
504518 */
505519 setSymbolProperty ( symbolId , symbolIndex , name , value ) {
506- const symbol = this . symbolManager . getSymbol ( symbolId ) ;
520+ const symbol = this . getSymbol ( symbolId ) ;
507521 // symbol不存在
508522 if ( ! symbol ) {
509523 return this . map . fire ( 'error' , {
@@ -547,7 +561,7 @@ class SymbolHandler {
547561 * @returns {any }
548562 */
549563 getSymbolProperty ( symbolId , symbolIndex , name ) {
550- const symbol = this . symbolManager . getSymbol ( symbolId ) ;
564+ const symbol = this . getSymbol ( symbolId ) ;
551565 // symbol不存在
552566 if ( ! symbol ) {
553567 this . map . fire ( 'error' , {
0 commit comments