echarts 实现中国地图的操作

根据项目的要求在闪点地图上展示,在上传文件时闪点的状态让点变大变颜色,下载文件的城市节点变一个颜色,静态时节点一个样式,也就时说一个地图上要有点的状态要有三种。想了好久修修改改终于实现了。请看最终效果图

map.png

点击相对应的城市节点弹出模态框显示这个城市的详细信息如下图。

map (2).png
  1. 首先下载:jquery.js , echarts.js , china.js文件;

  2. html代码:

    选定一个容器并且设置一个id;初始化图标的是填入设置的id;var myChartMaps = echarts.init(document.getElementById('mainPie'));
    最后 // 使用刚指定的配置项和数据显示图表 myChartMaps.setOption(optionMaps);。
    3.话不多说请看代码;
    var myChartMaps = echarts.init(document.getElementById('mainPie'));
    //配置地图
    myChartMaps.setOption({
    series: [{
    type: 'map',

             map: 'china'
         }]
     });
    
     // 给地图的每个小点添加点击事件
     myChartMaps.on('click', function (params) {
     console.log("this",params)
         if(params.componentType=="series"){
             thisModer(params);
             console.log("添加信息",params);
         }else if(params.componentType=="geo"){
         }
     }); 
    

    var rest
    $.ajax({
    url:"",
    type:"get",
    success:function(result){
    rest=result
    }
    })
    var city=rest.detail;
    // 静态
    var dataStatic=[];
    dataStatic.push({
    //填入数据
    name:city.YanCheng.city,_name:"YanCheng",value:100
    });

     // 下载
     // download
     var dataDownload = [];
    
     dataDownload.push({
    //填入数据
         name:city.ShenZhen.city,_name:"ShenZhen",value:100
     })
    

    // 上传
    // uploading
    var dataUploading=[];
    dataUploading.push({
    //填入数据
    name:city.ChengDou.city,_name:"ChengDou",value:100

     })
     var geoCoordMap = {
        "深圳":[114.0412,22.3712],
        "成都":[104.06,30.67],
        "南京":[118.46,32.03],
        "盐城":[119.57,32.85],
        "广州":[113.23,23.16],
        "北京":[115.25,39.26]
     };
    

//静态
var convertDataStatic= function (data) {

       var res = [];
       for (var i = 0; i < data.length; i++) {
           var geoCoord = geoCoordMap[data[i].name];
           if (geoCoord) {
               
               res.push({
                   city:data[i]._name,
                   name: data[i].name,
                   value: geoCoord.concat(data[i].value),
                   _data: city[data[i]._name]
               });
           }
       }
     
       return res;
    };

// 下载
var convertDownload = function (data) {

       var res = [];
       for (var i = 0; i < data.length; i++) {
           var geoCoord = geoCoordMap[data[i].name];
           if (geoCoord) {
               console.log("city[data[i]._name]",city[data[i]._name])
               res.push({
                   city:data[i]._name,
                   name: data[i].name,
                   value: geoCoord.concat(data[i].value),
                   _data: city[data[i]._name]
               });
           }
       }
     
       return res;
    };
    // 上传

    var convertUploading = function (data) {
        
        // console.log("cccccc22222",data)
       var res = [];
       for (var i = 0; i < data.length; i++) {
           var geoCoord = geoCoordMap[data[i].name];
           if (geoCoord) {
               console.log("city[data[i]._name]",city[data[i]._name])
               res.push({
                   city:data[i]._name,
                   name: data[i].name,
                   value: geoCoord.concat(data[i].value),
                   _data: city[data[i]._name]
               });
           }
       }
     
       return res;
    };
    

   
  

         
    optionMaps = {
   
         backgroundColor:"pink",
       title: {
        //    text: '节点详情',
        //    subtext: 'data from PM25.in',
        //    sublink: 'http://www.pm25.in',
           left: 'center',
           textStyle: {
               color: '#fff'
           }
       },
       tooltip : {
        trigger: 'item',
        // 设置悬浮框中的数据
        formatter: function(params) {
            console.log("thissssss",params)
            var res = params.data;
            var storss=(((res._data.stors)/1000)/1000)/1000;
            return "城市:"+ res.name +"
节点数:" + res._data.clusters + "
文件数:" + res._data.files + "
存储容量:" + storss + "GB
" //公网IP:"+ res._data.publicIP + //"
内网IP:" + res._data.intranet; }, // 设置提示框文字的样式 textStyle:{ color:"#00FF00", fontSize:20, }, }, geo: { map: 'china', label: { emphasis: { // 是否显示鼠标移入省份的时候显示出省份名称 show: true } }, roam: true, itemStyle: { normal: { // 设置地图的颜色 // areaColor: '#92FEFE', areaColor:"white", // #F6EFA6 borderColor: '#111' }, emphasis: { // 鼠标移入/高亮的时地图的颜色 areaColor: '#00A0EA' } }, }, series : [ { name: 'pm2.5', type: 'scatter', coordinateSystem: 'geo', data: convertDataStatic(dataStatic), symbolSize:15, label: { normal: { formatter: '{b}', position: 'right', show: true }, emphasis: { show: true } }, itemStyle: { normal: { // 设置小点的颜色 color: "#00A0EA", } } }, //上传 { name: '项目文件', type: 'effectScatter', coordinateSystem: 'geo', data:convertDownload(dataDownload), // 设置点的大小 symbolSize:20, showEffectOn: 'render', rippleEffect: { brushType: 'stroke' }, hoverAnimation: true, label: { normal: { // 显示地图小点上的文字 formatter: '{b}', // 显示的位置 position: 'right', // 设置小点字体的大小 fontSize:20, // 是否显示 show: true } }, itemStyle: { // 设置点的颜色 normal:{ color:"rgb(252, 93, 7)", // color:"rgba(255, 145, 0, 0.986)", } }, // effect : { // show: true, // shadowBlur : 0 // }, zlevel: 1 }, // 下载 { name: '项目文件', type: 'effectScatter', coordinateSystem: 'geo', data:convertUploading(dataUploading), // 设置点的大小 symbolSize:20, showEffectOn: 'render', rippleEffect: { brushType: 'stroke' }, hoverAnimation: true, label: { normal: { // 显示地图小点上的文字 formatter: '{b}', // 显示的位置 position: 'right', // 设置小点字体的大小 fontSize:20, effect : { show: true, shadowBlur : 0 }, // 是否显示 show: true } }, itemStyle: { // 设置点的颜色 normal:{ color:"rgba(0, 184, 0, 0.835)", } }, zlevel: 1 }, ] }; // 使用刚指定的配置项和数据显示图表。 myChartMaps.setOption(optionMaps);

你可能感兴趣的:(echarts 实现中国地图的操作)