@@ -333,7 +333,7 @@ export class WebMap extends mapboxgl.Evented {
333
333
mapboxglLayers . forEach ( ( layer ) => {
334
334
layer . source && ! this . map . getSource ( layer . source ) && this . map . addSource ( layer . source , sources [ layer . source ] ) ;
335
335
// L7才会用到此属性
336
- if ( layer . type === 'symbol' && ( layer . layout || { } ) [ 'text-z-offset' ] === 0 ) {
336
+ if ( layer . type === 'symbol' && layer . layout [ 'text-z-offset' ] === 0 ) {
337
337
delete layer . layout [ 'text-z-offset' ] ;
338
338
}
339
339
this . map . addLayer ( layer ) ;
@@ -434,15 +434,17 @@ export class WebMap extends mapboxgl.Evented {
434
434
this . fire ( 'addlayerssucceeded' , { map : this . map , mapparams : this . mapParams , layers : matchLayers } ) ;
435
435
}
436
436
437
- _getLayerInfosFromCatalogs ( catalogs ) {
437
+ _getLayerInfosFromCatalogs ( catalogs , catalogTypeField = 'type' ) {
438
438
const results = [ ] ;
439
439
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 ') {
442
442
results . push ( catalogs [ i ] ) ;
443
+ continue ;
443
444
}
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 ) ;
446
448
results . push ( ...result ) ;
447
449
}
448
450
}
@@ -527,19 +529,22 @@ export class WebMap extends mapboxgl.Evented {
527
529
_generateLayers ( ) {
528
530
const allLayersOnMap = this . _getLayersOnMap ( ) ;
529
531
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 ) ;
531
534
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 ) ;
535
538
}
536
539
return false ;
537
540
} ) ;
538
541
if ( containLayer ) {
539
542
return layersList ;
540
543
}
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 ;
543
548
let dataType = '' ;
544
549
let dataId = '' ;
545
550
if ( msDatasetId ) {
@@ -563,7 +568,7 @@ export class WebMap extends mapboxgl.Evented {
563
568
type : sourceOnMap && sourceOnMap . type ,
564
569
sourceLayer : layer . sourceLayer
565
570
} ,
566
- renderLayers : this . _getRenderLayers ( layersContent , layer . id ) ,
571
+ renderLayers : this . _getRenderLayers ( parts , layer . id ) ,
567
572
dataSource : {
568
573
serverId : dataId ,
569
574
type : dataType
@@ -573,22 +578,13 @@ export class WebMap extends mapboxgl.Evented {
573
578
if ( isL7Layer ( layer ) ) {
574
579
overlayLayers . l7Layer = true ;
575
580
}
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 } ;
592
588
}
593
589
layersList . push ( overlayLayers ) ;
594
590
return layersList ;
@@ -618,7 +614,6 @@ export class WebMap extends mapboxgl.Evented {
618
614
const layerCatalogs = layerCatalog . concat ( extraLayers ) ;
619
615
const appreciableLayers = this . getAppreciableLayers ( ) ;
620
616
const formatLayerCatalog = this . _createFormatCatalogs ( layerCatalogs , appreciableLayers ) ;
621
- this . _updateLayerVisible ( formatLayerCatalog ) ;
622
617
return formatLayerCatalog ;
623
618
}
624
619
@@ -656,13 +651,6 @@ export class WebMap extends mapboxgl.Evented {
656
651
return formatCatalogs ;
657
652
}
658
653
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
-
666
654
_collectChildrenKey ( catalogs , keys , list = [ ] ) {
667
655
for ( const data of catalogs ) {
668
656
if ( data . type === 'group' ) {
@@ -770,7 +758,7 @@ export class WebMap extends mapboxgl.Evented {
770
758
771
759
_createLegendInfo ( ) {
772
760
const { catalogs = [ ] } = this . _mapResourceInfo ;
773
- const originLayers = this . _getLayerInfosFromCatalogs ( catalogs , this . _mapInfo . layers ) ;
761
+ const originLayers = this . _getLayerInfosFromCatalogs ( catalogs , 'catalogType' ) ;
774
762
for ( const layer of originLayers ) {
775
763
const { renderer } = layer . visualization || { } ;
776
764
if ( ! renderer ) {
@@ -779,7 +767,12 @@ export class WebMap extends mapboxgl.Evented {
779
767
const layerFromMapInfo = this . _mapInfo . layers . find ( ( item ) => {
780
768
return item . id === layer . id ;
781
769
} ) ;
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 } ) ;
783
776
const styleSettings = this . _parseRendererStyleData ( renderer ) ;
784
777
const layerLegends = styleSettings . reduce ( ( legends , styleSetting ) => {
785
778
const legendItems = this . _createLayerLegendList ( nextLayer , styleSetting ) ;
@@ -798,7 +791,7 @@ export class WebMap extends mapboxgl.Evented {
798
791
}
799
792
800
793
_transStyleKeys ( renderType , keys ) {
801
- return keys . map ( key => this . _getAliasKey ( renderType , key ) ) ;
794
+ return keys . map ( ( key ) => this . _getAliasKey ( renderType , key ) ) ;
802
795
}
803
796
804
797
_transStyleSetting ( renderType , styleSetting ) {
@@ -894,7 +887,7 @@ export class WebMap extends mapboxgl.Evented {
894
887
const layerId = layer . id ;
895
888
const layerTitle = layer . title ;
896
889
const commonStyleOptions = {
897
- themeField : styleSetting . field ,
890
+ themeField : layer . themeField || styleSetting . field ,
898
891
layerId,
899
892
layerTitle
900
893
} ;
0 commit comments