解决冲突
This commit is contained in:
		@ -0,0 +1,152 @@
 | 
			
		||||
import { Component, ElementRef, Input, NgZone, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';
 | 
			
		||||
import { Chart } from '@antv/g2';
 | 
			
		||||
import DataSet from '@antv/data-set';
 | 
			
		||||
import { DataService } from 'src/app/routes/datatable/services/data.service';
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-datatable-customindex-map',
 | 
			
		||||
  templateUrl: './map.component.html',
 | 
			
		||||
  styleUrls: ['./map.component.less']
 | 
			
		||||
})
 | 
			
		||||
export class DatatableCustomindexMapComponent implements OnInit, OnChanges {
 | 
			
		||||
  el: any;
 | 
			
		||||
  @Input() chartData: any;
 | 
			
		||||
  chart: any;
 | 
			
		||||
  mapData: any;
 | 
			
		||||
  ds!: DataSet ;
 | 
			
		||||
  worldMap: any;
 | 
			
		||||
  userView: any;
 | 
			
		||||
  userDv: any;
 | 
			
		||||
  userData: any = [];
 | 
			
		||||
  constructor(private service: DataService, private ngZone: NgZone) {}
 | 
			
		||||
 | 
			
		||||
  ngOnChanges(changes: SimpleChanges): void {
 | 
			
		||||
    if (this.chartData) {
 | 
			
		||||
      // setTimeout(()=>{
 | 
			
		||||
      //   this.chart.render(true)
 | 
			
		||||
      // }, 1000)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ngOnInit(): void {}
 | 
			
		||||
  reRender() {
 | 
			
		||||
    console.log('5454545');
 | 
			
		||||
    setTimeout(() => {
 | 
			
		||||
      this.chart.render();
 | 
			
		||||
    }, 1000);
 | 
			
		||||
  }
 | 
			
		||||
  render(el: ElementRef<HTMLDivElement>): void {
 | 
			
		||||
    this.el = el.nativeElement;
 | 
			
		||||
    setTimeout(() => {
 | 
			
		||||
      this.ngZone.runOutsideAngular(() => this.init(this.el));
 | 
			
		||||
    }, 500);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private init(el: HTMLElement): void {
 | 
			
		||||
    fetch('https://gw.alipayobjects.com/os/antvdemo/assets/data/china.json')
 | 
			
		||||
      .then(res => res.json())
 | 
			
		||||
      .then(mapData => {
 | 
			
		||||
      this.mapData =mapData
 | 
			
		||||
      this.chart = new Chart({
 | 
			
		||||
        container: el,
 | 
			
		||||
        autoFit: true,
 | 
			
		||||
        height: 680,
 | 
			
		||||
        padding: [0, 0]
 | 
			
		||||
      });
 | 
			
		||||
      this.chart.tooltip({
 | 
			
		||||
        showTitle: false,
 | 
			
		||||
        showMarkers: false,
 | 
			
		||||
        shared: true
 | 
			
		||||
      });
 | 
			
		||||
      // 同步度量
 | 
			
		||||
      this.chart.scale({
 | 
			
		||||
        longitude: {
 | 
			
		||||
          sync: true
 | 
			
		||||
        },
 | 
			
		||||
        latitude: {
 | 
			
		||||
          sync: true
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
      this.chart.axis(false);
 | 
			
		||||
      this.chart.legend('trend', {
 | 
			
		||||
        position: 'left'
 | 
			
		||||
      });
 | 
			
		||||
      console.log('8888');
 | 
			
		||||
  
 | 
			
		||||
      // 绘制世界地图背景
 | 
			
		||||
      this.ds = new DataSet();
 | 
			
		||||
      this.worldMap = this.ds.createView('back').source(this.mapData, {
 | 
			
		||||
        type: 'GeoJSON'
 | 
			
		||||
      });
 | 
			
		||||
      const worldMapView = this.chart.createView();
 | 
			
		||||
      worldMapView.data(this.worldMap.rows);
 | 
			
		||||
      worldMapView.tooltip(false);
 | 
			
		||||
      worldMapView.polygon().position('longitude*latitude').style({
 | 
			
		||||
        fill: '#fff',
 | 
			
		||||
        stroke: '#ccc',
 | 
			
		||||
        lineWidth: 1
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
    // 可视化用户数据
 | 
			
		||||
    // this.userData = [
 | 
			
		||||
    //   { name: '山东', value: 21 },
 | 
			
		||||
    //   { name: '山东', value: 22},
 | 
			
		||||
    //   { name: '广东', value: 20, },
 | 
			
		||||
    //   { name: '广东', value: 20  },
 | 
			
		||||
    //   { name: '四川', value: 120  },
 | 
			
		||||
    //   { name: '湖南', value: 200  },
 | 
			
		||||
    //   { name: '河北', value: 30  },
 | 
			
		||||
 | 
			
		||||
    // ];
 | 
			
		||||
        let value: any = []
 | 
			
		||||
      this.service.request(this.service.$api_getTransactionDistribution).subscribe((res: any) => {
 | 
			
		||||
     if(res) {
 | 
			
		||||
      res.forEach((element: any) => {
 | 
			
		||||
        value.push({
 | 
			
		||||
          name: element.province,
 | 
			
		||||
          value: element.weight,
 | 
			
		||||
       });
 | 
			
		||||
       });
 | 
			
		||||
       console.log(value);
 | 
			
		||||
       this.userData = value
 | 
			
		||||
    this.userDv = this.ds.createView().source(this.userData).transform({
 | 
			
		||||
        geoDataView: this.worldMap,
 | 
			
		||||
        field: 'name',
 | 
			
		||||
        type: 'geo.region',
 | 
			
		||||
        as: ['longitude', 'latitude']
 | 
			
		||||
      }).transform({
 | 
			
		||||
        type: 'map',
 | 
			
		||||
        callback: (obj: { trend: string; value: number }) => {
 | 
			
		||||
          
 | 
			
		||||
          obj.trend = obj.value > 100 ? '蓝色地区' : '灰色地区';
 | 
			
		||||
          return obj;
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    this.userView = this.chart.createView();
 | 
			
		||||
    this.userView.data(this.userDv.rows);
 | 
			
		||||
    // this.userView.scale({
 | 
			
		||||
    //   trend: {
 | 
			
		||||
    //     alias: '蓝色地区数量'
 | 
			
		||||
    //   }
 | 
			
		||||
    // });
 | 
			
		||||
    console.log(this.userView);
 | 
			
		||||
    console.log('45545');
 | 
			
		||||
    
 | 
			
		||||
    this.userView.polygon().position('longitude*latitude').color('trend', ['#c7daf3', '#1779f3']).tooltip('').style({fillOpacity: 0.85 })
 | 
			
		||||
      // .animate({
 | 
			
		||||
      //   leave: {
 | 
			
		||||
      //     animation: 'fade-out'
 | 
			
		||||
      //   }
 | 
			
		||||
      // });
 | 
			
		||||
      this.userView.interaction('element-active');
 | 
			
		||||
      this.chart.render();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
      })
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      console.log('9999');
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user