echarts map地图添加背景图

给map地图添加了一个阴影3d的效果,添加一张背景图,给人感觉有3d的效果

具体配置如下:
html代码模块:

 <div class="echart_img" style="position: fixed; visibility: hidden;"></div>
 <div id="map"></div>

在mounted方法里面给地图添加背景图

 mounted() {
    let mg = require("../../../../images/jsc/map.png")
    this.domImg = document.createElement('img')
    this.domImg.style.height = this.domImg.height = this.domImg.width = this.domImg.style.width = '7000px'
    this.domImg.src = mg
    document.querySelector('.main-map .echart_img').appendChild(this.domImg)
    setTimeout(() => {
      this.initMap();
    }, 500)
  },

echarts options配置如下:

var chart = this.echarts.init(document.getElementById("map"));
      var option = {
        grid: {
          top: '-20%',
          left: '0%'
        },
        geo: [
          {
            map: 'GD',
            aspectScale: 0.75,
            zoom: 0.65, // 比例调整
            layoutCenter: ['50%', '52%'],
            layoutSize: '100%',
            silent: true,
            roam: false,
            itemStyle: {
              normal: {
                areaColor: 'rgb(37, 104, 188)',
                borderColor: 'rgb(33, 91, 167)',
                borderWidth: 1
              },
              emphasis: {
                areaColor: '#2AB8FF',
                borderWidth: 0,
                color: 'green',
                label: {
                  show: false
                }
              }
            },
          }
        ],
        series: [
          {
            type: "map",
            map: "GD",
            roam: false, //是否开启鼠标缩放和平移漫游
            animationDurationUpdate: 0,
            zoom: 0.8,
            layoutSize: "100",
            label: {
              normal: {
                show: true,
                fontSize: 14,
                color: "#fff",
              },
              emphasis: {
                color: "#fff",
              },
            },
            itemStyle: {
              normal: {
                areaColor: {
                  image: this.domImg,
                  repeat: "repeat-x"
                },
                borderColor: "#678BBB", //省份边框颜色
                borderWidth: 2, // 省份边框宽度
                shadowBlur: 0,
                shadowOffsetX: 0,
                shadowOffsetY: 0
              },
              emphasis: {
                areaColor: {
                  type: 'linear',
                  x: 0,
                  y: 0,
                  x2: 0,
                  y2: 1,
                  colorStops: [{
                    offset: 0, color: 'rgba(45, 124, 200, 1)' // 渐变起始颜色
                  }, {
                    offset: 1, color: 'rgba(75, 175, 247, 1)' // 渐变结束颜色
                  }]
                },
                borderColor: "#fff", //省份边框颜色
                borderWidth: 1, // 高亮时的边框宽度
              },
            },
            select: {
              label: {
                show: true,
                color: "#fff",
              },
              itemStyle: {
                areaColor: "#123972", // 高亮时候地图显示的颜色
                borderWidth: 0, // 高亮时的边框宽度
              },
            },
          },
        ],
      };

      // 使用刚指定的配置项和数据显示图表
      chart.setOption(option);

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

ECharts地图组件中添加背景图片并使其位置与地图同步,通常需要通过一些自定义技巧来实现,因为ECharts本身并不直接支持这种功能。你可以采取以下步骤: 1. 首先,创建一个echarts实例,并加载地图数据。 ```javascript var mapChart = echarts.init(document.getElementById('map')); mapChart.setOption({ geo: { // ...地图配置... } }); ``` 2. 加载背景图片作为单独的图像元素,并设置其初始位置。例如,在地图上某个固定点的位置(经纬度)显示背景图。这可能需要你自己计算出地图上的相应像素坐标。 ```html <img id="background" src="your-background-image.jpg"> ``` ```javascript document.getElementById('background').style.left = yourMapPixelX + 'px'; document.getElementById('background').style.top = yourMapPixelY + 'px'; ``` 3. 使用`echarts.util.restoreDom`函数监听地图的`click`事件,当用户点击地图时,获取点击位置的经纬度,然后更新背景图片的位置。 ```javascript mapChart.on('click', function (params) { var coord = params.position; // 获取点击的经纬度 updateBackgroundPosition(coord); }); function updateBackgroundPosition(coord) { var pixelCoord = mapChart.convertFromGeographic(coord); // 将经纬度转换为屏幕像素坐标 document.getElementById('background').style.left = pixelCoord.x + 'px'; document.getElementById('background').style.top = pixelCoord.y + 'px'; } ``` 请注意,这种方法并不是官方推荐的方式,如果地图有动态缩放或拖拽功能,你需要处理各种复杂情况,如背景图片在地图边界处的无缝衔接。如果你需要更精确、稳定的解决方案,可能需要结合其他库(如Pixi.js)来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值