vue中实现echarts的3d中国地图

echarts的地图是需要json文件的,而网上的地图json文件大多都需要收费,我们这里用阿里提供的免费的json文件,下载:前往下载地图json文件
3d的echarts地图需要安装以下两个插件:

npm install echarts --save
npm install echarts-gl --save

main.js中全局引入:

import * as echarts from 'echarts';	// 引入echarts
import 'echarts-gl'  // 引入echarts-gl

vue中json文件的数据是通过axios请求回来的;刚开始我是把json文件放在同一个目录下,然后通过相对路径去发送请求,结果请求不到数据,提示跨域了,这是我踩的坑;
在网上看到大部分都是把json文件放到public文件夹下:
在这里插入图片描述
然后通过绝对路径的方式去请求就可以请求到数据:

getData() {
  axios.get('/json/china.json').then((res) => {
    console.log(res.data)
  })
}

注:/代表的就是public这个文件夹
完整代码:

<template>
  <div ref="chinaMap" style="width: 800px; height: 600px"></div>
</template>

<script>
import axios from 'axios'
import * as echarts from 'echarts';
import 'echarts-gl'
export default {
  mounted() {
    this.getData()
  },
  methods: {
    getData() {
      axios.get('/json/china.json').then((res) => {
        this.initMap('china', res.data)
      })
    },
    initMap(name, data) {
      echarts.registerMap(name, data);  // 注册矢量地图数据
      let map = echarts.init(this.$refs.chinaMap);
      let option = {
        series: [
          {
            type: 'map3D',
            map: name
          }
        ]
      };
      map.setOption(option, true);
    }
  }
}
</script>

需要美化一下的配置:

series: [
  {
    type: 'map3D',
    map: name,
    selectedMode: 'single', //地图高亮单选
    regionHeight: 4, //地图高度
    // boxDepth: 145,//地图倾斜度
    viewControl: {
      distance: 90, //地图视角 控制初始大小
      rotateSensitivity: [2, 2],
      zoomSensitivity: 2, //缩放操作的灵敏度
      panSensitivity: 2, //平移操作的灵敏度
      rotateMouseButton: 'left', //旋转操作使用的鼠标按键
      panMouseButton: 'right', //平移操作使用的鼠标按键
    },
    label: {
      show: true, //是否显示市
      textStyle: {
        color: 'white', //文字颜色
        fontSize: 14, //文字大小
      },
    },
    itemStyle: {
      color: '#2B5890', //地图颜色
      borderWidth: 2, //分界线wdith
      borderColor: '#5578A5', //分界线颜色
    },
    emphasis: {
      label: {
        show: true, //是否显示高亮
        textStyle: {
          color: '#fff', //高亮文字颜色
        },
      },
      itemStyle: {
        color: '#0489d6', //地图高亮颜色
      },
    },
    data: [],
  }
]

效果如下:
在这里插入图片描述

/* *author:XudongChen *Date:2010-03-09 *QQ:233828249 81023617(不才) *Email:xznd@163.com */ 2009-8-13 1.加载分块地图 2.添加全景标记窗体 2009-8-14 1.增加控制条 2.增加全景标记、公交车标记显示层 3.解决地图定位问题 4.增加经纬度层功能 5.未修正图标层的定位 2009-8-15 1.已修正8.14地图定位错误,还存在放大缩小时定位不准 2.存在ie内存泄漏问题 2009-8-16 1.已修正8.15 ie内存泄漏问题,chrome下可能还存在内存泄漏 2.增加图标定位功能 3.增加鼠标滚轮事件(http://yongzhi.blog.hexun.com/5057947_d.html) 4.通过jquery加载json数据文件(图标显示层数据) 2009-8-17 1.增加建筑物高亮显示(还需完成鼠标mouseover和mouseout事件) 2009-8-18 1.完成建筑物高亮显示,有点小bug 2009-8-19 1.增加记录原始缩放比例的全局变量 2.解决建筑物高亮显示bug 2009-8-20 1.增加三维全景展示功能 2.浏览建筑详细功能 2009-8-21 1.引入jqueryAlert插件,美化弹出窗体 2009-8-23 1.增加搜索功能 2.清理建筑信息显示页和公交信息页多余数据 2009-10-22 1.增加小沙盘拖动类(鹰眼视图) BirdEye.js 完成小沙盘到地图的同步,同步方法:检测mouseup事件触发->修改url->request->计算坐标->同步行为 2.增加小沙盘样式表BirdEye.css 地图图片路径birdeyemap 3.完成window.parent地图->小沙盘的同步 问题:小沙盘->window.parent地图存在bug,可以尝试开启 2009-10-23 1.在小沙盘增加浮动绿色框 2009-11-6 1.实现“鹰眼地图”不需移动,一幅可以看到见全景, 当主场景移动时,“鹰眼地图”只有小框在移动。 同时“小框” 主场景也在移动。 2009-12-17 1.测距功能事件配置 2009-12-21 1.完成测距功能 2009-12-22 1.配置搜索功能,后台改用s2sh框架 2.完成hessian+spring+hibernate整合,提供建筑信息和公司信息hessian查找服务 2009-12-23 1.配置hessian服务端缓存 2.配置hessian日志记录,输出到文件/log/wzucxd/html 3.完成建筑信息显示页,配置2级缓存 4.配置oscache 5.配置新闻信息模块 2010-1-13 1.完成chrome和ff下的搜索功能 2.搜索功能支持ie6.0+ //设置Theodolite$setPoint var cpointtmp = new CPoint(this.holder.offsetLeft + evt.clientX - this.mvl.offsetLeft, this.mvl.offsetTop + evt.clientY - this.mvl.offsetTop); Theodolite$setPoint(cpointtmp);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值