阅读量:0
这段代码的主要功能是在页面加载完成后,初始化一个 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>