echars 3D地图为区域自定义颜色

3 篇文章 0 订阅

echars 3D地图为区域自定义颜色

问题

根据项目需求,我们要将下面省级地图中的个别市进行高亮(不同颜色)展示
在这里插入图片描述

延伸

首先跟大家介绍这个地图的展示方式:

  • 采用的是Vue框架中运用echarts
  • 地图采用的是geo3D和scatter3D

当然他的实现很简单

  • 首先我们要初始化echarts

    let echartsMap = this.$echarts.init(this.$refs.echartsMap);
    
  • 注册地图

    this.$echarts.registerMap('河南', dataGeoLocation);
    //后面的dataGeoLocation是我们下载下载的地图json文件然后引入到当前
    //组件中进行使用的,前面的河南则是我们要注册的地图
    
  • 设置option对象

    这里面的配置是根据自己的项目需求而来的 自己可以看文档都有详细的介绍

     this.echartsDataMap = {
                  visualMap: {
                    min: 0,
                    max: 500,
                    show: false,
                    inRange: {
                      color: ['#eac736', '#6EAFE3'].reverse()
                    },
    
                  },
                  globeRadius: 100,
                  globeOuterRadius: 100,
                  geo3D: {
                    map: mapName,
                    viewControl: {
                      center: [0, 0, 0],
                      alpha: 100,//上下旋转角度
                      beta: 10,//左右旋转角度
                      animation: true,//是否动画显示
                      animationDurationUpdate: 1000,//动画时间
                      distance: 130,//视角到主题距离
                      minBeta: -9999,//最小(左)旋转度数
                      maxBeta: 9999,//最多(右)旋转角度
                      autoRotate: false,
                      autoRotateDirection: 'cw',
                      autoRotateSpeed: 10,
    
                    },
                    splitArea:{
                      areaStyle:{
                        color:'red',
                      }
                    },
                    light: {
                      main: {
                        intensity: 1.2,
                        // color: 'transparent',
                        color: '#0D3867',
                        shadowQuality: 'ultra',
                        shadow: true,
                        alpha: 150,
                        beta: 200
                      },
                      ambient: {
                        intensity: 1,//环境光强度
                      },
                      ambientCubemap: {
                        diffuseIntensity: 1,
                        texture: ''
                      }
                    },
                    groundPlane: {
                      show: false
                    },
                    postEffect: {
                      enable: false
                    },
                    itemStyle: {
                      color: '#175096',
                      borderColor: 'rgb(62,215,213)',
                      opacity: 0.8,//透明度
                      borderWidth: 1
                    },
                    label: {
                      show: false
                    },
                    emphasis: {
                      label: {
                        show: false
                      },
                      itemStyle: {
                      }
                    },
                    silent: false, // 不响应和触发鼠标事件
                  },
                  series: [
                    {
                      type: 'scatter3D',
                      coordinateSystem: 'geo3D',
                      data: this.areaName
                      symbol: 'circle',
                      symbolSize: 0,
                      silent: false, // 不响应和触发鼠标事件
                      itemStyle: {
                        borderColor: '#fff',
                        borderWidth: 1
                      },
                      label: {
                        distance: 30,
                        show: true,
                        formatter: '{b}',
                        position: 'bottom',
                        bottom: '100',
                        textStyle: {
                          color: '#fff',
                          marginTop: 40,
                          fontSize: 16,
                          // fontWeight:'bold',
                          backgroundColor: 'transparent',
                        }
                      }
                    },
                    {
    
                      type: 'scatter3D',
                      coordinateSystem: 'geo3D',
                      data: pinArr,
                      color: '#6EAFE3',
                      symbol: 'pin',
                      symbolSize: 56,
                      symbolOffset: ['100%','50%','0'],
                      silent: false, // 不响应和触发鼠标事件
                      itemStyle: {
                        textAlign: 'center',
                        borderColor: '#6EAFE3',
                        backgroundColor: '#6EAFE3',
                        borderWidth: 0
                      },
                      zlevel: -10,
                      label: {
                        show: true,
                        distance: -45,
                        // left:-10,
                        position: 'bottom',
                        formatter: (data) => {
                          return data.value[3] + '     ';
                        },
                        textStyle: {
                          color: '#333',
                          backgroundColor: 'transparent'
                        }
                      }
                    },
    
                  ]
                };
    
  • 将option实例到我们的echarts上

    echartsMap.setOption(this.echartsDataMap);
    

解决问题

回头我们来看文章开头的问题,在百度上找到了很多方式,经过尝试好像没有什么效果,其实能够解决我也是根据网上提供的办法进行改进后就实现了

在这里插入图片描述
在这里插入图片描述

这是我在众多方式中找到的比较靠谱的一种方式,这里他说的是再geo中去添加regions即可,其实是这样的 但是我添加后没有效果,原因就是我的是geo3D而他的是geo,但是问题不大,经过我在三的尝试最终发现原来他们两个中仅仅是写法不一样

regions: [      
                {
                  name: '郑州市', /
                  itemStyle: {
                      color: 'green'
                  }
                },{
                  name: '南阳市', 
                  itemStyle: {
                      color: 'green'
                  }
                },{
                  name: '商丘市',
                  itemStyle: {
                      color: 'green'
                  }
                }]

我们只需要更正一下color的设置形式然后添加到我们的geo3D中就可以了
在这里插入图片描述

你学会了吗

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

几何心凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值