@@ -333,7 +333,7 @@ export class WebMap extends mapboxgl.Evented {
333333 mapboxglLayers . forEach ( ( layer ) => {
334334 layer . source && ! this . map . getSource ( layer . source ) && this . map . addSource ( layer . source , sources [ layer . source ] ) ;
335335 // L7才会用到此属性
336- if ( layer . type === 'symbol' && ( layer . layout || { } ) [ 'text-z-offset' ] === 0 ) {
336+ if ( layer . type === 'symbol' && layer . layout [ 'text-z-offset' ] === 0 ) {
337337 delete layer . layout [ 'text-z-offset' ] ;
338338 }
339339 this . map . addLayer ( layer ) ;
@@ -434,15 +434,17 @@ export class WebMap extends mapboxgl.Evented {
434434 this . fire ( 'addlayerssucceeded' , { map : this . map , mapparams : this . mapParams , layers : matchLayers } ) ;
435435 }
436436
437- _getLayerInfosFromCatalogs ( catalogs ) {
437+ _getLayerInfosFromCatalogs ( catalogs , catalogTypeField = 'type' ) {
438438 const results = [ ] ;
439439 for ( let i = 0 ; i < catalogs . length ; i ++ ) {
440- const { catalogType, children } = catalogs [ i ] ;
441- if ( catalogType === 'layer ') {
440+ const catalogType = catalogs [ i ] [ catalogTypeField ] ;
441+ if ( catalogType !== 'group ') {
442442 results . push ( catalogs [ i ] ) ;
443+ continue ;
443444 }
444- if ( catalogType === 'group' && children && children . length > 0 ) {
445- const result = this . _getLayerInfosFromCatalogs ( children ) ;
445+ const { children } = catalogs [ i ] ;
446+ if ( children && children . length > 0 ) {
447+ const result = this . _getLayerInfosFromCatalogs ( children , catalogTypeField ) ;
446448 results . push ( ...result ) ;
447449 }
448450 }
@@ -527,19 +529,22 @@ export class WebMap extends mapboxgl.Evented {
527529 _generateLayers ( ) {
528530 const allLayersOnMap = this . _getLayersOnMap ( ) ;
529531 const { catalogs = [ ] , datas = [ ] } = this . _mapResourceInfo ;
530- const originLayers = this . _getLayerInfosFromCatalogs ( catalogs ) ;
532+ const projectCataglogs = this . _getLayerInfosFromCatalogs ( catalogs , 'catalogType' ) ;
533+ const metadataCatalogs = this . _getLayerInfosFromCatalogs ( this . _mapInfo . metadata . layerCatalog ) ;
531534 const layers = allLayersOnMap . reduce ( ( layersList , layer ) => {
532- const containLayer = originLayers . find ( ( item ) => {
533- if ( item . layersContent && item . id !== layer . id ) {
534- return item . layersContent . includes ( layer . id ) ;
535+ const containLayer = metadataCatalogs . find ( ( item ) => {
536+ if ( item . parts && item . id !== layer . id ) {
537+ return item . parts . includes ( layer . id ) ;
535538 }
536539 return false ;
537540 } ) ;
538541 if ( containLayer ) {
539542 return layersList ;
540543 }
541- const matchCatalogLayer = originLayers . find ( ( item ) => item . id === layer . id ) || { } ;
542- const { title = layer . id , visualization, layersContent, msDatasetId } = matchCatalogLayer ;
544+ const matchProjectCatalog = projectCataglogs . find ( ( item ) => item . id === layer . id ) || { } ;
545+ const matchMetadataCatalog = metadataCatalogs . find ( ( item ) => item . id === layer . id ) || { } ;
546+ const { msDatasetId } = matchProjectCatalog ;
547+ const { title = layer . id , parts } = matchMetadataCatalog ;
543548 let dataType = '' ;
544549 let dataId = '' ;
545550 if ( msDatasetId ) {
@@ -563,7 +568,7 @@ export class WebMap extends mapboxgl.Evented {
563568 type : sourceOnMap && sourceOnMap . type ,
564569 sourceLayer : layer . sourceLayer
565570 } ,
566- renderLayers : this . _getRenderLayers ( layersContent , layer . id ) ,
571+ renderLayers : this . _getRenderLayers ( parts , layer . id ) ,
567572 dataSource : {
568573 serverId : dataId ,
569574 type : dataType
@@ -573,22 +578,13 @@ export class WebMap extends mapboxgl.Evented {
573578 if ( isL7Layer ( layer ) ) {
574579 overlayLayers . l7Layer = true ;
575580 }
576- if ( visualization ) {
577- const styleSettings = this . _parseRendererStyleData ( visualization . renderer ) ;
578- const defaultStyleSetting = styleSettings [ 0 ] ;
579- if ( defaultStyleSetting ) {
580- let themeField = '' ;
581- if ( defaultStyleSetting . type === 'heat' ) {
582- themeField = defaultStyleSetting . field ;
583- } else if ( defaultStyleSetting . color ) {
584- themeField = defaultStyleSetting . color . field ;
585- }
586- if ( themeField ) {
587- overlayLayers . themeSetting = {
588- themeField
589- } ;
590- }
591- }
581+ const matchThemeFields = this . _legendList
582+ . filter ( ( item ) => item . layerId === layer . id )
583+ . map ( ( item ) => item . themeField )
584+ . filter ( ( item ) => ! ! item ) ;
585+ const validThemeFields = Array . from ( new Set ( matchThemeFields ) ) ;
586+ if ( validThemeFields . length > 0 ) {
587+ overlayLayers . themeSetting = { themeField : validThemeFields } ;
592588 }
593589 layersList . push ( overlayLayers ) ;
594590 return layersList ;
@@ -618,7 +614,6 @@ export class WebMap extends mapboxgl.Evented {
618614 const layerCatalogs = layerCatalog . concat ( extraLayers ) ;
619615 const appreciableLayers = this . getAppreciableLayers ( ) ;
620616 const formatLayerCatalog = this . _createFormatCatalogs ( layerCatalogs , appreciableLayers ) ;
621- this . _updateLayerVisible ( formatLayerCatalog ) ;
622617 return formatLayerCatalog ;
623618 }
624619
@@ -656,13 +651,6 @@ export class WebMap extends mapboxgl.Evented {
656651 return formatCatalogs ;
657652 }
658653
659- _updateLayerVisible ( catalogs ) {
660- for ( const data of catalogs ) {
661- const list = this . _collectChildrenKey ( [ data ] , [ 'visible' ] ) ;
662- data . visible = list . every ( ( item ) => item ) ;
663- }
664- }
665-
666654 _collectChildrenKey ( catalogs , keys , list = [ ] ) {
667655 for ( const data of catalogs ) {
668656 if ( data . type === 'group' ) {
@@ -770,7 +758,7 @@ export class WebMap extends mapboxgl.Evented {
770758
771759 _createLegendInfo ( ) {
772760 const { catalogs = [ ] } = this . _mapResourceInfo ;
773- const originLayers = this . _getLayerInfosFromCatalogs ( catalogs , this . _mapInfo . layers ) ;
761+ const originLayers = this . _getLayerInfosFromCatalogs ( catalogs , 'catalogType' ) ;
774762 for ( const layer of originLayers ) {
775763 const { renderer } = layer . visualization || { } ;
776764 if ( ! renderer ) {
@@ -779,7 +767,12 @@ export class WebMap extends mapboxgl.Evented {
779767 const layerFromMapInfo = this . _mapInfo . layers . find ( ( item ) => {
780768 return item . id === layer . id ;
781769 } ) ;
782- const nextLayer = Object . assign ( { } , layerFromMapInfo , { title : layer . title } ) ;
770+ let themeField ;
771+ const sourceInfo = this . _mapInfo . sources [ layerFromMapInfo . source ] ;
772+ if ( 'clusterField' in sourceInfo ) {
773+ themeField = sourceInfo . clusterField ;
774+ }
775+ const nextLayer = Object . assign ( { } , layerFromMapInfo , { title : layer . title , themeField } ) ;
783776 const styleSettings = this . _parseRendererStyleData ( renderer ) ;
784777 const layerLegends = styleSettings . reduce ( ( legends , styleSetting ) => {
785778 const legendItems = this . _createLayerLegendList ( nextLayer , styleSetting ) ;
@@ -798,7 +791,7 @@ export class WebMap extends mapboxgl.Evented {
798791 }
799792
800793 _transStyleKeys ( renderType , keys ) {
801- return keys . map ( key => this . _getAliasKey ( renderType , key ) ) ;
794+ return keys . map ( ( key ) => this . _getAliasKey ( renderType , key ) ) ;
802795 }
803796
804797 _transStyleSetting ( renderType , styleSetting ) {
@@ -894,7 +887,7 @@ export class WebMap extends mapboxgl.Evented {
894887 const layerId = layer . id ;
895888 const layerTitle = layer . title ;
896889 const commonStyleOptions = {
897- themeField : styleSetting . field ,
890+ themeField : layer . themeField || styleSetting . field ,
898891 layerId,
899892 layerTitle
900893 } ;
0 commit comments