@@ -675,8 +675,14 @@ class SymbolBucket implements Bucket {
675675 evaluationFeature : EvaluationFeature ,
676676 canonical : CanonicalTileID ,
677677 availableImages : Array < ImageId > ,
678- iconScaleFactor : number
678+ iconScaleFactor : number ,
679+ layoutIconSize : number
679680 ) : number {
681+ // If appearance doesn't define icon-size, use layout value
682+ if ( ! activeAppearance . hasProperty ( 'icon-size' ) ) {
683+ return layoutIconSize * iconScaleFactor ;
684+ }
685+
680686 let effectiveIconSize = 1 ;
681687 const unevaluatedIconSize = activeAppearance . getUnevaluatedProperties ( ) . _values [ 'icon-size' ] ;
682688 const iconSizeData = getSizeData ( this . zoom , unevaluatedIconSize , this . worldview ) ;
@@ -980,7 +986,9 @@ class SymbolBucket implements Bucket {
980986 }
981987
982988 if ( icon ) {
983- const unevaluatedIconSize = unevaluatedProperties . _values [ 'icon-size' ] || layer . _unevaluatedLayout . _values [ 'icon-size' ] ;
989+ const unevaluatedIconSize = appearance . hasProperty ( 'icon-size' ) ?
990+ unevaluatedProperties . _values [ 'icon-size' ] :
991+ layer . _unevaluatedLayout . _values [ 'icon-size' ] ;
984992 const iconSizeData = getSizeData ( this . zoom , unevaluatedIconSize , this . worldview ) ;
985993 const imageVariant = getScaledImageVariant ( icon , iconSizeData , unevaluatedIconSize , canonical , this . zoom , symbolFeature , this . pixelRatio , iconScaleFactor , this . worldview ) ;
986994 iconPrimary = imageVariant . iconPrimary ;
@@ -1055,7 +1063,8 @@ class SymbolBucket implements Bucket {
10551063 evaluationFeature ,
10561064 canonical ,
10571065 availableImages ,
1058- iconScaleFactor
1066+ iconScaleFactor ,
1067+ layoutIconSize
10591068 ) ;
10601069 const newSizeX = 0 ; // Unused in appearances
10611070 const newSizeY = ( Math . min ( MAX_PACKED_SIZE , Math . round ( effectiveIconSize * SIZE_PACK_FACTOR ) ) << 1 ) + 1 ; // pack isAppearance flag in lowest bit
0 commit comments