欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章搞定echarts地圖輪播高亮

 更新時(shí)間:2021年08月20日 12:47:00   作者:快跑啊小盧_  
ECharts是一個(gè)使用 JavaScript 實(shí)現(xiàn)的開(kāi)源可視化庫(kù),涵蓋各行業(yè)圖表,滿足各種需求,下面這篇文章主要給大家介紹了關(guān)于echarts地圖輪播高亮的相關(guān)資料,需要的朋友可以參考下

前言

這兩天忙著做公司的超級(jí)數(shù)據(jù)大屏,實(shí)在擠不出時(shí)間連續(xù)更文。

但是更文活動(dòng)都堅(jiān)持這么久了也不想停止更新,那我就分享一下在工作中經(jīng)常用到的echarts地圖輪播高亮吧。

技術(shù)棧用的是vue2.x 相信效果大家已經(jīng)清楚了那我們就開(kāi)干吧。

toDoList

  •  簡(jiǎn)單的準(zhǔn)備一個(gè)地圖
  •  保存實(shí)例備用
  •  設(shè)置定時(shí)器
  •  設(shè)置鼠標(biāo)移入移出事件

just do it

準(zhǔn)備一個(gè)地圖

首先準(zhǔn)備一個(gè)簡(jiǎn)簡(jiǎn)單單的地圖,因?yàn)槲以趶V州所以就用廣東省的地圖啦~

怎么在echarts使用地圖我就不說(shuō)了看看文檔然后把對(duì)應(yīng)的地圖json導(dǎo)入就可以了,相信大家也會(huì)。對(duì)了有人問(wèn)到我在哪里找地圖json文件,我們可以在DataV.GeoAtlas查詢我們想要找的城市然后選擇Json文件下載就可以啦。

保存實(shí)例備用

首先我們要知道想讓地圖輪播高亮就需要用到eharts自帶的dispatchActionAPI,而這個(gè)API是要用eharts實(shí)例去使用的,所以在vue中我們要將一開(kāi)始地圖初始化的實(shí)例給保存下來(lái)。

<template>
    <div ref="myChart" id="myChart" class="gzMap"></div>
</template>
...
    data () {
        return {
                charts: '',
                option:{
                    ...
                }
        };
    },
...
    mounted () {
        this.$echarts.registerMap('廣東', gzData);//獲取地圖數(shù)據(jù)
        this.setMyEchart(); // 頁(yè)面掛載完成后執(zhí)行
    },
    methods:{
        setMyEchart () {
            const myChart = this.$refs.myChart; // 通過(guò)ref獲取到DOM節(jié)點(diǎn)
            if (myChart) {
                const thisChart = this.$echarts.init(myChart); // 利用原型Echarts的初始化
                this.charts = thisChart;//保存實(shí)例
                thisChart.setOption(this.option); // 將編寫(xiě)好的配置項(xiàng)掛載到Echarts上
            }
        },
    }
...

我們?cè)谝婚_(kāi)始初始化echarts的時(shí)候講實(shí)例保存起來(lái)等下來(lái)使用,其余的配置大家可以自行去配,源碼會(huì)放在文章底下,有興趣的話可以拿走。

設(shè)置定時(shí)器輪播

因?yàn)橐O(shè)置輪播高亮,說(shuō)白了就是給一個(gè)時(shí)間,固定多少多少時(shí)間亮一下然后提示框出來(lái)一下,現(xiàn)在默認(rèn)大家已經(jīng)設(shè)置好普通的鼠標(biāo)移入高亮和提示框。

首先設(shè)置一個(gè)定時(shí)器方法,然后在里面調(diào)用官方的高亮方法和提示框方法,在規(guī)定的時(shí)間內(nèi)進(jìn)行閃爍即可。

...
    data () {
        return {
                mTime: '',
                charts: '',
                index: -1,
                option:{
                    ...
                }
        };
    },
...
    methods:{
        setMyEchart () {
            ...
            this.mapActive();
            ...
        },
        mapActive () {
            const dataLength = gzData.features.length;
            // 用定時(shí)器控制高亮
            this.mTime = setInterval(() => {
                // 清除之前的高亮
                this.charts.dispatchAction({
                    type: 'downplay',
                    seriesIndex: 0,
                    dataIndex: this.index
                });
                this.index++;
                // 當(dāng)前下標(biāo)高亮
                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設(shè)置一個(gè)接收定時(shí)器的容器和一個(gè)index下標(biāo)來(lái)代表是哪個(gè)城市高亮。

在mapActive()中先獲取這個(gè)地圖所有城市的數(shù)量dataLength,因?yàn)閐ispatchAction是根據(jù)下標(biāo)來(lái)進(jìn)行高亮切換的如果我們的index數(shù)量大于城市數(shù)量他就不會(huì)顯示了,所有我們要控制inedx在所有城市數(shù)量以下。

設(shè)置定時(shí)器里面先清除之前高亮的城市,如果不清除的話就會(huì)一下子多個(gè)高亮了,不是我們想要的效果。

再使用我們的實(shí)例調(diào)用eharts的方法來(lái)實(shí)現(xiàn)高亮和提示框彈出,其中dispatchAction接收幾個(gè)參數(shù),type表示你要呈現(xiàn)的類型,比如高亮或者提示框,具體的可以在官網(wǎng)看到。

在最后我們?cè)倥袛嘁幌耰ndex是否超出城市dataLength數(shù)量,如果是則清零重新來(lái)過(guò),至此我們的一個(gè)輪播高亮就完成了。

加入鼠標(biāo)事件

當(dāng)然我們不能就這樣結(jié)束,還要加一些事件效果,比如說(shuō)當(dāng)我們鼠標(biāo)移動(dòng)到地圖里面時(shí)會(huì)停止輪播只高亮我們選擇的那個(gè)城市

    methods:{
        setMyEchart () {
            ...
            this.mapActive();
            ...
        },
        mouseEvents () {
            // 鼠標(biāo)劃入
            this.charts.on('mouseover', () => {
                // 停止定時(shí)器,清除之前的高亮
                clearInterval(this.mTime);
                this.mTime = '';
                console.log(this.mTime);
                this.charts.dispatchAction({
                        type: 'downplay',
                        seriesIndex: 0,
                        dataIndex: this.index
                });
            });
            // 鼠標(biāo)劃出重新定時(shí)器開(kāi)始
            this.charts.on('mouseout', () => {
                this.mapActive();
            });
        },
      }

可以看到我們給鼠標(biāo)劃入加入了事件,當(dāng)我們鼠標(biāo)移動(dòng)到地圖上時(shí)就清除之前對(duì)應(yīng)index的城市,當(dāng)然僅僅加入鼠標(biāo)劃入也是不行的,這樣當(dāng)我們鼠標(biāo)滑動(dòng)一次他就不會(huì)繼續(xù)輪播高亮了,我們還需要加多一個(gè)鼠標(biāo)劃出事件,讓定時(shí)器重新開(kāi)啟。

至此一個(gè)簡(jiǎn)單的高亮輪播就完成了,具體源碼我放在這里。

總結(jié)

到此這篇關(guān)于echarts地圖輪播高亮的文章就介紹到這了,更多相關(guān)echarts地圖輪播高亮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • window.location的重寫(xiě)及判斷l(xiāng)ocation是否被重寫(xiě)

    window.location的重寫(xiě)及判斷l(xiāng)ocation是否被重寫(xiě)

    這篇文章主要介紹了window.location的重寫(xiě)及判斷l(xiāng)ocation是否被重寫(xiě),需要的朋友可以參考下
    2014-09-09
  • javascript模擬鼠標(biāo)點(diǎn)擊事件原理和實(shí)現(xiàn)方法

    javascript模擬鼠標(biāo)點(diǎn)擊事件原理和實(shí)現(xiàn)方法

    本文詳細(xì)介紹了JS模擬鼠標(biāo)點(diǎn)擊事件的原理以及應(yīng)用場(chǎng)景,并提供了模擬鼠標(biāo)左鍵點(diǎn)擊事件、右鍵點(diǎn)擊事件、滾輪事件和移動(dòng)事件的代碼實(shí)現(xiàn),了解JS模擬鼠標(biāo)點(diǎn)擊事件的原理和實(shí)現(xiàn)方法對(duì)于開(kāi)發(fā)人員非常重要,這對(duì)于許多面向用戶的web應(yīng)用程序的開(kāi)發(fā)和測(cè)試都具有很重要的意義
    2023-09-09
  • javascript 三組文字間隙滾動(dòng)實(shí)例代碼

    javascript 三組文字間隙滾動(dòng)實(shí)例代碼

    非常實(shí)用的文字間隙滾動(dòng)效果代碼
    2008-06-06
  • 詳解JavaScript如何實(shí)現(xiàn)四種常用排序

    詳解JavaScript如何實(shí)現(xiàn)四種常用排序

    這篇文章主要為大家介紹了如何利用JavaScript實(shí)現(xiàn)四個(gè)常用的排序:插入排序、交換排序、選擇排序和歸并排序,文中利用動(dòng)圖詳細(xì)介紹了實(shí)現(xiàn)過(guò)程,需要的可以參考一下
    2022-02-02
  • JavaScript中“+”的陷阱深刻理解

    JavaScript中“+”的陷阱深刻理解

    本文將詳細(xì)介紹JavaScript中“+”的一些錯(cuò)誤應(yīng)用,需要的朋友可以參考下
    2012-12-12
  • ES6   Promise基礎(chǔ)用法(resolve、reject、then、catch,all)

    ES6   Promise基礎(chǔ)用法(resolve、reject、then、catch,a

    Promise是JavaScript中處理異步操作的對(duì)象,它有三種狀態(tài):Pending、Fulfilled、Rejected,使用new Promise創(chuàng)建Promise對(duì)象,通過(guò)resolve和reject改變狀態(tài),then和catch方法用于處理成功和失敗的結(jié)果,本文介紹ES6 Promise用法,感興趣的朋友一起看看吧
    2024-09-09
  • javascript實(shí)現(xiàn)在網(wǎng)頁(yè)任意處點(diǎn)左鍵彈出隱藏菜單的方法

    javascript實(shí)現(xiàn)在網(wǎng)頁(yè)任意處點(diǎn)左鍵彈出隱藏菜單的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)在網(wǎng)頁(yè)任意處點(diǎn)左鍵彈出隱藏菜單的方法,設(shè)計(jì)鼠標(biāo)事件及css樣式操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • JavaScript 閉包深入理解(closure)

    JavaScript 閉包深入理解(closure)

    最近在網(wǎng)上查閱了不少Javascript閉包(closure)相關(guān)的資料,寫(xiě)的大多是非常的學(xué)術(shù)和專業(yè)。對(duì)于初學(xué)者來(lái)說(shuō)別說(shuō)理解閉包了,就連文字?jǐn)⑹龆己茈y看懂。撰寫(xiě)此文的目的就是用最通俗的文字揭開(kāi)Javascript閉包的真實(shí)面目。
    2009-05-05
  • JavaScript中window.open用法實(shí)例詳解

    JavaScript中window.open用法實(shí)例詳解

    這篇文章主要介紹了JavaScript中window.open用法,實(shí)例分析了window.open方法的功能、參數(shù)及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • IE和Firefox的Javascript兼容性總結(jié)[推薦收藏]

    IE和Firefox的Javascript兼容性總結(jié)[推薦收藏]

    長(zhǎng)久以來(lái)JavaScript兼容性一直是Web開(kāi)發(fā)者的一個(gè)主要問(wèn)題。在正式規(guī)范、事實(shí)標(biāo)準(zhǔn)以及各種實(shí)現(xiàn)之間的存在的差異讓許多開(kāi)發(fā)者日夜煎熬
    2011-10-10

最新評(píng)論