基于echarts的中国地图(同事实现的效果,用于记录和分享)

 

 

 

采用的是echarts平台的地图插件,现在官网已经取消了这一效果演示

首先,css样式的配置

.main {
        width: 100%;
        height: 100%;
        position: relative;
        background: #404A59;
    }

html的标签元素:

<div class="map" style="height:100%; width:100%" id="map"></div>

 

然后就是js的option配置:

let _this = this;
this.myChart = echarts.init(document.getElementById("map"));
this.option = {
  backgroundColor: "#404a59",
  title: {
    text: "中国地图",
    x: "center",
    textStyle: {
    color: "#fff"
  }
},
tooltip: {
  padding: 0,
  enterable: false,
  transitionDuration: 1,
  textStyle: {
    color: "#000",
     // 悬浮框中的字体颜色
   },
   formatter: function (params) {
   let html = ''
   _this.computerData.map((val,ind)=>{
       if(val.areaname == params.name){
        val.room.map((item,index)=>{
        html += `<div>名称:${item.name}  数量:${item.alarm}</div>`
    })                                    
  }
  })
  let tipHtml = ''
  tipHtml =
  '<div id="on" data="one" style="maxHeight:360px;maxWidth:400px;border-radius:5px;background:#fff;box-shadow:0 0 10px 5px #aaa">' +
  '<div style="height:50px;width:100%;border-radius:5px;background:#F8F9F9;border-bottom:1px solid #F0F0F0">' + '<span style="line-height:50px;margin-left:18px">' +
  params.name + "</div>" +'<div style="background:#fff;padding: 20px; overflow:hidden">' +html
"    </div>"+'</div>' ;
  //动态创建表格
  // setTimeout(function () {
 //   tooltipCharts(params.name);
  // }, 10);
                            return tipHtml;
                        }
                    },
                    geo: {
                        map: this.mapName,
                        roam: false,
                        label: {
                            emphasis: {
                                show: false
                            },
                            normal: {
                                // 
                                show: false,
                                textStyle: {
                                    color: '#fff' //省份字体颜色
                                }
                            }
                        },
                        itemStyle: {
                            normal: {
                                // 中国鸡的背景颜色
                                areaColor: "#323c48",
                                borderColor: "#111"
                            },
                            emphasis: {
                                // 鼠标移上地图的背景颜色
                                areaColor: "#2a333d"
                            }
                        }
                    },
                    series: [
                        {
                            roam: true,
                            type: 'scatter',
                            coordinateSystem: 'geo'
                        },
                        {
                            name: '散点',
                            type: 'scatter',
                            coordinateSystem: 'geo',
                            data: this.convertData(this.mapData),
                            label: {
                                normal: {
                                    formatter: '{b}',
                                    position: 'right',
                                    show: true
                                },
                                emphasis: {
                                    show: true
                                }
                            },
                            itemStyle: {
                                normal: {
                                    // 省份的文字颜色
                                    color: '#05C3F9'
                                }
                            }
                        },
                    ]
                }

点击地图上的省市区跳转

实现效果:点击地图上显示的省份时,判断是否为省级,省级的id都为2位数,如果是省就进入市级,如果是市级,就进入区级;如果是直辖市,进入区别

this.myChart.on("click", function (mapParams) {
   if(mapParams.data){
   _this.xc = mapParams.data.id
   _this.mapName = mapParams.data.id
   _this.mapList.map((val, index) => {
   // 小于200,省的id都为2位数,所以小于200,上一个人的偷懒写法
   if (val.properties.name == mapParams.name && val.properties.id < 200) {
      _this.getMapData()
      let province = require(`../../assets/map/geometryProvince/${val.properties.id}.json`)
      console.log(province)
      echarts.registerMap(mapParams.data.id, province);
      _this.mapList = province.features
      // 大于200,市的id都为6位数,所以大于等于200,判断是否是为市
      }else if(val.properties.name == mapParams.name && val.properties.id >= 200 && !_this.city){
       _this.getMapData()
       _this.city = true
       let province = require(`../../assets/map/geometryCouties/${val.properties.id}00.json`)
       console.log(_this.mapName);
       console.log(province)
       console.log(mapParams.data.id)
       echarts.registerMap(mapParams.data.id, province);
       _this.mapList = province.features
    }else if(val.properties.name == mapParams.name && val.properties.id >= 200 && _this.city){
       _this.$router.push({
           path: `/computerList/${val.properties.id}`,
       })
      }
    })
   }
 });

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于 Echarts 实现全国地图的酷炫动态效果,可以使用 Echarts 提供的动画和事件绑定功能,结合自己的业务需求进行实现。 下面是一个简单的示例代码: ```javascript // 创建一个 Echarts 实例 var myChart = echarts.init(document.getElementById('main')); // 定义地图的数据 var geoCoordMap = { '北京': [116.46, 39.92], '上海': [121.48, 31.22], '广州': [113.23, 23.16], '深圳': [114.07, 22.62], '杭州': [119.50, 30.25] }; // 定义某些城市的数据 var data = [ {name: '北京', value: 100}, {name: '上海', value: 200}, {name: '广州', value: 300}, {name: '深圳', value: 400}, {name: '杭州', value: 500} ]; // 定义地图的样式 var option = { // 地图的背景色 backgroundColor: '#404a59', // 地图的样式 geo: { map: 'china', label: { emphasis: { show: false } }, roam: true, itemStyle: { normal: { areaColor: '#323c48', borderColor: '#111' }, emphasis: { areaColor: '#2a333d' } } }, // 数据的样式 series: [ { name: '城市', type: 'effectScatter', coordinateSystem: 'geo', data: data.map(function (item) { return { name: item.name, value: geoCoordMap[item.name].concat([item.value]) }; }), symbolSize: function (val) { return val[2] / 10; }, showEffectOn: 'emphasis', rippleEffect: { brushType: 'stroke' }, hoverAnimation: true, label: { normal: { formatter: '{b}', position: 'right', show: true } }, itemStyle: { normal: { color: '#46bee9' } } } ] }; // 设置地图的配置项并渲染地图 myChart.setOption(option); // 地图的动态效果 myChart.on('click', function (params) { // 点击某个城市时的操作 console.log(params); }); ``` 通过设置不同的数据和样式,可以实现各种不同的地图效果。同时,Echarts 还提供了丰富的文档和示例,可以帮助开发者更好地理解和使用它的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值