您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何實現echarts地圖輪播高亮”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何實現echarts地圖輪播高亮”這篇文章吧。
簡單的準備一個地圖
保存實例備用
設置定時器
設置鼠標移入移出事件
首先準備一個簡簡單單的地圖,因為我在廣州所以就用廣東省的地圖啦~
怎么在echarts使用地圖我就不說了看看文檔然后把對應的地圖json導入就可以了,相信大家也會。對了有人問到我在哪里找地圖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, 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表示你要呈現的類型,比如高亮或者提示框,具體的可以在官網看到。
在最后我們再判斷一下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的城市,當然僅僅加入鼠標劃入也是不行的,這樣當我們鼠標滑動一次他就不會繼續輪播高亮了,我們還需要加多一個鼠標劃出事件,讓定時器重新開啟。
以上是“如何實現echarts地圖輪播高亮”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。