vue中使用中国地图scatter散点图

一 效果图

二 上代码

封装好的组件可以直接使用,根据自己数据传入props

<template>
  <div class="mapContent">
    <div ref="MapScatter" class="echarts"></div>
  </div>

</template>
<script>
import 'echarts/map/js/china'	//导入echart的中国地图插件 

export default {
  name: 'MapScatter',
  mounted() {	//vue的生命周期函数
    this.initEcharts()		//调用初始化图表的函数
  },
  methods: {
    initEcharts() {
      let echarts = this.$echarts.init(this.$refs.MapScatter)	//获取到容器的节点,初始化echarts实例
      
      let option = {
        // 图表主标题
        title: {
          text: '在线率', // 主标题文本,支持使用 \n 换行
          top: 20, // 定位 值: 'top', 'middle', 'bottom' 也可以是具体的值或者百分比
          left: 'center', // 值: 'left', 'center', 'right' 同上
          textStyle: { // 文本样式
            fontSize: 24,
            fontWeight: 600,
            color: '#fff',
          },
        },
        // 提示框组件
        tooltip: {
          trigger: 'item', // 触发类型, 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用
          // 提示框浮层内容格式器,支持字符串模板和回调函数两种形式
          // 使用函数模板  传入的数据值 -> value: number | Array
          backgroundColor: 'rgba(255,255,255,0.9)',
          formatter: function (e) {
            let context = `
              <div class="showTool">
                <div class="title">${ e.data.name} </div>
                <div class="rate">在线率:${ (e.data.value[2]).toFixed(0) }%</div>
              </div>
            `
            return context
          },
        },
        geo: {
          map: 'china', // 地图类型
          show: true, // 是否显示地理坐标系组件
          // 是否开启鼠标缩放和平移漫游 默认不开启 如果只想要开启缩放或者平移,
          // 可以设置成 'scale' 或者 'move' 设置成 true 为都开启
          roam: false,
          // 图形上的文本标签
          label: {
            show: false, // 是否显示对应地名
          },
          // 地图区域的多边形 图形样式
          itemStyle: {
            areaColor: '#eee', // 地图区域的颜色
            borderColor: 'gray', // 图形的描边颜色 支持的颜色格式同 color,不支持回调函数
            borderType: 'solid', // 描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'
          },
          // 高亮状态下的多边形和标签样式
          emphasis: {
            label: {
              show: true, // 是否显示标签
              color: '#fff', // 文字的颜色 如果设置为 'auto',则为视觉映射得到的颜色,如系列色
            },
            itemStyle: {
              areaColor: 'rgba(238, 238, 238, 1)', // 地图区域的颜色
            },
          },
        },
        series: [
          {
            type: 'scatter', // 类型
            coordinateSystem: 'geo', // 该系列使用的坐标系 可选: 'cartesian2d','polar','geo'
            // 标记的图形, 标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 
            // 'pin', 'arrow', 'none'
            symbol: 'circle', 
            symbolSize: 8, // 标记的大小
            // 图形的样式
            itemStyle: {
              color: 'purple',
            },
            // 系列中的数据内容数组, 数组项通常为具体的数据项
            data: [
              { name: '北京', value: [116.405285, 39.904989, 24] },
              { name: '天津', value: [117.190182, 39.125596, 60] },
              { name: '上海', value: [121.472644, 31.231706, 24] },
              { name: '重庆', value: [106.504962, 29.533155, 2] },
              { name: '河北', value: [114.502461, 38.045474, 56] },
              { name: '河南', value: [113.665412, 34.757975, 5] },
              { name: '云南', value: [102.712251, 25.040609, 30] },
              { name: '辽宁', value: [123.429096, 41.796767, 59] },
              { name: '黑龙江', value: [126.642464, 45.756967, 73] },
              { name: '湖南', value: [112.982279, 28.19409, 99] },
              { name: '安徽', value: [117.283042, 31.86119, 24] },
              { name: '山东', value: [117.000923, 36.675807, 10] },
              { name: '新疆', value: [87.617733, 43.792818, 87] },
              { name: '江苏', value: [118.767413, 32.041544, 51] },
              { name: '浙江', value: [120.153576, 30.287459, 37] },
              { name: '江西', value: [115.892151, 28.676493, 48] },
              { name: '湖北', value: [114.298572, 30.584355, 17] },
              { name: '广西', value: [108.320004, 22.82402, 26] },
              { name: '甘肃', value: [103.823557, 36.058039, 37] },
              { name: '山西', value: [112.549248, 37.857014, 18] },
              { name: '内蒙古', value: [111.670801, 40.818311, 34] },
              { name: '陕西', value: [108.948024, 34.263161, 64] },
              { name: '吉林', value: [125.3245, 43.886841, 4] },
              { name: '福建', value: [119.306239, 26.075302, 41] },
              { name: '贵州', value: [106.713478, 26.578343, 20] },
              { name: '广东', value: [113.280637, 23.125178, 10] },
              { name: '青海', value: [101.778916, 36.623178, 3] },
              { name: '西藏', value: [91.132212, 29.660361, 4] },
              { name: '四川', value: [104.065735, 30.659462, 41] },
              { name: '宁夏', value: [106.278179, 38.46637, 8] },
              { name: '海南', value: [110.33119, 20.031971, 4] },
              // { name: '台湾', value: [121.509062, 25.044332, 58] },
              // { name: '香港', value: [114.173355, 22.320048, 45] },
              // { name: '澳门', value: [113.54909, 22.198951, 3] },
              // { name: '南海诸岛', value: [114.252615, 15.86029, 271.13] },
            ],
          },
          {
            type: 'effectScatter', // 类型
            coordinateSystem: 'geo', // 该系列使用的坐标系 可选: 'cartesian2d','polar','geo'
            // 标记的图形, 标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 
            // 'pin', 'arrow', 'none'
            symbol: 'circle',  
            // 标记的大小, 如果需要每个数据的图形大小不一样,可以设置为如下格式的回调函数 
            // (value: Array|number, params: Object) => number|Array
            // 其中第一个参数 value 为 data 中的数据值。第二个参数params 是其它的数据项参数
            symbolSize: function (val) {
              return val[2] / 10
            },
            // 图形的样式
            itemStyle: {
              color: 'purple',
            },
            // 系列中的数据内容数组。数组项通常为具体的数据项
            data: [
              { name: '广东', value: [113.280637, 23.125178, 88] },
              { name: '山东', value: [117.000923, 36.675807, 90] },
              { name: '河南', value: [113.665412, 34.757975, 80] },
              { name: '四川', value: [104.065735, 30.659462, 83] },
              { name: '江苏', value: [118.767413, 32.041544, 81] },
              { name: '河北', value: [114.502461, 38.045474, 77] },
            ],
          },
        ],
      }
      echarts.setOption(option)	// 使用刚指定的配置项和数据显示图表。
    },

  },
}
</script>

<style lang="less" scoped>
.mapContent {
  width: 100%;
  height: 100%;
  .echarts {
    width: 100%;
    height: 100%;
  }

  /deep/ .showTool {
    width: 160px;
    height: auto;
    padding: 10px 0 10px 10px;
    box-sizing: border-box;
    background: rgba(255, 255, 255, 0.9);
    // box-shadow: 0px 2px 8px 0px rgba(13, 4, 8, 0.2);
    border-radius: 5px;
    .title {
      font-size: 14px;
      font-family: Microsoft YaHei;
      font-weight: bold;
      color: #333333;
      line-height: 22px;
    }
    .rate {
      font-size: 12px;
      font-family: Microsoft YaHei;
      font-weight: bold;
      color: #333333;
      line-height: 22px;
    }
  }
}

</style>

猜你喜欢

转载自blog.csdn.net/sunnyboysix/article/details/112283957