mirror of
				https://github.com/LiteyukiStudio/LiteyukiBot.git
				synced 2025-10-27 11:46:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| echart = require('echarts');
 | |
| let chart = echarts.init(document.getElementById('main-chart'));
 | |
| const color = ['#9ae5fc', '#dcbf71']; // 自定义图中要用到的颜色
 | |
| console.log("加载图标");
 | |
| // 在地图加载完成后设置所有地区不可选
 | |
| function setAllRegionsUnselectable(geoModel) {
 | |
|     const regions = geoModel.get('regions');
 | |
| 
 | |
|     // 遍历所有地区并设置selected为false
 | |
|     for (let i = 0; i < regions.length; i++) {
 | |
|         const region = regions[i];
 | |
|         region.selected = false;
 | |
|     }
 | |
| 
 | |
|     // 更新模型以反映更改
 | |
|     geoModel.set('regions', regions);
 | |
| 
 | |
|     // 更新图表以显示更改
 | |
|     chart.setOption({
 | |
|         geo: {
 | |
|             regions: regions
 | |
|         }
 | |
|     });
 | |
| }
 | |
| 
 | |
| // 获取数据并初始化图表
 | |
| fetch('https://api.liteyuki.icu/distribution')
 | |
|     .then(response => response.json())
 | |
|     .then(data => {
 | |
|         // 构造 ECharts 需要的数据格式
 | |
|         const locations = data.locations;
 | |
|         const seriesData = locations.map(location => ({
 | |
|             value: [location[1], location[0]] // 直接使用经纬度数组
 | |
|         }));
 | |
|         console.log(seriesData);
 | |
|         // 初始化图表选项
 | |
|         chart.setOption({
 | |
|             backgroundColor: '#454545',
 | |
|             title: {
 | |
|                 text: 'LiteyukiBot分布demo',
 | |
|                 subtext: 'LiteyukiBot分布',
 | |
|                 textStyle: {
 | |
|                     color: '#fff',
 | |
|                     fontSize: 20
 | |
|                 },
 | |
|                 top: '10px',
 | |
|                 left: '10px'
 | |
|             },
 | |
|             geo: {
 | |
|                 map: 'world',
 | |
|                 roam: false,
 | |
|                 itemStyle: {
 | |
|                     normal: {
 | |
|                         areaColor: '#000',
 | |
|                         borderType: null, // 设置边界线类型为无
 | |
|                         borderColor: '#000', // 设置边界线颜色
 | |
| 
 | |
|                     },
 | |
|                     emphasis: {
 | |
|                         areaColor: '#000',
 | |
|                         borderType: null, // 设置边界线类型为无
 | |
|                         borderColor: '#000', // 设置边界线颜色
 | |
|                     }
 | |
|                 },
 | |
|                 regions: [] // 先保留为空
 | |
|             },
 | |
|             series: [{
 | |
|                 // 散点效果
 | |
|                 type: 'scatter',
 | |
|                 coordinateSystem: 'geo', // 表示使用的坐标系为地理坐标系
 | |
|                 symbolSize: 5, // 设置散点的大小为20
 | |
|                 itemStyle: {
 | |
|                     color: '#ffeb3b', // 黄色
 | |
|                 },
 | |
|                 data: seriesData
 | |
|             }],
 | |
|             textStyle: {
 | |
|                 fontSize: 1
 | |
|             }
 | |
|         });
 | |
| 
 | |
|         // 在地图加载完成后设置所有地区不可选
 | |
|         chart.on('ready', function () {
 | |
|             const geoModel = chart.getModel().componentModels.geo[0];
 | |
|             setAllRegionsUnselectable(geoModel);
 | |
|         });
 | |
| 
 | |
|         // 自适应窗口大小变化
 | |
|         window.addEventListener("resize", function () {
 | |
|             chart.resize();
 | |
|         });
 | |
|     })
 | |
|     .catch(error => console.error('Error fetching data:', error)); |