草庐IT

echart绘制中国地图及各省份地图

下页、再停留 2023-03-28 原文

示例:

 

 地图文件下载地址:https://gitcode.net/mirrors/fuhang-lm/echarts?utm_source=csdn_github_accelerator&from_codechina=yes

 

这里以北京市地图为例,如果是其他省份或者全国,下载对应的js文件并引入系统,需要替换一下两处,换成对应的省份:

var mapName = '北京',
geo: { map: '北京',}

 名字命名在对应的js文件里,需要写对,地理坐标js文件也有,复制出来就可以了

 

html

<div id="chart_map" style="width:100%;height:610px;"></div>

<div id="chart_bjmap" style="width:100%;height:610px;"></div>


...省略...


 <script src="/home/js/echarts.min.js"></script>
  <script src="/home/js/beijing.js"></script>
<script src="/home/js/china.js"></script>

 

js,放射状和扩散圈

//   北京地图
  function echart_bjmap() {
        var rs = [[{"name":"朝阳区"},{"name": '朝阳区', "value": 32}],[{"name": "海淀区"},{"name": '海淀区', "value": 222}]]
        console.log(rs)
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('chart_bjmap'));
        var mapName = '北京'
        var data = []
        var toolTipData = [];

        /*获取地图数据*/
        myChart.showLoading();
        myChart.hideLoading();
        var geoCoordMap = {
          东城区: [116.418757,39.917544],
          西城区: [116.366794,39.915309],
          朝阳区: [116.486409,39.921489],
          丰台区: [116.286968,39.863642],
          石景山区: [116.195445,39.914601],
          海淀区: [116.310316,39.956074],
          门头沟区: [116.105381,39.937183],
          通州区: [116.658603,39.902486],
          顺义区: [116.653525,40.128936],
          昌平区: [116.235906,40.218085],
          大兴区: [116.338033,39.728908],
          怀柔区: [116.637122,40.324272],
          平谷区: [117.112335,40.144783]
        };

        var GZData = rs  //数据
        var convertData = function (data) {
          var res = [];
          for (var i = 0; i < data.length; i++) {
            var dataItem = data[i];
            var fromCoord = geoCoordMap[dataItem[0].name];
            var toCoord = geoCoordMap[dataItem[1].name];
            if (fromCoord && toCoord) {
              res.push({
                fromName: dataItem[0].name,
                toName: dataItem[1].name,
                coords: [fromCoord, toCoord]
              });
            }
          }
          return res;
        };

        var color = ['#c5f80e'];
        var series = [];
        [
          ['', GZData]
        ].forEach(function (item, i) {
          series.push({
            name: item[0],
            type: 'lines',
            zlevel: 2,
            symbol: ['none', 'arrow'],
            symbolSize: 10,
            effect: {
              show: true,
              period: 6,
              trailLength: 0,
              symbol: 'arrow',
              symbolSize: 5
            },
            lineStyle: {
              normal: {
                color: color[i],
                width: 1,
                opacity: 0.6,
                curveness: 0.2
              }
            },
            data: convertData(item[1])
          }, {
            name: item[0],
            type: 'effectScatter',
            coordinateSystem: 'geo',
            zlevel: 2,
            rippleEffect: {
              brushType: 'stroke'
            },
            label: {
              normal: {
                show: true,
                position: 'right',
                formatter: '{b}'
              }
            },
            symbolSize: function (val) {
              return val[2] / 8;    //扩散圈的大小
            },
            itemStyle: {
              normal: {
                color: color[i]
              }
            },
            data: item[1].map(function (dataItem) {
              return {
                name: dataItem[1].name,
                value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
              };
            })
          });
        });

        option = {
          tooltip: {
            trigger: 'item',
            backgroundColor: 'rgba(166, 200, 76, 0.82)',
            borderColor: '#FFFFCC',
            showDelay: 0,
            hideDelay: 0,
            enterable: true,
            transitionDuration: 0,
            extraCssText: 'z-index:100',
            formatter: function (params, ticket, callback) {
              //根据业务自己拓展要显示的内容
              if (params.seriesType == "effectScatter") {
                var res = "";
                var name = params.name;
                var value = params.value[params.seriesIndex + 1];
                res = "<span style='color:#fff;'>" + name + "</span><br/>医院数:" + value;
                return res;
              } else if (params.seriesType == "scatter") {
                var res = "";
                var name = params.name;
                var value = params.data.value[2];
                res = "<span style='color:#fff;'>" + name + "</span><br/>医院数:" + value;
                return res;
              }  else {
                return name;
              }

            }
          },
          geo: {
            map: '北京',
            label: {
              emphasis: {
                show: false
              }
            },
            roam: true,
            itemStyle: {
              normal: {
                borderColor: 'rgba(147, 235, 248, 1)',
                borderWidth: 1,
                areaColor: {
                  type: 'radial',
                  x: 0.5,
                  y: 0.5,
                  r: 0.8,
                  colorStops: [{
                    offset: 0,
                    color: 'rgba(175,238,238, 0)' // 0% 处的颜色
                  }, {
                    offset: 1,
                    color: 'rgba(47,79,79, .1)' // 100% 处的颜色
                  }],
                  globalCoord: false // 缺省为 false
                },
                shadowColor: 'rgba(128, 217, 248, 1)',
                // shadowColor: 'rgba(255, 255, 255, 1)',
                shadowOffsetX: -2,
                shadowOffsetY: 2,
                shadowBlur: 10
              },
              emphasis: {
                areaColor: '#389BB7',
                borderWidth: 0
              }
            }
          },

          series: series
        };

        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
        window.addEventListener("resize", function () {
          myChart.resize();
        });
  }

 

全国地图

 

 

// echart_map 地图
function echart_map() {

    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('chart_map'));

    var rs = [[{"name":"朝阳区"},{"name": '朝阳区', "value": 32}],[{"name": "海淀区"},{"name": '海淀区', "value": 222}]]
    
    var mapName = 'china'
    var data = []
    var toolTipData = [];

    /*获取地图数据*/
    myChart.showLoading();
    var mapFeatures = echarts.getMap(mapName).geoJson.features;
    myChart.hideLoading();

    var geoCoordMap = {
      甘肃省: [104.35851932200904, 35.40123159456249],
      青海省: [98.77753991113792, 36.53004669909589],
      广西: [107.99655439706783, 23.735673935703687],
      贵州省: [106.25837527859625, 26.505908922458815],
      重庆市: [106.59396202962392, 29.737597968171656],
      北京市: [116.35679568867022, 40.25702627244448],
      福建省: [117.7802840500002, 26.617417710000097],
      安徽省: [116.62978356256133, 32.13288035704295],
      广东省: [112.38982181100027, 23.09589264500019],
      西藏: [91.67781334810746, 29.081958115774455],
      新疆: [86.36633990098284, 42.722922619141826],
      海南省: [109.68506920700003, 19.15330638200004],
      宁夏: [106.65764611237813, 37.85293528913229],
      陕西省: [108.11004520082531, 33.38519318281914],
      山西省: [111.72104861939818, 36.35586904611952],
      湖北省: [111.37402265791923, 31.417539985382007],
      湖南省: [110.902381220417, 28.066339830418826],
      四川省: [103.4985530948494, 30.67739736629541],
      云南省: [100.29696333219198, 25.721744899807277],
      河北省: [115.64873628100008, 38.04465116700004],
      河南省: [113.46032230023388, 34.15787079530108],
      辽宁省: [123.35254967500032, 40.48240794500012],
      山东省: [118.28029535679576, 36.076608741968954],
      天津市: [117.65956331411487, 39.21855181203543],
      江西省: [115.17473025869447, 27.407869370774904],
      江苏省: [120.34094130672383, 32.49093327643905],
      上海市: [121.64094130672383, 31.02093327643905],
      浙江省: [120.28535242000021, 29.10194563100012],
      吉林省: [126.25284846284336, 43.46916859112878],
      内蒙古: [108.41327478505161, 40.317334824121446],
      黑龙江省: [131.25284846284336, 46.46916859112878],
      香港: [114.0517684250002, 22.32851797100014],
      澳门: [111.95860436300031, 21.8],
      台湾: [120.63599694100014, 23.222805080000114]
    };

    var GZData = rs

    var convertData = function (data) {
      var res = [];
      for (var i = 0; i < data.length; i++) {
        var dataItem = data[i];
        var fromCoord = geoCoordMap[dataItem[0].name];
        var toCoord = geoCoordMap[dataItem[1].name];
        if (fromCoord && toCoord) {
          res.push({
            fromName: dataItem[0].name,
            toName: dataItem[1].name,
            coords: [fromCoord, toCoord]
          });
        }
      }
      return res;
    };

    var color = ['#c5f80e'];
    var series = [];
    [
      ['', GZData]
    ].forEach(function (item, i) {
      series.push({
        name: item[0],
        type: 'lines',
        zlevel: 2,
        symbol: ['none', 'arrow'],
        symbolSize: 10,
        effect: {
          show: true,
          period: 6,
          trailLength: 0,
          symbol: 'arrow',
          symbolSize: 5
        },
        lineStyle: {
          normal: {
            color: color[i],
            width: 1,
            opacity: 0.6,
            curveness: 0.2
          }
        },
        data: convertData(item[1])
      }, {
        name: item[0],
        type: 'effectScatter',
        coordinateSystem: 'geo',
        zlevel: 2,
        rippleEffect: {
          brushType: 'stroke'
        },
        label: {
          normal: {
            show: true,
            position: 'right',
            formatter: '{b}'
          }
        },
        symbolSize: function (val) {
          return val[2] / 8;    //扩散圈的大小
        },
        itemStyle: {
          normal: {
            color: color[i]
          }
        },
        data: item[1].map(function (dataItem) {
          return {
            name: dataItem[1].name,
            value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
          };
        })
      });
    });

    option = {
      tooltip: {
        trigger: 'item',
        backgroundColor: 'rgba(166, 200, 76, 0.82)',
        borderColor: '#FFFFCC',
        showDelay: 0,
        hideDelay: 0,
        enterable: true,
        transitionDuration: 0,
        extraCssText: 'z-index:100',
        formatter: function (params, ticket, callback) {
          //根据业务自己拓展要显示的内容
          if (params.seriesType == "effectScatter") {
            var res = "";
            var name = params.name;
            var value = params.value[params.seriesIndex + 1];
            res = "<span style='color:#fff;'>" + name + "</span><br/>网格员数:" + value;
            return res;
          } else if (params.seriesType == "scatter") {
            var res = "";
            var name = params.name;
            var value = params.data.value[2];
            res = "<span style='color:#fff;'>" + name + "</span><br/>网格员数:" + value;
            return res;
          }  else {
            return name;
          }

        }
      },
      geo: {
        map: 'china',
        label: {
          emphasis: {
            show: false
          }
        },
        roam: true,
        itemStyle: {
          normal: {
            borderColor: 'rgba(147, 235, 248, 1)',
            borderWidth: 1,
            areaColor: {
              type: 'radial',
              x: 0.5,
              y: 0.5,
              r: 0.8,
              colorStops: [{
                offset: 0,
                color: 'rgba(175,238,238, 0)' // 0% 处的颜色
              }, {
                offset: 1,
                color: 'rgba(47,79,79, .1)' // 100% 处的颜色
              }],
              globalCoord: false // 缺省为 false
            },
            shadowColor: 'rgba(128, 217, 248, 1)',
            // shadowColor: 'rgba(255, 255, 255, 1)',
            shadowOffsetX: -2,
            shadowOffsetY: 2,
            shadowBlur: 10
          },
          emphasis: {
            areaColor: '#389BB7',
            borderWidth: 0
          }
        }
      },

      series: series
    };

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
    window.addEventListener("resize", function () {
      myChart.resize();
    });
}

 

有关echart绘制中国地图及各省份地图的更多相关文章

  1. ruby-on-rails - 使用 gmaps4rails 动态加载谷歌地图标记 - 2

    如何只加载map边界内的标记gmaps4rails?当然,在平移和/或缩放后加载新的。与此直接相关的是,如何获取map的当前边界和缩放级别? 最佳答案 我是这样做的,我只在用户完成平移或缩放后替换标记,如果您需要不同的行为,请使用不同的事件监听器:在你看来(index.html.erb):{"zoom"=>15,"auto_adjust"=>false,"detect_location"=>true,"center_on_user"=>true}},false,true)%>在View的底部添加:functiongmaps4rail

  2. 最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到 - 2

    技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进

  3. ruby - 在 Ruby 中绘制点和矩形 - 2

    我正在寻找一种简单的方法来绘制大约10个点和矩形,以便能够查看我的算法哪里出了问题。我查看了gnuplot,但似乎绘制矩形特别糟糕。 最佳答案 SVG(MDNTutorial)是一种非常简单的基于文本(XML)的格式,您可以使用Ruby轻松生成它,而无需任何SVG库,并可以在任何现代Web浏览器中查看。这是一个示例:通过字符串插值的SVG点points=(0..5).map{[rand(100)-50,rand(100)-50]}puts#{points.map{|x,y|""}.join("\n")}ENDSVG输出:http:/

  4. Nature Neuroscience:高家红团队首次发布中国人脑连接组计划研究成果及其大数据资源 - 2

    人类生活在充满多样性的世界里。长久以来的研究发现,人类的脑与行为受到基因、环境和文化及其相互作用的塑造,然而这种影响发生的机制始终缺乏系统性探索与研究。近年来,前沿神经影像技术方法飞速进步,推动着多模态脑成像大数据集的产生和融合性探索,并让学界得以深入探究人脑宏观结构与功能连接组架构,为包括上述主题在内的许多有趣而重要的科学问题带来了新的启发和思路。2022年12月20日,北京大学物理学院、IDG麦戈文脑科学研究所高家红团队在《NatureNeuroscience》在线发表了题为“IncreasingdiversityinconnectomicswiththeChineseHumanConne

  5. ruby-on-rails - 谷歌地图、Ruby on Rails、用一个标记缩放级别 - 2

    我正在使用apneadiving/Google-Maps-for-Rails添加googlemaps支持(感谢awesomegem)但是,我发现了一个小故障,这很可能是我的错。当有多个标记时,auto_zoom效果很好。但是,当只有一个标记时,它会放大到不漂亮的最大级别。“缩放”仅在auto_zoom为false时有效,所以这不是我想要的。因此您可以使用“maxZoom”,但现在用户无法手动放大超出该点,这不是我想要的。有解决办法吗?我的解释有道理吗?这是GoogleMapsAPI的限制吗?谢谢... 最佳答案 此行为是由于goog

  6. 中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年 - 2

    中国民用飞机制造行业市场现状规模及发展战略规划报告2021-2027年详情内容请咨询鸿晟信合研究院!【全新修订】:2022年2月【撰写单位】:鸿晟信合研究研究【报告目录】第1章:中国民用飞机制造行业发展综述1.1民用飞机制造行业概述1.1.1民用飞机的概念1.1.2飞机制造的概念1.1.3民用飞机的分类1.2民机制造行业周期特性1.2.1影响行业周期的因素(1)GDP增速分析(2)运量增量分析(3)飞机更替分析(4)航空公司获利水平1.2.2行业现阶段周期分析1.2.3行业现阶段景气分析1.3民机制造信息化分析1.3.1信息化技术应用状况分析(1)MDO技术应用分析(2)供应链协同研发分析(3

  7. 微信小程序使用腾讯地图 - 2

    微信小程序使用腾讯地图方法第一步:登录或者注册腾讯地图官方(地址:https://lbs.qq.com/)第二步:在创建sdk;创建方法:进入控制面板后显示创建sdk,点击之后输入名称和选择应用场景后点击设置选择web和小程序后输入APPID后点击确定就好。第二步:在微信小程序开发管理页面里面的域名管理里面输入合法域名:(https://apis.map.qq.com)就提交就可以。第三步:在腾讯地图官方网站上下载相关的sdk就可以。第四步:在下载的压缩文件夹里面找到(qqmap-wx-jssdk.js)文件引入到相关页面。引入方法:(index.js文件来描述)//引入进来腾讯地图的sdkv

  8. ruby - 无需插件即可在 Jekyll 中生成站点地图 - 2

    我刚刚将我的整个博客从WordPress转移到了Jekyll。还有一些地方需要修复,但我现在正面临这个问题。我无法在Jekyll中生成站点地图。我看到有几个插件可以为我完成这项工作。网站信息:通过Github页面托管的网站整个网站都是手工编码的——不使用JB或Octopress如果您能得到一些有关如何执行所需操作的指示,那就太好了。注意:这个问题与之前的问题不同。我不是在寻找使用_site的选项。 最佳答案 正如JohnDay所解释的那样在thisarticle,您可以在站点的根目录中创建一个包含以下内容的sitemap.xml文件

  9. 地图V.S.涉及承诺的flatmap - 2

    我在学习操作员mapV.S.flatmap如何将承诺添加到可观察的链中。然后我构建了4个不同版本的varsource如下。版本1,3按预期工作,而版本2、4奇怪地失败。我的代码也添加了=&gt;JSbin有人可以告诉我的代码怎么了吗?谢谢,xiconsole.clear();varp=newPromise((resolve,reject)=>{setTimeout(()=>{resolve('resolved!');},1000);});varsource=Rx.Observable.interval(200).take(3).flatMap(x=>Rx.Observable.timer(50

  10. ruby-on-rails - 用于谷歌地图集成的 Ruby on Rails gem - 2

    我想问一下,将googlemaps集成到ruby​​onrails应用程序中的最佳解决方案是什么。某个特定的gem值得吗?还是我们应该为它写下我们自己的观点?感谢任何输入。 最佳答案 仅供引用,我已经完成了gmaps4rails的稳定版本。参见:https://github.com/apneadiving/Google-Maps-for-Rails 关于ruby-on-rails-用于谷歌地图集成的RubyonRailsgem,我们在StackOverflow上找到一个类似的问题:

随机推荐