vue3 echarts散點圖省份地圖標(biāo)注-四川省地圖城市動態(tài)標(biāo)注散點圖

echarts集成省份地圖(散點圖)通過echarts geoJson方式锦庸,以四川省地圖標(biāo)注城市散點為例

先看效果

2023-07-19 15.16.30.gif

cd-jietu1.png

概述

使用echarts vue3+ts封裝地圖組件,根據(jù)城市地理繪制繪制散點圖
echarts繪制地圖需要使用geoJson數(shù)據(jù)DataV.GeoAtlas地理小工具系列
具體截圖如下:

ditu-02.png

vue3代碼實現(xiàn)如下

代碼例子使用vue3 + ts + setup語法

  1. 安裝echarts依賴包希俩;
    npm install echarts --save
  2. 引入echarts并獲取四川省geoJson數(shù)據(jù)
import * as echarts from 'echarts'; //引入echarts
import sichuanJson from "./sichuan.json"; //引入四川省geoJson數(shù)據(jù)(也可通過服務(wù)器接口獲取)
echarts.registerMap('sichuan', sichuanJson as any); //注冊繪制四川省地圖
  1. 實例化echarts對象
const chartRef = ref<echarts.ECharts>() //定義ref
onMounted(() => {
    chartRef.value = echarts.init(document.getElementById(props.id) as HTMLElement);//實力化對象
    chartRef.value?.setOption(option);
})
  1. 配置option
let option = {
    width: '833px',
    height: '523px',
    tooltip: {
        tooltip: {
            trigger: 'item',
            showDelay: 0,
            hideDelay: 0,
            enterable: true, //鼠標(biāo)是否可進入提示框浮層中,默認為false嗜逻,如需詳情內(nèi)交互,如添加鏈接扯罐,按鈕陆赋,可設(shè)置為 true
            transitionDuration: 0, //提示框浮層的移動動畫過渡時間,單位是 s鸠信,設(shè)置為 0 的時候會緊跟著鼠標(biāo)移動
            extraCssText: "z-index:100;", //修改標(biāo)簽大小樣式等
        },
    }, 
    geo:
    {
        map: 'sichuan',
        type: 'map',
        roam: false,
        label: {
            show: true,
            textStyle: {
                color: '#fff',
                fontSize: 12,
            }
        },
        tooltip: { //設(shè)置鼠標(biāo)移至城市板塊選中視圖配置選項
            backgroundColor: ' rgba(3,21,42,0.80)', //設(shè)置地圖高亮?xí)r城市視圖背景色框
            borderRadius: 0,
            trigger: 'item',
            formatter: (params: any) => {
                return `<div class="map-charts-bar">
                              <span class="text">${params.name}</span>
                        </div>`
            }
        },
        itemStyle: { //設(shè)置地圖板塊配置選項
            areaColor: '#083D7E',
            normal: {
                // 圖形的描邊顏色
                borderColor: '#55aaff',
                // 描邊線寬纵寝。
                borderWidth: 1,
                // 柱條的描邊類型。
                borderType: 'solid',
                areaColor: '#083D7E',
                label: {
                    // 顯示省份下面市星立、州的名稱
                    show: true,
                    textStyle: {
                        color: '#fff',
                        fontSize: 12,
                        fontWeight: 400
                    }
                }
            },
            // 鼠標(biāo)放上去后爽茴,樣式改變
            emphasis: {
                // 圖形的描邊顏色
                borderColor: '#1DF9FC',
                borderWidth: '2',
                // 陰影色
                areaColor: '#3099E2',
                label: {
                    show: true,
                    textStyle: {
                        color: '#fff',
                        fontSize: 10,
                    },
                }
            },
        },
    },
    series:series
} as echarts.EChartsOption;
  1. 配置series
    這里的series項根據(jù)散點需要多少個顏色標(biāo)注樣式配置數(shù)據(jù)源,我的例子中使用了三個散點標(biāo)注顏色所以寫了三個配置對象
const series = [
        {
            tooltip: {
                backgroundColor: '',//這里設(shè)置鼠標(biāo)移至城市板塊后提示視圖透明 
                borderWidth: 0,
                tooltip: {
                    trigger: 'item',
                    showDelay: 0,
                    hideDelay: 0,
                    enterable: true, //鼠標(biāo)是否可進入提示框浮層中,默認為false绰垂,如需詳情內(nèi)交互室奏,如添加鏈接,按鈕劲装,可設(shè)置為 true
                    transitionDuration: 0, //提示框浮層的移動動畫過渡時間胧沫,單位是 s,設(shè)置為 0 的時候會緊跟著鼠標(biāo)移動
                    extraCssText: "z-index:999;", //修改標(biāo)簽大小樣式等

                },
                formatter: (params: { data: CityInfo }) => {
                    return mapFormatter(params)
                }
            },
            type: "effectScatter", //effectScatter 特效散點圖
            coordinateSystem: "geo",
            rippleEffect: {
                period: 4, //動畫時間占业,值越小速度越快
                brushType: "stroke", //波紋繪制方式 stroke, fill
                scale: 4, //波紋圓環(huán)最大限制绒怨,值越大波紋越大 4
            },
            itemStyle: {
                color: '#1DF9FC'
            },
            data: []
        },
        {
            tooltip: {
                backgroundColor: '',
                borderWidth: 0,
                tooltip: {
                    trigger: 'item',
                    showDelay: 0,
                    hideDelay: 0,
                    enterable: true, //鼠標(biāo)是否可進入提示框浮層中,默認為false谦疾,如需詳情內(nèi)交互南蹂,如添加鏈接,按鈕念恍,可設(shè)置為 true
                    transitionDuration: 0, //提示框浮層的移動動畫過渡時間六剥,單位是 s晚顷,設(shè)置為 0 的時候會緊跟著鼠標(biāo)移動
                    extraCssText: "z-index:999;", //修改標(biāo)簽大小樣式等

                },
                formatter: (params: { data: CityInfo }) => { 
                    return mapFormatter(params)
                }
            },
            type: "effectScatter", //effectScatter 特效散點圖
            coordinateSystem: "geo",
            rippleEffect: {
                period: 4, //動畫時間,值越小速度越快
                brushType: "stroke", //波紋繪制方式 stroke, fill
                scale: 4, //波紋圓環(huán)最大限制仗考,值越大波紋越大 4
            },
            itemStyle: {
                color: '#F8D44F'
            },
            data: []
        },
        {
            tooltip: {
                backgroundColor: '',
                borderWidth: 0,
                tooltip: {
                    trigger: 'item',
                    showDelay: 0,
                    hideDelay: 0,
                    enterable: true, //鼠標(biāo)是否可進入提示框浮層中音同,默認為false,如需詳情內(nèi)交互秃嗜,如添加鏈接权均,按鈕,可設(shè)置為 true
                    transitionDuration: 0, //提示框浮層的移動動畫過渡時間锅锨,單位是 s叽赊,設(shè)置為 0 的時候會緊跟著鼠標(biāo)移動
                    extraCssText: "z-index:999;", //將散點等級提高也可修改樣式等

                },
                formatter: (params: { data: CityInfo }) => {
                    return mapFormatter(params)
                }
            },
            type: "effectScatter", //effectScatter 特效散點圖
            coordinateSystem: "geo",
            rippleEffect: {
                period: 4, //動畫時間,值越小速度越快
                brushType: "stroke", //波紋繪制方式 stroke, fill
                scale: 4, //波紋圓環(huán)最大限制必搞,值越大波紋越大 4
            },
            itemStyle: {
                color: '#FF4138'
            },
            data: []
        }
    ]
  1. 通過props傳入城市散點標(biāo)注信息繪制對應(yīng)ui
const props = defineProps<{
    id: string, //組件地圖id
    list: CityInfo[][] //城市散點圖列表數(shù)據(jù)
}>()

watch(() => props.list, () => {
    (option.series as echarts.SeriesOption[])[0].data = props.list[1];
    (option.series as echarts.SeriesOption[])[1].data = props.list[2];
    (option.series as echarts.SeriesOption[])[2].data = props.list[3];
    chartRef.value?.setOption(option);
})

//最后需要的地方組件中引入并傳入城市散點數(shù)據(jù)源使用
 <ExamMap id="sichuan" :list="cityList"></ExamMap>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末必指,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子恕洲,更是在濱河造成了極大的恐慌塔橡,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霜第,死亡現(xiàn)場離奇詭異葛家,居然都是意外死亡,警方通過查閱死者的電腦和手機泌类,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門癞谒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刃榨,你說我怎么就攤上這事弹砚。” “怎么了枢希?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵桌吃,是天一觀的道長。 經(jīng)常有香客問我苞轿,道長读存,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任呕屎,我火速辦了婚禮让簿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秀睛。我一直安慰自己尔当,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著椭迎,像睡著了一般锐帜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畜号,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天缴阎,我揣著相機與錄音,去河邊找鬼简软。 笑死蛮拔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痹升。 我是一名探鬼主播建炫,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疼蛾!你這毒婦竟也來了肛跌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤察郁,失蹤者是張志新(化名)和其女友劉穎衍慎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皮钠,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡西饵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳞芙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡期虾,死狀恐怖原朝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镶苞,我是刑警寧澤喳坠,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站茂蚓,受9級特大地震影響壕鹉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜聋涨,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一晾浴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牍白,春花似錦脊凰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽切省。三九已至,卻和暖如春帕胆,著一層夾襖步出監(jiān)牢的瞬間朝捆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工懒豹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芙盘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓歼捐,卻偏偏與公主長得像何陆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子豹储,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容