zoukankan      html  css  js  c++  java
  • Eachart地图上添加自定义图标

    Echarts是开发过程中常用的可视化工具,可以满足日常开发的大部分需求。但是有时候会遇到些复杂的要求,比如:在地图上插上标记。

    我们先来看一下最终实现的效果图:

    一、实现思路

           在官方文档中,我们可以看到在 ECharts 3 中不再建议在地图类型的图表使用 markLine  markPoint。如果要实现点数据或者线数据的可视化,可以使用在地理坐标系组件上的散点图和线图。

          所以我们可以通过地理坐标系组件绘制地图,然后我们利用散点图series[i]-scatter属性中的symbol,来添加我们自己的图例就可以了。

    二、实现方案:

    第一步:建立地理坐标系

     geo: {
                map: 'china',
                zoom: 1.18,
                scaleLimit: {
                  min: 1.18,
                  max: 2,
                },
                label: {
                  show: true,
    
                },
                itemStyle: {   //普通状态下样式
                  areaColor: '#d7effd',
                },
                emphasis: {   //悬停样式
                  itemStyle: {
                    scale: false,
                    areaColor: '#598AF7',
                    borderColor: '#FFF',
                  },
                },
              },

    第二步:series配置

    1.map的配置如下:

     series: [
                {
                  name: this.seriesName,
                  map: 'china',
                  geoIndex: 0,
                  formatter: function(val) {
                    var area_content = val.name + '-' + val.value
                    return area_content.split('-').join('
    ')
                  }, //让series 中的文字进行换行
                  data: data,
                },
             ]  

       默认情况下,map series 会自己生成内部专用的 geo 组件。但是也可以用这个 geoIndex 指定一个geo组件。这样的话,map 和 其他 series(例如散点图)就可以共享一个geo组件了。

         注意:当设定了 geoIndex 后,series-map.map 属性,以及 series-map.itemStyle等样式配置不再起作用,而是采用geo中的相应属性。

    2. 散点图的配置如下:

     series: [
                  ...
               {
                  type: 'scatter',
                  coordinateSystem: 'geo',
                  data: this.convertData(data),
                  symbolSize: 17,
                  symbol: this.redImage,//自定义图标引入
    
                },
             ]   
      data() {
        return {
          redImage: 'image://' + require('@/assets/img/red-flag2.png'),
          geoCoordMap: {
            广西: [108.33, 23.84],
            河南: [113.65, 34.76],
            黑龙江: [127.63, 48],
            湖南: [112.2, 28.9],
            山东: [118.05, 36.8],
            天津: [117.5, 39.6],
          },
        }
      },
      methods: {
        convertData(data) {
          var res = []
          for (var i = 0; i < data.length; i++) {
            var geoCoord = this.geoCoordMap[data[i].name]
            if (geoCoord) {
              res.push({
                name: data[i].name,
                id: data[i].id,
                value: geoCoord.concat(data[i].value),
                percentage: data[i].percentage,
              })
            }
          }
          return res
         },
      }

            散点图可以应用在直角坐标系,极坐标系,地理坐标系上。直角坐标系上的散点图可以用来展现数据的 x,y 之间的关系,如果数据项有多个维度,其它维度的值可以通过不同大小的 symbol 展现成气泡图,也可以用颜色来表现。

           将coordinateSystem的值设置为geo,指定选用地理坐标系组件。

           symbol表示标记的图形,文档中ECharts 提供的标记类型包括'circle', 'rect', 'roundRect', 'triangle', 'diamond',  'arrow'等,但是我们可以自己设置图片,上面代码中我们就是引入了自定义的图片。

  • 相关阅读:
    作业要求 20181009-9 每周例行报告
    20180925-1 每周例行报告
    作业要求20180925-4 单元测试,结对
    作业要求 20180925-3 效能分析
    作业要求 20180925-6 四则运算试题生成
    20180925-7 规格说明书-吉林市2日游
    20180925-5 代码规范,结对要求
    20170925-2 功能测试
    第二周例行报告
    作业要求 20180918-1 词频统计 卢帝同
  • 原文地址:https://www.cnblogs.com/jiayuexuan/p/15393319.html
Copyright © 2011-2022 走看看