最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue2?使用echarts實現(xiàn)地圖點擊進入下一層級+點擊空白處回退功能

 更新時間:2024年05月16日 09:11:30   作者:sunshine233  
這篇文章主要介紹了vue2?使用echarts實現(xiàn)地圖點擊進入下一層級+點擊空白處回退,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

先驗知識:

vue2中echarts的安裝和顯示中國地圖:http://m.fzitv.net/javascript/321196ahi.htm

鼠標(biāo)事件: https://echarts.apache.org/zh/api.html#echartsInstance.on

echarts.getMap():https://echarts.apache.org/zh/api.html#echarts.getMap

監(jiān)聽“空白處”的事件:https://echarts.apache.org/handbook/zh/concepts/event/#%E7%9B%91%E5%90%AC%E2%80%9C%E7%A9%BA%E7%99%BD%E5%A4%84%E2%80%9D%E7%9A%84%E4%BA%8B%E4%BB%B6

npm 安裝 echarts4.9(全局引入不支持5.0)

運行效果(只做了河南的點擊和后退):

實現(xiàn)思路:

1. 引入地圖并顯示

// 1. 基于準(zhǔn)備好的dom,初始化echarts實例
this.myChart = this.$echarts.init(this.$refs.myChart);
// 2. 引入要顯示的地圖 json 文件(json文件可以是echart自帶的,也可以是自己下載的)
this.mapJson = require("echarts/map/json/china.json");
// 3. 注冊可用的地圖 registerMap("自定義的名字,要和option中map:''對應(yīng)",注冊的地圖指向的json文件)
this.$echarts.registerMap("mapJson", this.mapJson);
// 4. 指定圖表的配置項和數(shù)據(jù)
this.option = {
    geo: {
        type: "map",
        map: "mapJson",//這里的數(shù)據(jù)會變,"這里是引入的存儲json文件的變量名"
        label: {
            normal: {
                color: "#000000",
                show: true, //顯示省份名稱
            },
        },
    },
    series: [
        {
            name: "在地圖中顯示散點圖",
            type: "scatter",
            coordinateSystem: "geo", //設(shè)置坐標(biāo)系為 geo
            data: [
                //這里放標(biāo)注點的坐標(biāo)[{name: "北京",value: [116.46, 39.92]}]
            ],
        },
    ],
};
// 5. 設(shè)置圖表實例的配置項以及數(shù)據(jù),萬能接口,所有參數(shù)和數(shù)據(jù)的修改都可以通過 setOption 完成,ECharts 會合并新的參數(shù)和數(shù)據(jù),然后刷新圖表。
this.myChart.setOption(this.option);

2. 地圖顯示的是“中國”還是“省”還是“市區(qū)”主要就是靠引入的json文件區(qū)分,
也就是  this.mapJson = require("echarts/map/json/china.json");  的mapJson,
然后   this.$echarts.registerMap("mapJson", this.mapJson); 注冊一下修改后的文件,
 this.myChart.setOption(this.option);  地圖即可重新顯示新的地區(qū)。

3. 怎么確定  this.mapJson  引入的哪個文件呢? 添加地圖的監(jiān)聽事件后,可以獲取一個code值,用這個code值判斷應(yīng)該引入哪個省市的文件。點擊空白處回退同理,只需要確定應(yīng)該回退層級的code值,就可以由此判斷應(yīng)該回退到哪個層級頁面了。

全部代碼如下:

<template>
    <div id="app">
        <div id="myChart" ref="myChart"></div>
        <el-button type="success" @click="cancelEchartsEvent">點擊取消on事件</el-button>
    </div>
</template>
<script>
export default {
    data() {
        return {
            myChart: null,
            mapJson: null,
            option: {},
            curArea: {
                code: -1,
                name: ""
            },
        };
    },
    mounted() {
        this.initEchartParams();
        this.addMouseClick();//開啟 echarts 事件監(jiān)聽
    },
    beforeDestroy() {
        this.cancelEchartsEvent();
    },
    methods: {
        cancelEchartsEvent() {
            console.log("頁面卸載前,取消 echarts 的事件監(jiān)聽");
            this.myChart.off("click");
        },
        initEchartParams() {
            // 1. 基于準(zhǔn)備好的dom,初始化echarts實例
            this.myChart = this.$echarts.init(this.$refs.myChart);
            // 2. 引入要顯示的地圖 json 文件(json文件可以是echart自帶的,也可以是自己下載的)
            this.mapJson = require("echarts/map/json/china.json");
            // 3. 注冊可用的地圖 registerMap("自定義的名字,要和option中map:''對應(yīng)",注冊的地圖指向的json文件)
            this.$echarts.registerMap("mapJson", this.mapJson);
            // 4. 指定圖表的配置項和數(shù)據(jù)
            this.option = {
                geo: {
                    type: "map",
                    map: "mapJson",//這里的數(shù)據(jù)會變,"這里是引入的存儲json文件的變量名"
                    label: {
                        normal: {
                            color: "#000000",
                            show: true, //顯示省份名稱
                        },
                    },
                },
                series: [
                    {
                        name: "在地圖中顯示散點圖",
                        type: "scatter",
                        coordinateSystem: "geo", //設(shè)置坐標(biāo)系為 geo
                        data: [
                            //這里放標(biāo)注點的坐標(biāo)[{name: "北京",value: [116.46, 39.92]}]
                            { name: "鄭州", value: [113.665412, 34.757975] },
                            { name: "北京", value: [116.41995, 40.18994] },
                            { name: "天津", value: [117.205126, 39.034933] },
                            { name: "昆明", value: [102.81844, 24.906231] },
                            { name: "廣州", value: [113.26453, 23.155008] },
                        ],
                    },
                ],
            };
            // 5. 設(shè)置圖表實例的配置項以及數(shù)據(jù),萬能接口,所有參數(shù)和數(shù)據(jù)的修改都可以通過 setOption 完成,ECharts 會合并新的參數(shù)和數(shù)據(jù),然后刷新圖表。
            this.myChart.setOption(this.option);
        },
        addMouseClick() {
            this.addClickInMap();
            this.addClickInBlank();
        },
        // 點擊了地圖非空白處
        addClickInMap() {
            // echarts.getMap 獲取已注冊的地圖
            const maps = this.$echarts.getMap("mapJson").geoJson.features;
            console.log({ maps });
            this.myChart.on("click", (res) => {
                let clickArea = maps.find(map => map.properties.name == res.name);
                // console.log({ clickArea });
                if (!clickArea) {
                    // 如果點的不是地圖,而是地圖上的散點,什么也不做
                    return;
                }
                this.curArea.code = clickArea.id;
                this.curArea.name = res.name;
                console.log("當(dāng)前點擊的是: " + this.curArea.name + " this.curArea.code:" + this.curArea.code);
                // 修改 mapJson 的數(shù)值
                this.configGeoMap(this.curArea.code);
            });
        },
        // 點擊了地圖空白處
        addClickInBlank() {
            this.myChart.getZr().on('click', (event) => {
                // !event.target 不存在 證明點擊的地方是地圖空白處
                if (!event.target) {
                    let preCode = -1;
                    const curAreaCode = this.curArea.code;
                    console.log("回退前地區(qū)code ", curAreaCode);
                    if (curAreaCode == "100000") {//當(dāng)前在中國,不回退
                        console.log("當(dāng)前地圖已經(jīng)是 china, 不可回退!");
                        return;
                    } else if (curAreaCode % 10000 == 0) {//說明當(dāng)前在省,回退到 china
                        preCode = 100000;
                    } else if (curAreaCode % 100 == 0) {////說明當(dāng)前在 鄭州市,回退到 河南省
                        preCode = curAreaCode - curAreaCode % 10000;
                    } else {
                        preCode = curAreaCode - curAreaCode % 100; //回退到city
                    }
                    // 回退后,當(dāng)前顯示地圖的code就是preCode
                    this.curArea.code = preCode;
                    console.log('點擊了空白處,回退后地區(qū) code:' + preCode);
                    this.configGeoMap(preCode);
                }
            });
        },
        // 修改 mapJson 的數(shù)值
        configGeoMap(code) {
            // 這里要根據(jù)code值找到對應(yīng)的json文件,如果是從服務(wù)器獲取,也是找到對應(yīng)的json文件即可
            // 這里我用的是 用npm安裝echarts@4.9.0 時自動下載的文件 
            if (code == "100000") {
                this.mapJson = require("echarts/map/json/china.json");
            } else if (code == "410000") {
                this.mapJson = require("echarts/map/json/province/henan.json");
            } else {
                console.log('除了河南外,其它地區(qū)暫時不能跳轉(zhuǎn)');
            }
            this.$echarts.registerMap("mapJson", this.mapJson);
            this.myChart.setOption(this.option);
        }
    }
}
</script>
<style scoped>
#myChart {
    width: 100%;
    height: 500px;
    background-color: #f1f3f4;
}
button {
    margin: 20px;
}
</style>

到此這篇關(guān)于vue2 使用echarts實現(xiàn)地圖點擊進入下一層級+點擊空白處回退功能的文章就介紹到這了,更多相關(guān)vue2  echarts地圖點擊進入下一層級內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例

    vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例

    這篇文章主要給大家介紹了關(guān)于vue3.0中使用Element-Plus中Select下的filter-method屬性的相關(guān)資料,Filter-method用法是指從一組數(shù)據(jù)中選擇滿足條件的項,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 解決vue運行報錯Error:Cannot?find?module?'@vue/cli-plugin-babel'

    解決vue運行報錯Error:Cannot?find?module?'@vue/cli-plugin-b

    解決了因為版本問題在創(chuàng)建項目時出現(xiàn)的各種報錯問題,這次在運行時出現(xiàn)的問題,下面這篇文章主要給大家介紹了關(guān)于解決vue運行報錯Error:Cannot?find?module?'@vue/cli-plugin-babel'的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Vue.js展示AJAX數(shù)據(jù)簡單示例講解

    Vue.js展示AJAX數(shù)據(jù)簡單示例講解

    當(dāng)通過AJAX方式取回數(shù)據(jù)后,使用vue.js可以完美地按一定邏輯在頁面上的展示數(shù)據(jù),代碼簡單、優(yōu)美、自然,而且便于與在用的頁面框架集成,本文給大家介紹Vue.js展示AJAX數(shù)據(jù)簡單示例
    2017-03-03
  • Vue項目的網(wǎng)絡(luò)請求代理到封裝步驟詳解

    Vue項目的網(wǎng)絡(luò)請求代理到封裝步驟詳解

    這篇文章主要介紹了Vue項目的網(wǎng)絡(luò)請求代理到封裝步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • vue基礎(chǔ)ESLint?Prettier配置教程詳解

    vue基礎(chǔ)ESLint?Prettier配置教程詳解

    這篇文章主要介紹了vue基礎(chǔ)ESLint?Prettier配置教程詳解,本文使用VsCode?+?Vue?+?ESLint?+?Prettier?實現(xiàn)代碼格式規(guī)范?+?保存自動修復(fù)代碼js+vue
    2022-07-07
  • vue中SPA單頁面應(yīng)用程序詳解

    vue中SPA單頁面應(yīng)用程序詳解

    這篇文章主要為大家詳細(xì)介紹了vue中SPA單頁面應(yīng)用程序的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Vue3集成Vue Router從基礎(chǔ)配置到項目實踐的完整指南

    Vue3集成Vue Router從基礎(chǔ)配置到項目實踐的完整指南

    如何在項目中實現(xiàn)頁面切換,而不用每次都重新加載整個頁面?答案就是 Vue Router,這篇就來聊聊 Vue Router 4.x 在 Vue 3 中的集成與使用,需要的朋友可以參考下
    2026-05-05
  • vue使用el-select下拉框匹配不到值的問題及解決

    vue使用el-select下拉框匹配不到值的問題及解決

    這篇文章主要介紹了vue使用el-select下拉框匹配不到值的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 淺談vue引用靜態(tài)資源需要注意的事項

    淺談vue引用靜態(tài)資源需要注意的事項

    今天小編就為大家分享一篇淺談vue引用靜態(tài)資源需要注意的事項,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解vue如何獲取當(dāng)前系統(tǒng)時間

    詳解vue如何獲取當(dāng)前系統(tǒng)時間

    這篇文章主要詳細(xì)介紹了vue如何獲取當(dāng)前系統(tǒng)時間,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01

最新評論

平谷区| 青神县| 古交市| 南昌县| 太白县| 高陵县| 秭归县| 绩溪县| 连山| 札达县| 中西区| 太仆寺旗| 慈溪市| 邵东县| 海兴县| 丰台区| 手机| 武宁县| 永清县| 卓尼县| 阿城市| 广宁县| 抚远县| 通城县| 色达县| 灵璧县| 资阳市| 麟游县| 石台县| 南木林县| 临汾市| 府谷县| 大方县| 普兰店市| 北宁市| 万源市| 台东县| 同江市| 南阳市| 巍山| 淮阳县|