一篇文章搞定echarts地圖輪播高亮
目錄
- 前言
- toDoList
- just do it
- 準備一個地圖
- 儲存例項備用
- 設定定時器輪播
- 加入滑鼠事件
- 總結
前言
這兩天忙著做公司的超級資料大屏,實在擠不出時間連續更文。
但是更文活動都堅持這麼久了也不想停止更新,那我就分享一下在工作中經常用到的echarts地圖輪播高亮吧。
技術棧用的是2.x 相信效果大家已經清楚了那我們就開幹吧。
toDoList
- 簡單的準備一個地圖
- 儲存例項備用
- 設定定時器
- 設定滑鼠移入移出事件
just do it
準備一個地圖
首先準備一個簡簡單單的地圖,因為我在廣州所以就用廣東省的地圖啦~
怎麼在echarts使用地圖我就不說了看看文件然後把對應的地圖on匯入就可以了,相信大家也會。對了有人問到我在哪裡找地圖json檔案,我們可以在DataV.GeoAtlas查詢我們想要找的城市然後選擇Json檔案下載就可以啦。
儲存例項備用
首先我們要知道想讓地圖輪播高亮就需要用到eharts自帶的dispatchActionAPI,而這個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的時候講例項儲存起來等下來使用,其餘的配置大家可以自行去配,原始碼會放在文章底下,有興趣的話可以拿走。
設定定時器輪播
因為要設定輪播高亮,說白了就是給一個時間,固定多少多少時間亮一下然後提示框出來一下,現在預設大家已經設定好普通的滑鼠移入高亮和提示框。
首先設定一個定時器方法,然後在裡面呼叫官方的高亮方法和提示框方法,在規定的時間內進行閃爍即可。
... data () { return { mTime: '', charts: '',index: -1,... 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',dataIndex: this.index }); this.charts.dispatchAction({ type: 'showTip',dataIndex: this.index }); if (this.index > dataLength) { this.index = 0; } },2000); },}
我們首先在data設定一個接收定時器的容器和一個index下標來代表是哪個城市高亮。
在mapActive()中先獲取這個地圖所有城市的數量dataLength,因為dispatchAction是根據下標來進行高亮切換的如果我們的index數量大於城市數量他就不會顯示了,所有我們要控制inedx在所有城市數量以下。
設定定時器裡面先清除之前高亮的城市,如果不清除的話就會一下子多個高亮了,不是我們想要的效果。
再使用我們的例項呼叫eharts的方法來實現高亮和提示框彈出,其中dispatchAction接收幾個引數,type表示你要呈現的型別,比如高亮或者提示框,具體的可以在官網看到。
在最後我們再判斷一下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',seOopAwSZtwTriesIndex: 0,dataIndex: this.index }); }); // 滑鼠劃出重新定時器開始 this.charts.on('mouseout',() => { this.mapActive(); }); },}
可以看到我們給滑鼠劃入加入了事件,當我們滑鼠移動到地圖上時就清除之前對應index的城市,當然僅僅加入滑鼠劃入也是不行的,這樣當我們滑鼠滑動一次他就不會繼續輪播高亮了,我們還需要加多一個滑鼠劃出事件,讓定時器重新開啟。
至此一個簡單的高亮輪播就完成了,具體原始碼我放在這裡。
總結
到此這篇關於echarts地圖輪播高亮的文章就介紹到這了,更多相關echarts地圖輪播高亮內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!