vue echarts 3D地圖+省+彈窗

先看效果圖


image.png
image.png

首先下載echarts 插件,3d地圖需要依賴echarts-gl

npm install echarts --save
npm install echarts-gl --save

創(chuàng)建echarts 容器,及彈窗(彈窗內(nèi)容根據(jù)業(yè)務自行調(diào)整纲菌,此處略過)

                <div class="h-3" style="position: relative;">
                    <!--彈窗-->
                    <div class="layer" ref="layer" :style="styles" v-if="layerList.length>0">
                        <div class="content">
                            <p>LPL夏季賽({{name}})</p>
                            <Row style="text-align: center;line-height: 22px;height: 24px;">
                                <Button style="margin-left:4px" :type="item.selected?'warning':'info'" size="small" @click="tabsChange(item)" v-for="(item,index) in btn" :key="index">{{item.name}}</Button>
                            </Row>
                            <Row style="text-align: center;padding-bottom: 20px;">
                                <Col span="8" v-for="(item,index) in layerList" :key="index" class="col-item">
                                    <div class="num">{{item.circle}}</div>
                                    <div class="text">{{item.text}}</div>
                                </Col>
                            </Row>
                            <Spin fix style="background: rgba(0,0,0,0.5);font-size: 20px;" v-if="loading">
                                <Icon type="ios-loading" size=18 class="demo-spin-icon-load"></Icon>
                                <div>Loading</div>
                            </Spin>
                        </div>
                    </div>
                    <div ref="myEchart" style="width: 100%;height:100%;"></div>
                </div>

首先引入需要的echarts包

import echarts from "echarts/lib/echarts"   //echarts 
import "echarts/map/js/province/hubei.js";  //對應的省份 
import "echarts-gl" //3D地圖插件

配置echarts 參數(shù)

                 this.options =  {
                    series: [
                    {
                        type: 'map3D',           
                        name: '湖北', 
                        selectedMode:"single",//地圖高亮單選
                        boxDepth:90,//地圖傾斜度
                        regionHeight:8,//地圖高度
                        map: '湖北',
                        viewControl:{
                            distance:150,//地圖視角 控制初始大小
                            rotateSensitivity:0,//禁止旋轉(zhuǎn)
                            zoomSensitivity:0,//禁止縮放
                        },
                        label: {
                            show: true,//是否顯示市
                            textStyle:{
                                color:"#0a1640",//文字顏色
                                fontSize:12,//文字大小
                                backgroundColor:"rgba(0,0,0,0)",//透明度0清空文字背景 
                            }
                        },
                        itemStyle: {
                            color:"#81d0f1",//地圖顏色
                            borderWidth: 0.5,//分界線wdith    
                            borderColor: "#459bca",//分界線顏色  
                        },
                        emphasis:{
                            label:{
                                show: true,//是否顯示高亮
                                textStyle:{
                                    color: '#fff',//高亮文字顏色
                                }
                            },
                            itemStyle:{
                                color: '#0489d6',//地圖高亮顏色
                            }
                        },
                        //高亮市區(qū)  echarts  bug 不生效
                        data:[
                            {
                                name:"宜昌市",
                                itemStyle: {                // 單個區(qū)域的樣式設(shè)置
                                color: '#0489d6',
                                opacity: 1,
                                borderWidth: 0.4,
                                borderColor: '#0489d6'
                           },
                           label:{
                                 show: true,//是否顯示高亮
                                 textStyle:{
                                        color: '#fff',//高亮文字顏色
                                 }
                          },
                     }]
               }]
          }

實例化echarts

this.myChart = echarts.init(this.$refs.myEchart);
this.myChart.setOption(this.options);
//echarts自適應
window.onresize = this.myChart.resize;
let than = this ;
//綁定市區(qū)點擊事件
this.myChart.on("click",function(e){
                //防止重復點擊
        if(than.name == e.name){
            return false;
        }
                than.options.series[0].data[0].name = e.name;
                than.myChart.setOption(than.options);
        than.styles.left = (e.event.event.offsetX-132)+"px";//-132 根據(jù)布局計算偏移量
        than.styles.top = (e.event.event.offsetY+80)+"px";//80根據(jù)布局計算偏移量
        than.name = e.name;
        //請求后臺接口獲取對應數(shù)據(jù) ---此處模擬
        than.tabsChange(than.btn[0]);
})

防止內(nèi)存泄漏,vue鉤子函數(shù)beforeDestroy(組件生命周期--實例對象銷毀之前觸發(fā))

beforeDestroy() {
     if (!this.myChart) {
           return;
     }
     this.myChart.dispose();
     this.myChart = null;
 },

彈窗樣式

/*懶加載圖標動畫*/
.demo-spin-icon-load{
    animation: ani-demo-spin 1s linear infinite;
}
@keyframes ani-demo-spin {
    from { transform: rotate(0deg);}
    50%  { transform: rotate(180deg);}
    to   { transform: rotate(360deg);}
}
/*彈窗樣式*/
.layer{
    position: absolute;
    left: 400px;
    top: 300px;
    z-index: 100;
    width: 360px;
    height: 280px;
    background:rgba(10,22,64,0.9) ;
    border-radius: 5px;
    border: 1px solid #122253;
    transform: translate(-100%,-100%);
    .content{
        width: 100%;
        height: 100%;
        position: relative;
        text-align: center;
        p{
            font-size: 20px;
            color: #fff;
            line-height: 50px;
        }
        .col-item{
            height: 41px;
            margin-top: 20px;
            border-right: 1px solid #172353;
            .num{
                color: #ebf8ff;
                font-size: 18px;
            }
            .text{
                color: #507ebc;
                font-size: 12px;
            }
        }
    }
    .content::after{
        content: "";
        width: 120px;
        height: 2px;
        background: #FFCCFF;
        position: absolute;
        right: -120px;
        top: 50%;
        transform: translateY(-50%);
    }
    .content::before{
        content: "";
        width: 2px;
        height: 80px;
        background: #FFB800;
        position: absolute;
        right: -134px;
        top: 136px;
        transform:rotateZ(-20deg) ;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冻河,一起剝皮案震驚了整個濱河市原环,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌婚脱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勺像,死亡現(xiàn)場離奇詭異障贸,居然都是意外死亡,警方通過查閱死者的電腦和手機吟宦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門篮洁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人殃姓,你說我怎么就攤上這事袁波⊥卟” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵篷牌,是天一觀的道長睡蟋。 經(jīng)常有香客問我,道長枷颊,這世上最難降的妖魔是什么戳杀? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮偷卧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吆倦。我一直安慰自己听诸,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布蚕泽。 她就那樣靜靜地躺著晌梨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪须妻。 梳的紋絲不亂的頭發(fā)上仔蝌,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音荒吏,去河邊找鬼敛惊。 笑死,一個胖子當著我的面吹牛绰更,可吹牛的內(nèi)容都是我干的瞧挤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼儡湾,長吁一口氣:“原來是場噩夢啊……” “哼特恬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起徐钠,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤癌刽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后尝丐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體显拜,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年爹袁,在試婚紗的時候發(fā)現(xiàn)自己被綠了讼油。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡呢簸,死狀恐怖矮台,靈堂內(nèi)的尸體忽然破棺而出乏屯,到底是詐尸還是另有隱情,我是刑警寧澤瘦赫,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布辰晕,位于F島的核電站,受9級特大地震影響确虱,放射性物質(zhì)發(fā)生泄漏含友。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一校辩、第九天 我趴在偏房一處隱蔽的房頂上張望窘问。 院中可真熱鬧,春花似錦宜咒、人聲如沸惠赫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽儿咱。三九已至,卻和暖如春场晶,著一層夾襖步出監(jiān)牢的瞬間混埠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工诗轻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钳宪,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓扳炬,卻偏偏與公主長得像使套,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鞠柄,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354