如何用axios调接口数据赋给echarts(中国疫情地图)

在做项目时候,使用axios调后台接口数据赋值给echarts中,一直存在bug,数据赋值不上去,找了好久才发现是异步的问题

1.首先先导入所需的插件

import echarts from "echarts";
// 导入地图模块,这个存在于node_modules中echarts目录下
import "echarts/map/js/china";
import axios from "axios";

2.

mounted() {
    this.getmap(); //获取地图
    // this.getmapdata(); //获取地图数据
  },
  methods: {
    getmap() {
      //
      axios.get(base.mapurl).then((res) => {
        let city = res.data.retdata;
        for (let i = 0; i < city.length; i++) {
          let obj = {};
          obj.name = city[i].xArea;
          obj.value = city[i].confirm; //累计确诊的人数  curConfirm当前确诊人数
          this.arr.push(obj);
        }
        console.log("城市确诊数据", this.arr);
        myChart.setOption(option);  //重点一定在数据请求完在调用
      });
      var myChart = echarts.init(document.getElementById("main"));

      // 绘制图表
      var option = {
        tooltip: {
          //悬浮弹框
          triggerOn: "click", //提示框触发的条件
          enterable: true, //鼠标是否可进入提示框浮层中,默认为false
          formatter(item) {
            //item=下面serves里面的data里面的每一项 //[{} ] data={} a b c d
            return (
              '<a href="#/citys/' +
              item.name +
              '" style="color:#fff">省份:' +
              item.name +
              "--详情</a>"
            );
          },
        },
        visualMap: [
          {
            //映射高亮颜色
            orient: "horizontal", //水平的
            type: "piecewise", //离散
            bottom: 0,
            textGap: 4,
            itemGap: 4,
            itemWidth: 10,
            itemHeight: 10,
            padding: 2,
            textStyle: {
              fontSize: 9,
            },
            pieces: [
              // 配置颜色区间
              {
                min: 0,
                max: 0,
                color: "#FFFFFF",
              },
              {
                min: 1,
                max: 9,
                color: "#FAEBD2",
              },
              {
                min: 10,
                max: 99,
                color: "#E9A188",
              },
              {
                min: 100,
                max: 499,
                color: "#D56355",
              },
              {
                min: 500,
                max: 999,
                color: "#BB3937",
              },
              {
                min: 1000,
                max: 10000,
                color: "#772526",
              },
              {
                min: 10000,
                color: "#480F10",
              },
            ],
          },
        ],
        series: [
          {
            name: "省",
            type: "map", //地图  bar  line  map
            map: "china", //中国地图 需要引入地图china.js
            roam: false,
            zoom: 1.2,
            aspectScale: 0.75,
            top: 40,
            layoutCenter: ["5%", "5%"],
            label: {
              normal: {
                show: true,
                textStyle: {
                  fontSize: 8,
                },
              },
            },
            itemStyle: {
              normal: {
                areaColor: "rgba(0,255,236,0)",
                borderColor: "rgba(0,0,0,0.2)",
              },
              emphasis: {
                // 选中的区域颜色及阴影效果等
                areaColor: "rgba(255,180,0,0.8)",
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                shadowBlur: 20,
                borderWidth: 0,
              },
            },
            data: this.arr,

            // data: [
            //   { name: "内蒙古", value: 200 },
            //   { name: "北京", value: 800 },
            // ],
          },
        ],
      };

      // myChart.setOption(option);
    },
}

 注意:把整个函数放到mounted()进行调用,在进行完axios调用后要 myChart.setOption(option);进行重新渲染数据才能出来,

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
要使用 axios 获取接口数据并实现 Vant 图片预览功能,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了 axios 和 vant 组件库。如果没有安装,可以通过运行以下命令进行安装: ``` npm install axios vant ``` 2. 在您的代码中导入 axios 和 vant 相关组件: ```javascript import axios from 'axios'; import { ImagePreview } from 'vant'; ``` 3. 使用 axios 发起请求获取图片数据,并将其保存到一个变量中: ```javascript axios.get('your_api_endpoint').then(response => { const imageData = response.data; // 假设返回的数据是一个包含图片信息的数组 // 其他处理逻辑... }); ``` 在上述代码中,`your_api_endpoint` 应替换为您实际的接口地址,`response.data` 是获取到的接口数据。 4. 在需要预览图片的地方,使用 Vant 的 `ImagePreview` 组件来实现图片预览功能。例如,您可以在一个图片列表中循环渲染图片,并为每个图片添加点击事件: ```html <template> <div> <img v-for="image in imageData" :src="image.url" @click="previewImage(image.url)" /> </div> </template> ``` 5. 在 Vue 实例的方法中定义 `previewImage` 方法,该方法使用 `ImagePreview` 组件来预览图片: ```javascript methods: { previewImage(url) { ImagePreview([{ url }]); } } ``` 在上述代码中,`url` 是被点击的图片的 URL。 通过以上步骤,您可以使用 axios 获取接口数据,并使用 Vant 的 `ImagePreview` 组件实现图片预览功能。请注意根据您的实际情况进行适当的整。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.指尖舞者

如果帮助到了你,请给点赞助支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值