Echarts 结合百度地图使用总结

Posted canjianerguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Echarts 结合百度地图使用总结相关的知识,希望对你有一定的参考价值。

注:echarts结合china.js使用效果并不好,china.js是矢量图,显示的地图只有一个轮廓,所以正常会选择百度地图或者其他地图配合使用。

一.代码如下(参考网上,并加入自己的整理)

     function initHotMap(dataArr, domId, title){
          $.get("${ctxStatic}/resources/js/bmap/dataTool.js",function(){
          $.get(‘${ctxStatic}/resources/js/bmap/bmap.min.js‘, function () {
              setTimeout(function(){}, 3000);
              var hotMap = echarts.init(document.getElementById(domId));
               
              // 最终需整理成的数据格式 :[{name:‘nanjing‘,value : [118.77801148172465,32.03102850827321,80]}]

                 var option = {
                      title: {
                          text: title,
                          left: ‘center‘
                      },
                      tooltip : {
                          trigger: ‘item‘,
                          formatter:function(v){
                              return ‘‘;
                          }
                      },
                      bmap: {
                          // 中心为南京
                          center: [118.725551,32.024621],
                          zoom: 16,
                          roam: true,
                          mapStyle: {
                              styleJson: [{
                                  ‘featureType‘: ‘water‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#d1d1d1‘
                                  }
                              }, {
                                  ‘featureType‘: ‘land‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#f3f3f3‘
                                  }
                              }, {
                                  ‘featureType‘: ‘railway‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘visibility‘: ‘off‘
                                  }
                              }, {
                                  ‘featureType‘: ‘highway‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#fdfdfd‘
                                  }
                              }, {
                                  ‘featureType‘: ‘highway‘,
                                  ‘elementType‘: ‘labels‘,
                                  ‘stylers‘: {
                                      ‘visibility‘: ‘all‘
                                  }
                              }, {
                                  ‘featureType‘: ‘arterial‘,
                                  ‘elementType‘: ‘geometry‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#fefefe‘
                                  }
                              }, {
                                  ‘featureType‘: ‘arterial‘,
                                  ‘elementType‘: ‘geometry.fill‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#fefefe‘
                                  }
                              }, {
                                  ‘featureType‘: ‘poi‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘visibility‘: ‘off‘
                                  }
                              }, {
                                  ‘featureType‘: ‘green‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘visibility‘: ‘all‘
                                  }
                              }, {
                                  ‘featureType‘: ‘subway‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘visibility‘: ‘off‘
                                  }
                              }, {
                                  ‘featureType‘: ‘manmade‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#d1d1d1‘
                                  }
                              }, {
                                  ‘featureType‘: ‘local‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#d1d1d1‘
                                  }
                              }, {
                                  ‘featureType‘: ‘arterial‘,
                                  ‘elementType‘: ‘labels‘,
                                  ‘stylers‘: {
                                      ‘visibility‘: ‘all‘
                                  }
                              }, {
                                  ‘featureType‘: ‘boundary‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#fefefe‘
                                  }
                              }, {
                                  ‘featureType‘: ‘building‘,
                                  ‘elementType‘: ‘all‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘#d1d1d1‘
                                  }
                              }, {
                                  ‘featureType‘: ‘label‘,
                                  ‘elementType‘: ‘labels.text.fill‘,
                                  ‘stylers‘: {
                                      ‘color‘: ‘purple‘
                                  }
                              }]
                          }
                      },
                      series : [
                           {
                              type: ‘scatter‘,
                              coordinateSystem: ‘bmap‘,
                              data: dataArr,
                              symbolSize: function (val) {
                                  return val[2] ;
                              },
                              label: {
                                  normal: {
                                      formatter: ‘{b}‘,
                                      position: ‘right‘,
                                      show: false
                                  },
                                  emphasis: {
                                      show: true
                                  }
                              },
                              itemStyle: {
                                  normal: {
                                      color: ‘purple‘
                                  }
                              }
                          }, 
                          {
                              type: ‘effectScatter‘,
                              coordinateSystem: ‘bmap‘,
                              data:  dataArr.sort(function(a, b){
                                  return b.value[20] - a.value[20];
                              }).slice(0,5),
                              symbolSize: function (val) {
                                  return val[2] ;
                              },
                              showEffectOn: ‘render‘,
                              rippleEffect: {
                                  brushType: ‘stroke‘
                              },
                              hoverAnimation: true,
                              label: {
                                  normal: {
                                      formatter: ‘{b}‘,
                                      position: ‘right‘,
                                      show: true
                                  }
                              },
                              itemStyle: {
                                  normal: {
                                      color: ‘purple‘,
                                      shadowBlur: 10,
                                      shadowColor: ‘#333‘
                                  }
                              },
                              zlevel: 1
                          } 
                      ]
                  };
              
              hotMap.setOption(option);
              
                // 添加百度地图插件
                var bmap = hotMap.getModel().getComponent(‘bmap‘).getBMap();
                bmap.addControl(new BMap.MapTypeControl());
                bmap.addControl(new BMap.NavigationControl());
                bmap.disableScrollWheelZoom();
          });
          });
      }

二。常见问题整理

  1.地图显示不出来,或者只显示南沙群岛,而且浏览器控制台报错关于bmap.js加载等问题,是因为页面bmap.js引入方式错误的原因

    解决方案:(1)首先要在页面首部引入百度地图        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak="></script>    其中ak的值需要自行到百度地图官网申请。

         (2)通过  $.get(‘${ctxStatic}/resources/js/bmap/bmap.min.js‘, function () {   ///处理逻辑  });这种方式引入bmap.min.js文件,即使使用china.js的时候也需要这种方式,否则会因为加载不全就执行产生报错。

         (3)如果想在echarts中操作百度地图,比如加上百度地图的相关控件,可以通过   var bmap = hotMap.getModel().getComponent(‘bmap‘).getBMap();  这种方式获取地图对象,然后就可以随心所欲的操作了,百度地图相关操作方法可以百度地图API。

以上是关于Echarts 结合百度地图使用总结的主要内容,如果未能解决你的问题,请参考以下文章

如何将echarts和百度地图结合

Echarts-百度地图省分着色

echarts+百度地图API

echarts结合百度地图怎么能实现动态刷新,而不需要刷新整个页面

记一次Echarts地图百度坐标使用

数据视化Echarts+百度地图API实现市县区级下钻