vue中使用echarts的map的问题

使用json方式注册的,在html的页面中使用正常,但是使用vue搭建的使用就报错了。

// .html 这是可以出来地图的
var chart = echarts.init(document.getElementById("map"))

$.getJSON(/*json地址*/, function (data) {
  //注册地图
  echarts.registerMap("china", data);
  //绘制地图
  chart.setOption({
    geo: {
      map: 'china'
    }
  })
})
// .vue 这种报错了
drawMap () {
  this.$ajax.get(/*json地址*/).then(res => {
    // 注册地图
    this.$echarts.registerMap('china', res)
    // 绘制地图
    this.chart = this.$echarts.init(document.getElementById('map'))
    this.chart.setOption({
      geo: {
        map: 'china'
      }
    })
  }).catch(err => {
    console.log(err)
  })
}

报错,项目中没有这个文件,就只是请求了一个json而已,之前看到好像说echarts4内置了地图文件,难道这是内置的报错了吗?vuehtml都是使用cdn引入的echarts

<script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.js"></script>

json文件使用的都是echarts的github下的china.json

请求大佬指点~
clipboard.png

阅读 14.1k
3 个回答

不用get请求了,直接import进来

import 'echarts/map/js/china' // 这个是js引用
import chinaJson from 'echarts/map/json/china.json' // 这个是json引用
// 路径按你自己的来
drawMap () {
    // 注册地图
    this.$echarts.registerMap('china', chinaJson) // 如果是js引入就不需要这一行了
    // 绘制地图
    this.chart = this.$echarts.init(document.getElementById('map'))
    this.chart.setOption({
      geo: {
        map: 'china'
      }
    })
}

你把this 在drawMap这个函数中保存一下this为that在下边的this都改完that看看

我也是vue项目,今天遇到了同样的问题,我用的是get请求,其实出现问题的原因不是get请求或者是本地import的区别,而是而是要用请求到的数据res.data来绘制地图,而不是整个res,这样写就是对的this.$echarts.registerMap("china", res.data),尽量还是用get请求来获取数据,不然部署到线上会有问题的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏