• vue引入echarts地图的三种方式


    一、vue中引入echart

    1、安装echarts: npm install echarts --save

    2、在main.js文件中引入echarts实例:   Vue.prototype.$echarts = echarts

    3、在需要用到echart图形的vue文件中引入:   import echarts from "echarts";

    4、如果用到map(地图),还需要导入地图对应的的JS文件:

      import '../../../node_modules/echarts/map/js/province/yunnan.js'
      import '../../../node_modules/echarts/map/js/province/fujian.js'

    5、map(地图)对应的资源文件有两种,一种是导入JS文件,一种是读取JSON文件,在vue项目中,map对应的资源文件存在于node_moudles中的echarts文件夹,当然在vue中可以通过http请求去读取地图对应的JSON文件,但是要求JSON文件必须在static文件中,不然http请求失败。


    二、项目的目录结构:


    三、引入echarts的四种方式:

    <template>
      <div>
        <div class="echarts">
          <div class="box" ref="WorldEchart"></div>
          <div class="box" ref="ChinaEchart"></div>
           <div class="box" ref="YunnanEChart"></div>
          <div class="box" ref="GuangXiEChart"></div>
    
        </div>
      </div>
    </template>
    <script>
      import echarts from "echarts";
      import '../../../node_modules/echarts/map/js/province/yunnan.js'
      import '../../../node_modules/echarts/map/js/province/fujian.js' 
      export default {
        data() {
          return {
            world: require('../../../node_modules/echarts/map/json/world.json'), //地图json数据
          }
        },
        mounted() {
          this.ByRequired(this.world); //通过require读取json文件
          this.ByStaticJson();//通过post请求方式读取json文件,但要求json文件必须在vue工程下的static文件夹
          this.ByGeoRegister();//通过geo设置地图属性再注册到echart实例中
          this.ByMapName();//通过直接设置 map: "地图名称", 这里需要注意世界地图和全国地图需要用world和china单词,各个
                   省会用中文,直接使用地图名称必须保证已经引入地图对应的js文件,即 import '../../**/.js(推荐使用这种)
    },
        beforeDestroy() {
          if (!this.chart) {
            return;
          }
          this.chart.dispose(); //销毁echart实例
          this.chart = null;
        },
        methods: {
          ByRequired(world){
                      this.$nextTick(()=>{
                        var myChart = this.$echarts.init(this.$refs.WorldEchart);
                        echarts.registerMap('dalian', world,{});
                        myChart.setOption({
    
                          series: [{
                              name:'大连市',
                              label: {
                                  normal: {
                                      show: true,
                                  },
                                  emphasis: {
                                      show: true
                                  }
                              },
                              itemStyle: {
                                  color: '#ddb926'
                              },
                              type: 'map',
                              zoom: 1,//缩放比例能控制echart图形在dom中的大小
                              roam: true,
                              mapType: 'dalian',
                              emphasis: {
                                  label: {
                                      show: true
                                  }
                              },
                              // 文本位置修正
                              textFixed: {
                                  Alaska: [20-20]
                              },
                              data: [{
                                       name: '瓦房店市',
                                       value: 4822023
                                   },
                                   {
                                       name: '普兰店市',
                                       value: 731449
                                   },
                                   {
                                       name: '庄河市',
                                       value: 6553255
                                   },
                                   {
                                       name: '金州区',
                                       value: 949131
                                   },
                                   {
                                       name: '长海县',
                                       value: 8041430
                                   },
                                   {
                                       name: '甘井子区',
                                       value: 5187582
                                   },
                                   {
                                       name: '沙河口区',
                                       value: 3590347
                                   },
                                   {
                                       name: '西岗区',
                                       value: 917092
                                   },
                                   {
                                       name: '中山区',
                                       value: 632323
                                   },
                                   {
                                       name: '旅顺口区',
                                       value: 9317568
                                   }
                               ]
                          }],
                          //右下角数值条
                          visualMap: {
                              left: 'right',
                              min: 1,
                              max: 100,
                              inRange: {
                                  color: ['#313695''#4575b4''#74add1''#abd9e9''#e0f3f8''#ffffbf''#fee090''#fdae61''#f46d43''#d73027''#a50026']
                              },
                             //text: ['High', 'Low'], // 文本,默认为数值文本
                              calculable: true
                          },
                          tooltip: {
                              trigger: 'item',
                              showDelay: 0,
                              transitionDuration: 0.2,
                              formatter: function(params) {
                                  var value = (params.value + '').split('.');
                                  value = value[0].replace(/(d{1,3})(?=(?:d{3})+(?!d))/g, '$1,');
                                  return params.seriesName + '<br/>' + params.name + '' + value;
                              }
                          },
                      });
                 })
      },
          ByStaticJson() {
            let myChartbyjson = echarts.init(this.$refs.ChinaEchart); //这里是为了获得容器所在位置
            var mapJsonPath = "/static/china.json"; //json文件的相对路径
            $.get(mapJsonPath, function(mapJson) {
              echarts.registerMap("china", mapJson); // 注册地图
              let option = {
                zoom:2,
                series: [{
                  name: this.selCity,
                  itemStyle:{
                              normal:{
                                  label:{
                                      show:true,
                                       textStyle: {
                                                      color: "#231816"
                                                  }
                                              },
                                              areaStyle:{color:'#B1D0EC'},
                                              color:'#ff0000',
                                              borderColor:'#dadfde'//区块的边框颜色
                                          },
                                          emphasis:{//鼠标hover样式
                                              label:{
                                                  show:true,
                                                  textStyle:{
                                                      color:'#fa4f04'
                                                  }
                                              }
                                          }
                                      },
                  type: "map",
                  mapType: "china", // 自定义扩展图表类型
                  label: {
                    show: true,
                  },
                }, ],
              };
              myChartbyjson.setOption(option);
              myChartbyjson.on('click', function (param) {
                       alert(param.name);
                      //遍历取到provincesText 中的下标  去拿到对应的省js
                      for(var  i= 0 ; i < provincesText.length ; i++ ){
                          if(param.name == provincesText[i]){
                              //显示对应省份的方法
                              // showProvince(provinces[i]) ;
                              showProvince(provinces[i],provincesText[i])
                              break ;
                          }
                      }
                  });
            });
          },
          ByGeoRegister() {
            let myChart = echarts.init(this.$refs.YunnanEChart); //这里是为了获得容器所在位置
            window.onresize = myChart.resize;
            myChart.setOption({ // 进行相关配置
              backgroundColor: "#02AFDB",
              tooltip: {}, // 鼠标移到图里面的浮动提示框
              dataRange: {
                show: false,
                min: 0,
                max: 1000,
                text: ['High', 'Low'],
                realtime: true,
                calculable: true,
                color: ['orangered', 'yellow', 'lightskyblue']
              },
              geo: { // 这个是重点配置区
                map: '云南', // 表示中国地图
                roam: true,
                label: {
                  normal: {
                    show: true, // 是否显示对应地名
                    textStyle: {
                      color: 'rgba(0,0,0,0.4)'
                    }
                  }
                },
                itemStyle: {
                  normal: {
                    borderColor: 'rgba(0, 0, 0, 0.2)'
                  },
                  emphasis: {
                    areaColor: null,
                    shadowOffsetX: 0,
                    shadowOffsetY: 0,
                    shadowBlur: 20,
                    borderWidth: 0,
                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                  }
                }
              },
              series: [{
                  type: 'scatter',
                  coordinateSystem: 'geo' // 对应上方配置
                  },
                {
                  name: '启动次数', // 浮动框的标题
                  type: 'map',
                  geoIndex: 0,
                  data: [{
                    "name": "北京",
                    "value": 599
                  }, {
                    "name": "上海",
                    "value": 142
                  }, {
                    "name": "黑龙江",
                    "value": 44
                  }, {
                    "name": "深圳",
                    "value": 92
                  }, {
                    "name": "湖北",
                    "value": 810
                  }, {
                    "name": "四川",
                    "value": 453
                  }]
                }
              ]
            })
          },
          ByMapName() {
            let that = this;
            this.mychart = this.$echarts.init(this.$refs.GuangXiEChart);
            // 绘制图表
            this.mychart.setOption({
              backgroundColor: "#404a59",
              zoom:2,
              title: {
                text: "福建",
                top: 25,
                left: "center",
                textStyle: {
                  fontSize: 25,
                  fontWeight: 650,
                  color: "#fff",
                },
              },
    
              tooltip: {
                trigger: "item",
                formatter: function(val) {
                  return "<br>人数: " + 1 + "";
                },
              },
              toolbox: {
                show: true,
                orient: "vertical",
                left: "right",
                top: "center",
                feature: {
                  dataView: {
                    readOnly: false
                  },
                  restore: {},
                  saveAsImage: {},
                },
              },
              series: [{
                type: "map",
                map: "福建", //这里需要注意呀,
                //mapType: "浙江",
                // 是否开启鼠标缩放和平移漫游 默认不开启
                itemStyle: {
                  normal: {
                    areaColor: "#323c48",
                    borderColor: "#111",
                  },
                  emphasis: {
                    areaColor: "#2a333d",
                    label: {
                      show: true,
                      color: "white",
                    },
                  },
                },
                roam: true,
                top: 70,
                label: {
                  show: true, // 是否显示对应地名
                },
                data: this.cityDatas,
              }, ],
            });
            this.mychart.on("click", function(params) { //地图添加点击事件,当点击区域块的时候,params.name能够取到区域的名称:云南,北京...
              alert(params.data.code);
              console.log(JSON.stringify(params));
            });
          }
        }
      }
    </script>
    <style>
      .echarts{
        position:absolute;
        top:0;
        left:0;
        width: 100%;
        height:100%;
      }
    .box{
        width: 50%;
        height: 50%;
        float:left;
        line-height: inherit;
      }
    
    </style>

    四、界面渲染效果:

  • 相关阅读:
    Python获取当前 年 月 日
    HTML5手机应用的最大优势就是可以在网页上直接调试和修改
    使用PostSharp在.NET平台上实现AOP
    HTML5的设计目的是为了在移动设备上支持多媒体
    中法两国还将在中非、东非携手加强基础设施建设、安全、金融、能源、维和护航、医药卫生和教育培训等领域全面展开合作
    中国“互联网+”战略与欧洲单一数字市场建设、欧洲智慧城市建设等项目
    全球价值链的分工,‘国际产能合作’将带动全球产业链的调整
    中国在全球经济格局以及产业链条上的地位已今非昔比
    Bitmap Image Graphics
    C#利用WebClient 两种方式下载文件
  • 原文地址:https://www.cnblogs.com/ibear/p/14282656.html
Copyright © 2020-2023  润新知