vue + echart +map中国地图,省市地图,区县地图

第一步:安装依赖包

  1. npm install echarts --save
  2. 在main.js 中全局引入
    import echarts from 'echarts'
    Vue.prototype.$echarts = echarts
    

第二步:引入地图文件(此处路径可以参照node_modules 文件夹里的,echarts依赖包中具体路径写)
1.中国地图 import "echarts/map/js/china.js";
2.省地图 import "echarts/map/js/province/neimenggu.js";(注意下面配置参数geo里的map需要从’china’改为中文“内蒙古”)
3.市地图 (npm 安装的echarts 里没有市数据,如有人知道怎么安装可以留言指正我,目前我的解决方案是去github 下载市地图数据包 点击此处跳转至github 地图包
下载完成后可以发现市地图为数字命名,可百度各市行政区编码进行对照区分)

import baotoushi from '../../../static/json/huhehaoteshi.json'

*注意:如果下载的json文件放在本地不能正常加载,可能是因为 1. 代码格式不对 2.需要放在static 静态文件夹中 3.初始化时地图名字应该写对应省的名字,如点击进入“包头市”,那么下面的name 需要设置为“内蒙古”
chart.setOption(option);
that.$echarts.registerMap(name, baotoushi);
省下钻到市请看我另一篇文章)

第三步:初始化地图
1.<div id="mapChart" ></div>
3. 在mounted钩子中调用

mounted() {
    this.getMap();
  },

3.在data 中定义下面需要的参数,如mapList等
4. 在methods 中定义方法(里面一些内容可以删掉)

getMap() {
	 let mapOption = {
            title: "", //标题
            tooltip: { //此处是根据后端数据进行hover 展示的提示框,可用官网上默认的
              trigger: "item",
              formatter: function(params) {
                return params.name + " ( " + params.data.value[2] + " ) " + "</br>"
                       +"飞机" + " : " + params.data.aircraftNum + "</br>";
              }
            },
            legend: { //标签
                orient: 'vertical',
                y: 'bottom',
                x:'right',
                data:['行踪轨迹'],
                textStyle: {
                    color: '#fff'
                }
            },
            visualMap: {//颜色轴,可以根据数据点的值大小,展示不同的颜色,或用来展示地图块的不同颜色
              min: 0,
              max: 200,
              calculable: true,
              inRange: {
                color: ["#3dda8e", "#eac736", "#d94e5d"]
              },
              textStyle: {
                color: "#fff"
              }
            },
            geo: {//配置地图参数
              map: "china",
              label: {
                emphasis: {
                  show: false
                }
              },
              itemStyle: {
                normal: {
                  areaColor: "#058bd2",
                  borderColor: "#111"
                },
                emphasis: {
                  areaColor: "#1e67b2"
                }
              }
            },
            series: [
              {//根据数据展示点,并显示为波纹效果
                type: 'effectScatter',
                coordinateSystem: 'geo',
                zlevel: 2,
                //波纹效果
                rippleEffect: {
                    period: 2,
                    brushType: 'stroke',
                    scale: 3
                },
                label: {
                    normal: {
                        show: true,
                        color: '#fff',
                        position: 'right',
                        formatter: '{b}'
                    }
                },
                //圆点大小
                symbolSize: 16,
                data: convertData(data),
              }
            ]
          };
          //用$echarts是因为上面注册使用的 Vue.prototype.$echarts
          let myChart = this.$echarts.init(document.getElementById('mapChart'));
          myChart.setOption(mapOption);
}
  1. 如需跟后端交互,需请求展示数据的接口
    此处接口axios请求二次封装过,请自行修改为适合自己项目的
export const getTrajectoryMapList = param => {
    return req.post('/joureny/getcity',param)
}

下面代码中的this.$api.getTrajectoryMapList(needData).then(res => {的返回值 res.data 为如下格式

data: [
	{city:'beijing', longitude: '110.10', latitude: '32.32',number: 300},  // 城市、经纬度、城市人数为300
	{city:'shanxi', longitude: '110.10', latitude: '32.32',number: 300},
]
this.$api.getTrajectoryMapList(needData).then(res => {
        if (res.reCode == 0) {
          let keyMap = [];
          let data = [];
          res.data.forEach(item => {
            //城市和经纬度的数组
            keyMap.push([item.city, [item.longitude, item.latitude]]);
            //鼠标划过显示信息的数组
            data.push({
              name: item.city,
              value: item.number
            });
          });
          let geoCoordMap = new Map(keyMap);//此处为es6的map 语法,用来处理键值对
          let convertData = function(data) {//覆盖点的样式
            let res = [];
            for (let i = 0; i < data.length; i++) {
              let geoCoord = geoCoordMap.get(data[i].name);//es6map 语法
              if (geoCoord) {
                res.push({
                  name: data[i].name,
                  value: geoCoord.concat(data[i].value),
                });
              }
            }
            return res;
          };
          this.getMap(); //此处调用地图实例
         }
      })
  • 6
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Vue是一种流行的JavaScript框架,用于构建用户界面。ECharts是一种用于创建交互性和可视化图表的图表库。在生产环境中,可以使用VueECharts来创建一个生产任务看板。 首先,我们可以使用Vue框架来构建用户界面。通过Vue的组件化架构,我们可以将任务看板拆分为多个可重用的组件,例如任务列表、进度条、功能按钮等。这样可以使代码更可维护和可扩展。同时,Vue提供了响应式的数据绑定机制,可以实时更新任务看板的数据,并与后端进行数据交互。 然后,我们可以使用ECharts图表库来创建可视化图表,以展示任务看板上的数据。例如,可以使用饼图来显示任务的进度分布,柱状图来展示各个任务的完成情况,折线图来展示任务的趋势等。ECharts提供了丰富的图表类型和交互功能,可以根据实际需求进行灵活配置。 在整个过程中,我们可以利用Vue的生命周期钩子函数来实现数据的获取、更新和渲染。当用户发起操作时,可以通过Vue的事件机制来触发相应的业务逻辑。例如,当用户点击任务列表中的某个任务时,可以发送请求获取该任务的详细信息,并在界面上展示出来。 最后,为了提高用户体验,我们可以将任务看板进行排版和样式的优化,使其在不同设备和浏览器上都能良好展示。同时,可以增加一些交互功能,例如拖拽任务、快速搜索任务等,以提高用户的生产效率。 总结而言,通过使用VueECharts,我们可以实现一个功能齐全、交互性强的生产任务看板。它可以直观展示任务的状态和进度,并提供方便的操作和管理功能,帮助用户更好地进行生产任务的监控和调度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值