这段代码的主要功能是在页面加载完成后,初始化一个 echarts
地图图表,并配置了相关的地理数据、散点数据、线条数据以及样式效果,最后在指定的 div
元素中进行展示。
需要再vue中的框架实现,不能单独直接运行。
标注
type: 'effectScatter'
表示这是一个带有特效的散点图。coordinateSystem: 'geo'
表明其坐标系统基于地理坐标系。label
配置了标签的显示格式、位置和是否显示。itemStyle
设定了元素的阴影模糊度、阴影颜色和自身颜色。symbolSize: 20
定义了散点的大小。rippleEffect
配置了涟漪效果的相关参数。data
数组中包含了几个具有名称和坐标值的城市数据,用于在地图上显示散点。
代码:
{type: 'effectScatter',coordinateSystem: 'geo',label: {formatter: '{b}',position: 'right',show: true},itemStyle: {shadowBlur: 10,shadowColor: '#f00',color:'#f00'},symbolSize:20,rippleEffect: {brushType: 'stroke',scale:3},data:[{name:'北京',value: [116.46, 39.92]},{name:'乌鲁木齐',value: [87.68, 43.77]},{name:'海口',value: [110.35, 20.02]},{name:'大连',value: [121.62, 38.92]}],},
飞线
type: "lines"
表示这是一个线条类型的图表。effect
配置了线条的特效显示相关参数,如是否显示、周期和符号。lineStyle
设定了线条的颜色、宽度、透明度和弯曲度。data
数组中包含了两组坐标数据,用于绘制线条。
//箭头动画{type:"lines",effect:{show:true,period:5,shmbol:'arrow',symbolSize:10},lineStyle:{color:'#C1A43C',width:1,opacity:1,curveness:0.1,},data:[[{coord: [91.11, 29.97],},{coord:[121.48, 31.22]}],[{coord: [110.35, 20.02]},{coord: [121.62, 38.92]}]]}
完整代码:
<script setup>
部分:
- 引入了
Vue
的ref
、reactive
和onMounted
钩子,以及echarts
库和中国地图数据chinaMap
。 - 定义了一个
ref
变量chart
,用于引用模板中的div
元素。 - 在
onMounted
钩子中调用chartInit
函数进行图表的初始化。 chartInit
函数中:- 使用
echarts.init
基于chart.value
初始化图表实例myChart
。 - 注册了名为
china
的地图。 - 配置了图表的选项
option
,包括地理信息(geo
)部分的地图类型、地图数据、标签样式、区域颜色和强调效果等,以及两个系列的数据(一个是散点效果,一个是线条效果),并设置了相关的样式和数据。 - 最后使用
setOption
方法应用配置选项显示图表。
- 使用
<template>
部分:
- 定义了一个具有
ref="chart"
属性的div
元素,用于展示图表,并设置了宽度为 100% ,高度为 600 像素。
<script setup>
import {ref,reactive, onMounted} from 'vue'
import * as echarts from 'echarts';
import chinaMap from '../../assets/json/china.json'let chart =ref();
onMounted(()=>{chartInit()
})
function chartInit(){// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(chart.value);echarts.registerMap('china',chinaMap)// 指定图表的配置项和数据var option = {geo:{type:'map',map:'china',label:{show:true,color:'#fff',fontSize:10},itemStyle:{areaColor:'#4D98FB',borderColor:'#fff'},zoom:1.2,emphasis:{lable:{color:'#333'},itemStyle:{areaColor:"#1BC1AD"}}},series:[{type: 'effectScatter',coordinateSystem: 'geo',label: {formatter: '{b}',position: 'right',show: true},itemStyle: {shadowBlur: 10,shadowColor: '#f00',color:'#f00'},symbolSize:20,rippleEffect: {brushType: 'stroke',scale:3},data:[{name:'北京',value: [116.46, 39.92]},{name:'乌鲁木齐',value: [87.68, 43.77]},{name:'海口',value: [110.35, 20.02]},{name:'大连',value: [121.62, 38.92]}],},//箭头动画{type:"lines",effect:{show:true,period:5,shmbol:'arrow',symbolSize:10},lineStyle:{color:'#C1A43C',width:1,opacity:1,curveness:0.1,},data:[[{coord: [91.11, 29.97],},{coord:[121.48, 31.22]}],[{coord: [110.35, 20.02]},{coord: [121.62, 38.92]}]]}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);
}
</script><template><div ref="chart" style="width: 100%;height:600px;"></div>
</template><style scoped></style>