echarts
地图轮播高亮吧。vue2.x
相信效果大家已经清楚了那我们就开干吧。echarts
使用地图我就不说了看看文档然后把对应的地图json
导入就可以了,相信大家也会。对了有人问到我在哪里找地图json
文件,我们可以在DataV.GeoAtlas[2]查询我们想要找的城市然后选择Json
文件下载就可以啦。image.png
eharts
自带的dispatchAction[3]API
,而这个API
是要用eharts
实例去使用的,所以在vue
中我们要将一开始地图初始化的实例给保存下来。<template>
<div ref="myChart" id="myChart" class="gzMap"></div>
</template>
...
data () {
return {
charts: '',
option:{
...
}
};
},
...
mounted () {
this.$echarts.registerMap('广东', gzData);//获取地图数据
this.setMyEchart(); // 页面挂载完成后执行
},
methods:{
setMyEchart () {
const myChart = this.$refs.myChart; // 通过ref获取到DOM节点
if (myChart) {
const thisChart = this.$echarts.init(myChart); // 利用原型Echarts的初始化
this.charts = thisChart;//保存实例
thisChart.setOption(this.option); // 将编写好的配置项挂载到Echarts上
}
},
}
...
复制代码
echarts
的时候讲实例保存起来等下来使用,其余的配置大家可以自行去配,源码会放在文章底下,有兴趣的话可以拿走。image.png
...
data () {
return {
mTime: '',
charts: '',
index: -1,
option:{
...
}
};
},
...
methods:{
setMyEchart () {
...
this.mapActive();
...
},
mapActive () {
const dataLength = gzData.features.length;
// 用定时器控制高亮
this.mTime = setInterval(() => {
// 清除之前的高亮
this.charts.dispatchAction({
type: 'downplay',
seriesIndex: 0,
dataIndex: this.index
});
this.index++;
// 当前下标高亮
this.charts.dispatchAction({
type: 'highlight',
seriesIndex: 0,
dataIndex: this.index
});
this.charts.dispatchAction({
type: 'showTip',
seriesIndex: 0,
dataIndex: this.index
});
if (this.index > dataLength) {
this.index = 0;
}
}, 2000);
},
}
复制代码
data
设置一个接收定时器的容器和一个index
下标来代表是哪个城市高亮。mapActive()
中先获取这个地图所有城市的数量dataLength
,因为dispatchAction
是根据下标来进行高亮切换的如果我们的index
数量大于城市数量他就不会显示了,所有我们要控制inedx
在所有城市数量以下。eharts
的方法来实现高亮和提示框弹出,其中dispatchAction
接收几个参数,type
表示你要呈现的类型,比如高亮或者提示框,具体的可以在官网[4]看到。index
是否超出城市dataLength
数量,如果是则清零重新来过,至此我们的一个轮播高亮就完成了。
methods:{
setMyEchart () {
...
this.mapActive();
...
},
mouseEvents () {
// 鼠标划入
this.charts.on('mouseover', () => {
// 停止定时器,清除之前的高亮
clearInterval(this.mTime);
this.mTime = '';
console.log(this.mTime);
this.charts.dispatchAction({
type: 'downplay',
seriesIndex: 0,
dataIndex: this.index
});
});
// 鼠标划出重新定时器开始
this.charts.on('mouseout', () => {
this.mapActive();
});
},
}
复制代码
index
的城市,当然仅仅加入鼠标划入也是不行的,这样当我们鼠标滑动一次他就不会继续轮播高亮了,我们还需要加多一个鼠标划出事件,让定时器重新开启。关于本文
https://juejin.cn/post/6997978246839042079