首页 > 其他分享 >vue+echarts绘制地图

vue+echarts绘制地图

时间:2022-11-15 13:23:25浏览次数:44  
标签:toCoord vue 绘制地图 name res value var echarts


代码实现

import chinaJson from 'echarts/map/json/china.json'
export default {
    mounted() {
      let myChart = this.$echarts.init(document.getElementById("main"));
      this.$echarts.registerMap('china', chinaJson)

      var chinaGeoCoordMap = {
 黑龙江: [127.9688, 45.368],
 内蒙古: [110.3467, 41.4899],
 吉林: [125.8154, 44.2584],
 北京市: [116.4551, 40.2539],
 辽宁: [123.1238, 42.1216],
 河北: [114.4995, 38.1006],
 天津: [117.4219, 39.4189],
 山西: [112.3352, 37.9413],
 陕西: [109.1162, 34.2004],
 甘肃: [103.5901, 36.3043],
 宁夏: [106.3586, 38.1775],
 青海: [101.4038, 36.8207],
 新疆: [87.9236, 43.5883],
 西藏: [91.11, 29.97],
 四川: [103.9526, 30.7617],
 重庆: [108.384366, 30.439702],
 山东: [117.1582, 36.8701],
 河南: [113.4668, 34.6234],
 江苏: [118.8062, 31.9208],
 安徽: [117.29, 32.0581],
 湖北: [114.3896, 30.6628],
 浙江: [119.5313, 29.8773],
 福建: [119.4543, 25.9222],
 江西: [116.0046, 28.6633],
 湖南: [113.0823, 28.2568],
 贵州: [106.6992, 26.7682],
 云南: [102.9199, 25.4663],
 广东: [113.12244, 23.009505],
 广西: [108.479, 23.1152],
 海南: [110.3893, 19.8516],
 上海: [121.4648, 31.2891],
 台湾:[121.520076,25.030724],
};

 
var chinaDatas = [
 [
  {
   name: '黑龙江',
   value:5,
  },
 ],
 [
  {
   name: '内蒙古',
   value: 3,
  },
 ],
 [
  {
   name: '北京市',
   value: 20,
  },
 ],
 [
  {
   name: '吉林',
   value: 3,
  },
 ],
 [
  {
   name: '辽宁',
   value:5,
  },
 ],
 [
  {
   name: '河北',
   value: 6,
  },
 ],
 [
  {
   name: '天津',
   value: 5,
  },
 ],
 [
  {
   name: '山西',
   value: 7,
  },
 ],
 [
  {
   name: '陕西',
   value: 6,
  },
 ],
 [
  {
   name: '甘肃',
   value: 5,
  },
 ],
 [
  {
   name: '宁夏',
   value: 5,
  },
 ],
 [
  {
   name: '青海',
   value: 7,
  },
 ],
 [
  {
   name: '新疆',
   value: 3,
  },
 ],
 [
  {
   name: '西藏',
   value: 3,
  },
 ],
 [
  {
   name: '四川',
   value: 10,
  },
 ],
 [
  {
   name: '重庆',
   value: 9,
  },
 ],
  [
  {
   name: '广东',
   value: 30,
  },
 ],
 [
  {
   name: '山东',
   value: 6,
  },
 ],
 [
  {
   name: '河南',
   value: 8,
  },
 ],
 [
  {
   name: '江苏',
   value: 10,
  },
 ],
 [
  {
   name: '安徽',
   value: 9,
  },
 ],
 [
  {
   name: '湖北',
   value: 10,
  },
 ],
 [
  {
   name: '浙江',
   value: 16,
  },
 ],
 [
  {
   name: '福建',
   value:9,
  },
 ],

 [
  {
   name: '湖南',
   value: 14,
  },
 ],
 [
  {
   name: '贵州',
   value: 8,
  },
 ],
 [
  {
   name: '广西',
   value: 7,
  },
 ],
 [
  {
   name: '海南',
   value: 7,
  },
 ],
 [
  {
   name: '上海',
   value: 17,
  },
 ],
 [
  {
   name: '台湾',
   value: 18,
  },
 ],
 [
  {
   name: '江西',
   value: 18,
  },
 ],
];


var convertData = function (data) {
 var res = [];
 for (var i = 0; i < data.length; i++) {
  var dataItem = data[i];
  var fromCoord = chinaGeoCoordMap[dataItem[0].name];
  // 上面是江西map坐标
  // var toCoord = [116.0046, 28.6633];
  // 下面是山西太原map
  var toCoord = [112.3352,37.9413];
  // 北京
  // var toCoord = [116.4551,40.2539];
  if (fromCoord && toCoord) {
   res.push([
    {
     coord: fromCoord,
     value: dataItem[0].value,
    },
    {
     coord: toCoord,
    },
   ]);
  }
 }
 return res;
};
let option = {
 tooltip: {
  trigger: 'item',
  backgroundColor: 'rgba(166, 200, 76, 0.82)',
  borderColor: '#FFFFCC',
  showDelay: 0,
  hideDelay: 0,
  enterable: true,
  transitionDuration: 0,
  extraCssText: 'z-index:100',
  formatter: function (params, ticket, callback) {
   //根据业务自己拓展要显示的内容
   var res = '';
   var name = params.name;
   var value = params.value[params.seriesIndex + 1];
   res = "<span style='color:#fff;'>" + name + '</span><br/>数据:' + value;
   return res;
  },
 },
 backgroundColor: '#013954',
 visualMap: {
  //图例值控制
  min: 1,
  max: 30,
  calculable: true,
  show: true,
  color: ['#f44336', '#fc9700', '#ffde00', '#ffde00', '#00eaff'],
  textStyle: {
   color: '#fff',
  },
 },
 geo: {
  map: 'china',
  zoom: 1.2,
  label: {
   emphasis: {
    show: false,
   },
  },
  roam: true, //是否允许缩放
  itemStyle: {
   normal: {
    color: 'rgba(51, 69, 89, .5)', //地图背景色
    borderColor: '#516a89', //省市边界线00fcff 516a89
    borderWidth: 1,
   },
   emphasis: {
    color: 'rgba(37, 43, 61, .5)', //悬浮背景
   },
  },
 },
 series: series,
 
};
    myChart.setOption(option);
    },
  };
  </script>

</script>

标签:toCoord,vue,绘制地图,name,res,value,var,echarts
From: https://www.cnblogs.com/jycom/p/16892099.html

相关文章

  • vue-plugin-Pages自动配置路由
    vite-plugin-pages使用安装首先先安装依赖。因为模版里自带了vue-router,所以不需要再安装。cnpmaddvite-plugin-pagesvite-plugin-vue-layouts-D在vite.config......
  • React+echarts (echarts-for-react) 画中国地图及省份切换
    有足够的地图数据,可以点击到街道,示例我只出到市级以umi为框架,版本是:"react":"^18.2.0","umi":"^4.0.29","echarts":"^5.4.0","echarts-for-rea......
  • vue3 获取组件实例 $ref方法踩坑 getCurrentInstance()
    ps:我使用的是element-plus框架,有一个需求是级联选择器,选择后需要获取最后的id和label一起传递给后端。获取id比较简单在change事件中使用value.pop()就可以获得但是获取......
  • Vue3+Vite简单使用
    前言Vue3大势不可阻挡,与之而来的就是Vite,尤雨溪极力推荐的前端开发与构建工具vue3原生支持TS,所以TS语法和vue3TS语法学起来vue中的vuex状态管理也用不顺手,看不顺......
  • ECharts基础概念
    简要介绍下ECharts中的基础概念:1、echarts实例:一个网页中可以创建多个echarts实例。每个echarts实例中可以创建多个图表和坐标系等。dom节点作为echarts的渲染容器,......
  • Vue使用axios请求
    新建组件(局部引入):<template><div><p>{{msg}}</p></div></template><script>importaxiosfrom'axios';importQueryStringfrom'qs';exportde......
  • vue+element实现拖拽分屏
    实现效果:使用鼠标点击分割线拖动,可实现左右展示框宽度(也可修改为高度)的变化,如下图1、封装组件首先需要封装按钮点击的这条线,计算鼠标点击后滑动的距离:<template><di......
  • Vue 拦截器思路
    //数据响应拦截器,统一处理返回的数据逻辑axios.interceptors.response.use(res=>{if(res&&res.status==HTTP_STATUS.SUCCESS){returnres.data;}els......
  • 【Vue3】本地没问题,部署后 public 下的某些资源 404 不能访问
    如果你本地没问题,线上访问出现404,你得看看你public下面得资源文件夹命名是不是和.gitignore下得配置文件冲突了,我就是命名为dist导致直接被忽略了,重新改了个名字后......
  • vuecli作用域插槽
    <template><divid="app"class="container"><Categorytitle="美食"><templatescope="{games}"><ul><liv-for="(g,inde......