@@ -586,9 +586,10 @@ export class WebMap extends mapboxgl.Evented {
586586 const subStyleSetting = styleSetting [ styleField ] ;
587587 const defaultSetting = this . _getSettingStyle ( styleField , subStyleSetting . defaultValue , simpleStyle ) ;
588588 let styleGroup = [ ] ;
589- const custom = this . _isLinear ( subStyleSetting ) ? subStyleSetting . value : subStyleSetting . values ;
590- const params = { layerType2LegendType, styleField, subStyleSetting, simpleStyle, defaultSetting, custom } ;
591- switch ( this . _getLegendStyleType ( styleField , subStyleSetting ) ) {
589+ const custom = this . _getSettingCustom ( subStyleSetting ) ;
590+ const interpolateInfo = this . _getSettingInterpolateInfo ( subStyleSetting ) ;
591+ const params = { layerType2LegendType, styleField, subStyleSetting, simpleStyle, defaultSetting, custom, interpolateInfo } ;
592+ switch ( this . _getLegendStyleType ( { styleField, currentType : subStyleSetting . type , custom, interpolateInfo } ) ) {
592593 case LegendType . LINEAR :
593594 styleGroup = this . _parseLinearStyle ( params ) ;
594595 break ;
@@ -623,21 +624,23 @@ export class WebMap extends mapboxgl.Evented {
623624 return colorList ;
624625 }
625626
626- _getSettingValue ( setting ) {
627- const { type : currentType , value, values } = setting ;
628- return currentType === 'linear' ? value : values ;
627+ _getSettingCustom ( setting ) {
628+ const { value, values } = setting ;
629+ return this . _isLinear ( setting ) ? value : values ;
630+ }
631+
632+ _getSettingInterpolateInfo ( setting ) {
633+ const { interpolateInfo = { } } = setting ;
634+ return this . _isLinear ( setting ) ? { type : 'linear' } : interpolateInfo ;
629635 }
630636
631637 _isLinear ( subStyleSetting ) {
632638 return subStyleSetting . type === 'linear' ;
633639 }
634640
635- _getLegendStyleType ( styleField , subStyleSetting ) {
636- const { type : currentType } = subStyleSetting ;
637- const custom = this . _getSettingValue ( subStyleSetting ) ;
638- const interpolateInfo = this . _isLinear ( subStyleSetting ) ? { type : 'linear' } : subStyleSetting . interpolateInfo ;
641+ _getLegendStyleType ( { styleField, currentType, custom, interpolateInfo } ) {
639642 if ( [ 'unique' , 'linear' ] . includes ( currentType ) ) {
640- if ( this . _isColorAttr ( styleField ) && interpolateInfo && interpolateInfo . type === 'linear' && custom . length > 1 ) {
643+ if ( this . _isColorAttr ( styleField ) && interpolateInfo . type === 'linear' && custom . length > 1 ) {
641644 return LegendType . LINEAR ;
642645 }
643646 return LegendType . UNIQUE ;
@@ -649,8 +652,7 @@ export class WebMap extends mapboxgl.Evented {
649652 return [ 'color' , 'textColor' , 'outlineColor' , 'textHaloColor' ] . includes ( key ) ;
650653 }
651654
652- _parseLinearStyle ( { subStyleSetting, layerType2LegendType } ) {
653- const custom = this . _getSettingValue ( subStyleSetting ) || [ ] ;
655+ _parseLinearStyle ( { layerType2LegendType, custom } ) {
654656 const styleGroup = [
655657 {
656658 styleField : null ,
@@ -664,8 +666,7 @@ export class WebMap extends mapboxgl.Evented {
664666 return styleGroup ;
665667 }
666668
667- _parseUniqueStyle ( { layerType2LegendType, styleField, subStyleSetting, simpleStyle, defaultSetting, custom } ) {
668- const { interpolateInfo = { } } = subStyleSetting ;
669+ _parseUniqueStyle ( { layerType2LegendType, styleField, simpleStyle, defaultSetting, custom, interpolateInfo } ) {
669670 const styleGroup = custom . map ( ( c ) => {
670671 const itemStyle = this . _getSettingStyle ( styleField , c . value , simpleStyle ) ;
671672 const resData = this . _parseLegendtyle ( { layerType2LegendType, customValue : itemStyle } ) ;
0 commit comments