• vcharts湖北地图 地图显示文章重叠问题 json数据


    v-charts湖北地图 地图显示文章重叠问题 json数据

    注册引入 按需引入

    import VeMap from "v-charts/lib/map.common.min";
    components: { headerPage, VeMap, footerPage },
    
    

    html中显示

     <ve-map
       :legend-visible="false" //图例的隐藏
       :judge-width="true"//图表宽高  默认为 false,如果设置为 true ,那么图表的宽度高度才会随着父元素的宽高更改而变化
       ref="VeMapRef"
       width="700px"
       :data="chartData"  //数据列表
       :tooltip="chartTooltip"  //提示框的配置
       :events="chartEvents" //图上区域的点击事件
       :settings="chartSettings" 配置项
      ></ve-map>
    

    chartData = {columns: [], row: []}

    配置项

    //   地图配置
        this.chartSettings = {
          positionJsonLink: "@/../static/hubei.json",
          position: "province/hubei",
          beforeRegisterMap(json) {
            // 手动改变图上的文字的位置!!!(地图宽度小了的话就重叠的文字)
            json.features[1].properties.cp = [115.059365, 29.997711];
            json.features[8].properties.cp = [112.68813, 29.886857];
            json.features[9].properties.cp = [115.699365, 30.697711];
            json.features[13].properties.cp = [113.453974, 30.264953];
            json.features[14].properties.cp = [112.696866, 30.421215];
            return json;
          }, 
    
          labelMap: {
            city: "城市", //修改指标名称
          },
          mapGrid: {
            left: "20px",
            right: "20px",
            top: "auto",
            bottom: "auto",
          },
    
          height: "auto",
          zoom: 1, //这里是关键,一定要放在 series中
          aspectScale: 1,
          dataRange: {
            x: "left",
            y: "bottom",
            splitList: [],
            color: ["#31D76B"],
            textStyle: {
              color: "white",
            },
          },
          itemStyle: {
            normal: {
              borderColor: "#80adae",
            },
          },
          label: {
            show: true,
            color: "#080808",
            fontSize: 10,
            fontWeight: 600,
            align: "center",
            position: "insideTop",
            distance: 55,
            rotate: 30,
            offset: [30, 0],
            lineHeight: 14,
          },
          // 这里是之前配置的换行 文字太长了就换行
          //   tooltip: {
          //     trigger: "item", 
          //     //     // formatter: function (params) { 
          //     //     //   let value = params;
          //     //     //   var newParamsName = ""; // 最终拼接成的字符串
          //     //     //   var paramsNameNumber = value.length; // 实际标签的个数
          //     //     //   var provideNumber = 4; // 每行能显示的字的个数
          //     //     //   var rowNumber = Math.ceil(paramsNameNumber / provideNumber); // 换行的话,需要显示几行,向上取整
          //     //     //   /**
          //     //     //    * 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
          //     //     //    */
          //     //     //   // 条件等同于rowNumber>1
          //     //     //   if (paramsNameNumber > provideNumber) {
          //     //     //     /** 循环每一行,p表示行 */
          //     //     //     for (var p = 0; p < rowNumber; p++) {
          //     //     //       var tempStr = ""; // 表示每一次截取的字符串
          //     //     //       var start = p * provideNumber; // 开始截取的位置
          //     //     //       var end = start + provideNumber; // 结束截取的位置
          //     //     //       // 此处特殊处理最后一行的索引值
          //     //     //       if (p == rowNumber - 1) {
          //     //     //         // 最后一次不换行
          //     //     //         tempStr = value.substring(start, paramsNameNumber);
          //     //     //       } else {
          //     //     //         // 每一次拼接字符串并换行
          //     //     //         tempStr = value.substring(start, end) + "\n";
          //     //     //       }
          //     //     //       newParamsName += tempStr; // 最终拼成的字符串
          //     //     //     }
          //     //     //   } else {
          //     //     //     // 将旧标签的值赋给新标签
          //     //     //     newParamsName = value;
          //     //     //   }
          //     //     //   //将最终的字符串返回
          //     //     //   return newParamsName;
          //     //     // },
          //   }, 
        };
        //点击地图的某个城市
        this.chartEvents = {
          click: (v) => {
            console.log(v);
            // if (v.name == "武汉市") {
            //   //   this.$router.push("/wuhan");
            // } else if (v.name == "黄石市") {
            //   //   this.$router.push("/huangshi");
            // } else if (v.name == "十堰市") {
            //   //   this.$router.push("/shiyan");
            // } else if (v.name == "襄阳市") {
            //   //   this.$router.push("/xiangyang");
            // } else if (v.name == "荆州市") {
            //   //   this.$router.push("/jingzhou");
            // } else if (v.name == "潜江市") {
            //   //   this.$router.push("/qianjiang");
            // } else if (v.name == "恩施土家族苗族自治州") {
            //   //   this.$router.push("/enshi");
            // } else if (v.name == "神农架林区") {
            //   //   this.$router.push("/shenlongjia");
            // } else if (v.name == "宜昌市") {
            //   //   this.$router.push("/yichang");
            // } else if (v.name == "鄂州市") {
            //   //   this.$router.push("/ezhou");
            // } else if (v.name == "荆门市") {
            //   //   this.$router.push("/jingmen");
            // } else if (v.name == "孝感市") {
            //   //   this.$router.push("/xiaogan");
            // } else if (v.name == "黄冈市") {
            //   //   this.$router.push("/huanggang");
            // } else if (v.name == "咸宁市") {
            //   //   this.$router.push("/xianning");
            // } else if (v.name == "随州市") {
            //   //   this.$router.push("/suizhou");
            // } else if (v.name == "天门市") {
            //   //   this.$router.push("/tianmen");
            // } else if (v.name == "仙桃市") {
            //   //   this.$router.push("/xiantao");
            // }
          },
        };
        this.chartTooltip = {
          trigger: "item", 
          triggerOn: "click",// triggerOn 一定要改为 “click”。默认值是下面两个,只触发则设置哪个都可以,也可以不设置此项,但是鼠标移走的话,这个提示框就消失了,所以改成 “click”, 鼠标移走不会消失
          enterable: true,//enterable 要设置为 true,才能使鼠标进入提示框,才可以为提示框添加点击事件。
          extraCssText: "z-index: 99;max- 100px;white-space:pre-wrap",
          formatter: function (params) { 
            return (
              params.name +
              "</br>" +
              `<div style='cursor:pointer;' onclick="open_pcPolicyDisplay(0,'${params.name}')">查看xxx</div>` +
              `<div style='cursor:pointer;' onclick="open_pcPolicyDisplay(1,'${params.name}')">查看xxx</div>`
            );
          },
        };
    

    湖北JSON文件:https://files.cnblogs.com/files/panghu123/hubei.json?t=1646121899

  • 相关阅读:
    存储过程学习笔记
    重新学习struts
    ANT打包J2EE项目war包
    08 | 递归:如何用三行代码找到“最终推荐人”?
    基于Flask 实现Web微信登陆
    基于轮询实现实时的在线投票系统
    Flask 微信公众号开发
    微信公众号开发
    爬虫之正则案例
    爬虫之正则表达式的应用爬取
  • 原文地址:https://www.cnblogs.com/panghu123/p/15950723.html
Copyright © 2020-2023  润新知