vue+Echarts导入自定义地图

在vue项目先安装echarts

//在vue文件中的<script>中引入
import * as echarts from "echarts";
import geoJson from '../assets/map/Fmap.json';  //自定义地图的位置
import * as topojson from "topojson-client";    //使用组件topojson-client

自定义地图教程

使用阿里云旗下的一个的数据可视化平台 DataV.GeoAtlas
以创建四大区为例:东北地区、东部地区、中部地区、西部地区。
进入到范围选择器,下载全国各个地区。
在这里插入图片描述
东北地区有黑龙江省、辽宁省、吉林省。
依次下载好后选择边界生成器,导入数据。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
其余大区完成步骤一致,导出4个大区。
导出数据后选择层级生成器
根区域绑定数据中国在这里插入图片描述
点击批量导入子节点
在这里插入图片描述
导入4个大区的数据
在这里插入图片描述
点击右下角导出层级(开放格式)
在这里插入图片描述
获得这俩组数据
在这里插入图片描述
层级是地图数据
层级映射的地图互相关联信息
在这里插入图片描述
将层级重命名放入assets下的map文件夹中
完善代码

<template>
  <div ref="mapBar" class="map-class"></div>
</template>
<script>
import * as echarts from "echarts";
import geoJson from '../assets/map/Fmap.json';
import * as topojson from "topojson-client";
export default {
  data() {
    return {
      chartData: [ // 这里是中国和大区之间的映射关系
          {
            name: "中国",
            treeID: "1",
            parent: null,
            treeName: "中国_1",
          },
          {
            name: "东北",
            treeID: "1-1",
            parent: "1",
            treeName: "东北_1-1",
            value:8000,
            //ename: 'north' // 新增的字段,方便地图下钻
          },
          {
            name: "东部",
            treeID: "1-2",
            parent: "1",
            treeName: "东部_1-2",
            //ename: 'north' // 新增的字段,方便地图下钻
          },
          {
            name: "中部",
            treeID: "1-3",
            parent: "1",
            treeName: "中部_1-3",
            //ename: 'north' // 新增的字段,方便地图下钻
          },
          {
            name: "西部",
            treeID: "1-4",
            parent: "1",
            treeName: "西部_1-4",
            //ename: 'north' // 新增的字段,方便地图下钻
          },
      ],
      options:{
        tooltip: {
          triggerOn: 'mousemove',
          formatter: function (e) {
            return e.name + ':' + e.value
          }
        },

        // geo为地理坐标系组件,用于地图的绘制,支持在地理坐标系上绘制散点图,线集。
        geo: {
          map: 'china', // 使用 registerMap 注册的地图名称。
        },

        series: [
          {
            name: '随机数',
            type: 'map',
            geoIndex: 0,
            data:[]
          }
        ]
      }
    };
  },
  methods: {
    init() {
      this.chart = echarts.init(this.$refs.mapBar);
      // 使用数据 geoJson 注册名为 'china' 的地图
      // 通过组件topojson-client把topojson转换为geojson 只取payload
      const ChinaResult = topojson.feature(
        geoJson.payload,
        geoJson.payload.objects.collection
      );
      this.chartData.forEach((i, index) => {
        if (index > 0 ) {
          let result = topojson.feature(
            geoJson.children[i.treeID].payload,
            geoJson.children[i.treeID].payload.objects.collection,
          );
          ChinaResult.features = [...ChinaResult.features, ...result.features];
        }
      });
      echarts.registerMap('china', ChinaResult);
      // 要渲染的数据
      this.options.series[0].data = this.chartData;
      this.$nextTick(() => {
        this.chart.setOption(this.options);
      })
    }
  },
  mounted() {
    this.init();
  },
};
</script>
<style scoped>
.map-class{
  width: 65%;
  height: 80vh;
  border: 1px solid #ccc;
}
</style>

代码完善后地图并不能正确的出现分区,也无法将各个区域依次选中
打开地图重命名的json地图数据,搜索adcode

在这里插入图片描述

找到如下内容

在这里插入图片描述

在"adcode" : " " 后加入"name" : “对应大区名称”,一共需要加入4个。 最后运行项目,地图完善。
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Vue自定义 Echarts 的 tooltip 需要做以下几个步骤: 1. 安装 Echarts:在终端中运行以下命令安装 Echarts: ```bash npm install echarts --save ``` 2. 在需要使用 Echarts 的组件中导入 Echarts: ```javascript import echarts from 'echarts' ``` 3. 创建一个 div 元素用于绘制图表: ```html <template> <div id="chart"></div> </template> ``` 4. 在组件的 `mounted` 钩子函数中初始化 Echarts 并绘制图表: ```javascript export default { mounted() { this.drawChart() }, methods: { drawChart() { // 获取图表容器元素 const chartContainer = document.getElementById('chart') // 初始化 Echarts 实例 const chart = echarts.init(chartContainer) // 定义图表数据 const data = [...] // 定义自定义 tooltip 的格式化函数 const customTooltipFormatter = params => { const dataIndex = params[0].dataIndex const value = data[dataIndex] return `Value: ${value}` } // 配置图表选项 const options = { tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }, formatter: customTooltipFormatter }, series: [{ type: 'bar', data: data }] } // 绘制图表 chart.setOption(options) } } } ``` 在上面的代码中,我们通过配置 `tooltip` 属性来实现自定义的 tooltip 样式。其中,`formatter` 属性用于定义自定义的 tooltip 内容格式化函数。 需要注意的是,以上只是一个简单的示例,实际上你可以根据自己的需求进一步定制 tooltip 的样式和内容。 希望能帮到你!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

焚冉

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值