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

Vue3+echarts繪制世界地圖的示例代碼

 更新時間:2024年03月25日 14:34:51   作者:諾坎普的風間  
最近做項目需要實現(xiàn)世界地圖,本文主要介紹了Vue3+echarts繪制世界地圖的示例代碼,具有一定的參考價值,感謝的可以了解一下

先放效果圖

 之前所查找的資料都沒有講清楚如何引入地圖文件并繪制地圖,下面做一個記錄。

首先下載對應的地圖json文件,這里可以參考我的這篇文章,提供了下載地址:

https://echarts.apache.org/examples/data/asset/geo/

第二步,在繪制地圖的vue組件中導入該json文件。解釋第三個import,world可以隨便改名字,在下面第三步注冊地圖的時候對應第二個world。

import {defineComponent, toRaw} from "vue";
import axios from "axios";
import world from "@/assets/json/world.json"

第三步,定義圖表并配置圖表。注意在注冊地圖的時候,第一個是地圖的名稱,第二個是在import的時候給json文件取的名字

// 定義圖表
        this.$echarts.registerMap('world', world)
        let map_off = this.$echarts.init(document.getElementById("world_map_off"), "football_customed");
// 配置圖表
        map_off.setOption(option)
        // 圖表響應式改變
        window.addEventListener('resize', function () {
          map_off.resize();

下面給出完整代碼(script),template部分只需要設置對應的圖表id即可

<script>
import {defineComponent, toRaw} from "vue";
import axios from "axios";
import world from "@/assets/json/world.json"

export default defineComponent({
  data() {
    return {
      num: [],
    }
  },

  methods: {

    competition() {
      // 獲取需要的數(shù)據(jù)
      let zhuchang_data = []
      let kechang_data = []

      axios.get("http://127.0.0.1:5000/competition").then(res => {
        // 獲取數(shù)據(jù)
        zhuchang_data = toRaw(res.data.zhuchang_data)
        kechang_data = toRaw(res.data.kechang_data)
        console.log(zhuchang_data)
        console.log(kechang_data)

        //  生成出線方法
        function formtGCData(geoData, data, srcNam, dest) {
          var tGeoDt = []
          if (dest) {
            for (var i = 0; i < data.length; i++) {
              if (srcNam !== data[i].name) {
                tGeoDt.push({
                  coords: [geoData[srcNam], geoData[data[i].name]]
                })
              }
            }
          } else {
            for (var j = 0; j < data.length; j++) {
              if (srcNam !== data[j].name) {
                tGeoDt.push({
                  coords: [geoData[data[j].name], geoData[srcNam]]
                })
              }
            }
          }
          return tGeoDt
        }

        //  生成進線方法
        function formtVData(geoData, data, srcNam) {
          var tGeoDt = []
          for (var i = 0; i < data.length; i++) {
            var tNam = data[i].name
            if (srcNam !== tNam) {
              tGeoDt.push({
                name: tNam,
                value: geoData[tNam]
              })
            }
          }
          tGeoDt.push({
            name: srcNam,
            value: geoData[srcNam],
            symbolSize: 8,
          })
          tGeoDt.forEach((item) => {
            if (item.name === 'china') {
              item.itemStyle = {
                color: 'red'
              }

            } else {
              item.itemStyle = {
                color: '#9E992F'
              }

            }
          })
          return tGeoDt
        }

        // 顯示點的坐標
        let geoCoordMap = {
          china: [117.3, 41.03],
          Botswana: [24.68, -22.33],
          Canada: [-110.895168, 60.2312],
          Brazil: [-50.895168, -10.2312],
        };
        // 所在點對應數(shù)據(jù),上面數(shù)據(jù)添加修改后務必這里添加修改,value可不用
        let data = [
          {
            id: 1,
            name: 'china',

          }, {
            id: 2,
            name: 'Botswana',
          }, {
            id: 3,
            name: 'Canada',
          }, {
            id: 4,
            name: 'Brazil',
          }]
        //箭頭類型 //''circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin',  'arrow', 'none''
        var planePath = 'arrow'
        // 定義圖表
        this.$echarts.registerMap('world', world)
        let world_map = this.$echarts.init(document.getElementById("world_map"), "football_customed");
        // 定義主場圖表的配置
        let option = {
          geo: {
            type: "map",
            map: 'world',
            zoom: 1.2,//地圖的縮放
            label: {
              emphasis: {
                show: true,
                color: '#fff'
              }
            },
            roam: true,//是否滾動縮放
            regions: [
              {
                name: 'China', //這個名字可以是map(世界地圖),China(中國地圖高亮)
                itemStyle: {
                  normal: {
                    areaColor: '#480103',
                    borderColor: '#ffc107',
                    borderWidth: 1,
                  },
                  emphasis: {
                    areaColor: '#b40106',
                  },
                },
              },
            ],
            itemStyle: {
              normal: {
                areaColor: '#690613',
                borderColor: 'rgba(255,255,255,0.6)',//國界線顏色
                borderType: 'dotted',//國界線類型
              },
              emphasis: {
                areaColor: '#ad9541'
              }
            },
          },
          series: [
            {
              type: 'lines',//飛線
              zlevel: 1,
              effect: {
                show: true,
                period: 6,
                trailLength: 0.1,
                color: '#fff',//箭頭顏色
                symbol: planePath,
                symbolSize: 8,
              },
              lineStyle: {
                normal: {
                  color: '#278FA2',//線的顏色
                  width: 1,
                  opacity: 0.4,
                  curveness: 0.2,
                  type: 'dotted',//'dotted'點型虛線 'solid'實線 'dashed'線性虛線
                },
                emphasis: {
                  type: 'dotted',
                  color: 'yellow',//線的顏色
                }

              },
              data: formtGCData(geoCoordMap, data, 'china', false)
            },
            {
              type: 'scatter',//圓點
              coordinateSystem: 'geo',
              zlevel: 10,
              symbolSize: 10,
              hoverAnimation: false,
              silent: true,
              data: formtVData(geoCoordMap, data, 'Brazil')
            },
          ]
        }
        // 配置圖表
        world_map.setOption(option)
        // 圖表響應式改變
        window.addEventListener('resize', function () {
          world_map.resize();
        });
      })

    },
    competition_off() {
      // 獲取需要的數(shù)據(jù)
      let zhuchang_data = []
      let kechang_data = []

      axios.get("http://127.0.0.1:5000/competition").then(res => {
        // 獲取數(shù)據(jù)
        zhuchang_data = toRaw(res.data.zhuchang_data)
        kechang_data = toRaw(res.data.kechang_data)

        //  生成出線方法
        function formtGCData(geoData, data, srcNam, dest) {
          var tGeoDt = []
          if (dest) {
            for (var i = 0; i < data.length; i++) {
              if (srcNam !== data[i].name) {
                tGeoDt.push({
                  coords: [geoData[srcNam], geoData[data[i].name]]
                })
              }
            }
          } else {
            for (var j = 0; j < data.length; j++) {
              if (srcNam !== data[j].name) {
                tGeoDt.push({
                  coords: [geoData[data[j].name], geoData[srcNam]]
                })
              }
            }
          }
          return tGeoDt
        }

        //  生成進線方法
        function formtVData(geoData, data, srcNam) {
          var tGeoDt = []
          for (var i = 0; i < data.length; i++) {
            var tNam = data[i].name
            if (srcNam !== tNam) {
              tGeoDt.push({
                name: tNam,
                value: geoData[tNam]
              })
            }
          }
          tGeoDt.push({
            name: srcNam,
            value: geoData[srcNam],
            symbolSize: 8,
          })
          tGeoDt.forEach((item) => {
            if (item.name === 'china') {
              item.itemStyle = {
                color: 'red'
              }

            } else {
              item.itemStyle = {
                color: '#9E992F'
              }

            }
          })
          return tGeoDt
        }

        // 顯示點的坐標
        let geoCoordMap = {
          china: [117.3, 41.03],
          Botswana: [24.68, -22.33],
          Canada: [-110.895168, 60.2312],
          Brazil: [-50.895168, -10.2312],
        };
        // 所在點對應數(shù)據(jù),上面數(shù)據(jù)添加修改后務必這里添加修改,value可不用
        let data = [
          {
            id: 1,
            name: 'china',

          }, {
            id: 2,
            name: 'Botswana',
          }, {
            id: 3,
            name: 'Canada',
          }, {
            id: 4,
            name: 'Brazil',
          }]
        //箭頭類型 //''circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin',  'arrow', 'none''
        var planePath = 'arrow'
        // 定義圖表
        this.$echarts.registerMap('world', world)
        let map_off = this.$echarts.init(document.getElementById("world_map_off"), "football_customed");
        // 定義主場圖表的配置
        let option = {
          geo: {
            type: "map",
            map: 'world',
            zoom: 1.2,//地圖的縮放
            label: {
              emphasis: {
                show: true,
                color: '#fff'
              }
            },
            roam: true,//是否滾動縮放
            regions: [
              {
                name: 'China', //這個名字可以是map(世界地圖),China(中國地圖高亮)
                itemStyle: {
                  normal: {
                    areaColor: '#480103',
                    borderColor: '#ffc107',
                    borderWidth: 1,
                  },
                  emphasis: {
                    areaColor: '#b40106',
                  },
                },
              },
            ],
            itemStyle: {
              normal: {
                areaColor: '#690613',
                borderColor: 'rgba(255,255,255,0.6)',//國界線顏色
                borderType: 'dotted',//國界線類型
              },
              emphasis: {
                areaColor: '#ad9541'
              }
            },
          },
          series: [
            {
              type: 'lines',//飛線
              zlevel: 1,
              effect: {
                show: true,
                period: 6,
                trailLength: 0.1,
                color: '#fff',//箭頭顏色
                symbol: planePath,
                symbolSize: 8,
              },
              lineStyle: {
                normal: {
                  color: '#278FA2',//線的顏色
                  width: 1,
                  opacity: 0.4,
                  curveness: 0.2,
                  type: 'dotted',//'dotted'點型虛線 'solid'實線 'dashed'線性虛線
                },
                emphasis: {
                  type: 'dotted',
                  color: 'yellow',//線的顏色
                }

              },
              data: formtGCData(geoCoordMap, data, 'china', false)
            },
            {
              type: 'scatter',//圓點
              coordinateSystem: 'geo',
              zlevel: 10,
              symbolSize: 10,
              hoverAnimation: false,
              silent: true,
              data: formtVData(geoCoordMap, data, 'Brazil')
            },
          ]
        }
        // 配置圖表
        map_off.setOption(option)
        // 圖表響應式改變
        window.addEventListener('resize', function () {
          map_off.resize();
        });
      })

    },


  },

  mounted() {
    this.competition()
    this.competition_off()
  },
})

</script>

核心步驟:下載對應的地圖文件;在script中導入json文件;echarts注冊地圖。

到此這篇關于Vue3+echarts繪制世界地圖的示例代碼的文章就介紹到這了,更多相關Vue3 echarts繪制世界地圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • antd?select?多選限制個數(shù)的實現(xiàn)代碼

    antd?select?多選限制個數(shù)的實現(xiàn)代碼

    這篇文章主要介紹了antd?select?多選限制個數(shù),實現(xiàn)思路和核心代碼都很簡單,其中核心代碼在于disabled,代碼簡單易懂需要的朋友可以參考下
    2022-11-11
  • 基于Vue2.0和Typescript實現(xiàn)多主題切換的示例

    基于Vue2.0和Typescript實現(xiàn)多主題切換的示例

    本文主要介紹了基于Vue2.0和Typescript實現(xiàn)多主題切換的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • vue使用csp的簡單示例

    vue使用csp的簡單示例

    Vue是一套用于構建用戶界面的漸進式框架,與其它大型框架不同的是,Vue被設計為可以自底向上逐層應用,下面這篇文章主要給大家介紹了關于vue使用csp的相關資料,需要的朋友可以參考下
    2022-08-08
  • vue?路由切換過渡動效滑入滑出效果的實例代碼

    vue?路由切換過渡動效滑入滑出效果的實例代碼

    在支付寶賬單頁面有這樣一個特效切換過渡動效滑入滑出效果,非常方便實用,那么這個功能如何實現(xiàn)的呢?下面小編通過vue實現(xiàn)路由切換過渡動效滑入滑出效果,感興趣的朋友一起看看吧
    2022-03-03
  • Vue3使用element-plus組件不顯示問題

    Vue3使用element-plus組件不顯示問題

    這篇文章主要介紹了Vue3使用element-plus組件不顯示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue中通過iframe方式加載本地的vue頁面的解決方法

    vue中通過iframe方式加載本地的vue頁面的解決方法

    這篇文章主要給大家介紹了在vue中如何通過iframe方式加載本地的vue頁面的解決方法,文中有詳細的解決流程,需要的朋友可以參考下
    2023-06-06
  • vue2.0+SVG實現(xiàn)音樂播放圓形進度條組件

    vue2.0+SVG實現(xiàn)音樂播放圓形進度條組件

    這篇文章主要為大家詳細介紹了Vue2.0+SVG實現(xiàn)音樂播放圓形進度條組件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • vue表單驗證之禁止input輸入框輸入空格

    vue表單驗證之禁止input輸入框輸入空格

    這篇文章主要介紹了vue表單驗證之禁止input輸入框輸入空格,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • vue將后臺數(shù)據(jù)時間戳轉換成日期格式

    vue將后臺數(shù)據(jù)時間戳轉換成日期格式

    這篇文章主要為大家詳細介紹了vue將后臺數(shù)據(jù)時間戳轉換成日期格式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 在小程序/mpvue中使用flyio發(fā)起網(wǎng)絡請求的方法

    在小程序/mpvue中使用flyio發(fā)起網(wǎng)絡請求的方法

    這篇文章主要介紹了在小程序/mpvue中使用flyio發(fā)起網(wǎng)絡請求的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論