1. 程式人生 > >使用Echart搭配百度地圖建立某一地區熱點圖的注意點

使用Echart搭配百度地圖建立某一地區熱點圖的注意點

使用Echart搭配百度地圖建立的熱點圖,為網友免費做的demo,細節沒有調整.記錄一下寫的過程.

效果圖:

程式碼:

<!DOCTYPE html>
<html style="height: 100%">
<head>
    <meta charset="utf-8">
    <style type="text/css">
        html, body {
            height: 100%;
            width: 100%;
        }
    </style>
</head>
<body style="height: 100%; margin: 0">
<div id="container"
     style="height: 600px;width: 600px;margin: 20px auto;position: relative;top: 50%;margin-top: -300px"></div>
<script type="text/javascript" src="http://echarts.baidu.com/examples/vendors/jquery/jquery.js"></script>
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-gl/echarts-gl.min.js"></script>
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-stat/ecStat.min.js"></script>
<script type="text/javascript"
        src="http://echarts.baidu.com/gallery/vendors/echarts/extension/dataTool.min.js"></script>
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/map/js/china.js"></script>
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/map/js/world.js"></script>
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=NqENdsDTP1QxhUn047Z7C6Tfsgv5X1mj"></script>
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/extension/bmap.min.js"></script>
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/simplex.js"></script>
<script type="text/javascript">
  var dom = document.getElementById('container')
  var myChart = echarts.init(dom)
  var app = {}
  option = null
  app.title = '熱力圖與百度地圖擴充套件'
  var points = [
    [114.295024, 22.632375],
    [114.295124, 22.632475],
    [114.295224, 22.632575],
    [114.295324, 22.632675],
    [114.295424, 22.632775],
    [114.295524, 22.632875],
    [114.295624, 22.632975],
    [114.295724, 22.633075],
    [114.295824, 22.633175],
    [114.295924, 22.633275],
    [114.296024, 22.633375],
    [114.296124, 22.633475],
    [114.296224, 22.633575],
    [114.296324, 22.633675],
    [114.296424, 22.633775],
    [114.296524, 22.633875],
    [114.296624, 22.633975],
    [114.296724, 22.634075],
    [114.296824, 22.634175],
    [114.296924, 22.634275],
    [114.297024, 22.634375],
    [114.297124, 22.634475],
    [114.297224, 22.634575],
    [114.297324, 22.634675],
    [114.297424, 22.634775],
    [114.297524, 22.634875],
    [114.297624, 22.634975],
    [114.297724, 22.635075],
    [114.297824, 22.635175],
    [114.297924, 22.635275],
    [114.298024, 22.635375],
    [114.298124, 22.635475],
    [114.298224, 22.635575],
    [114.298324, 22.635675],
    [114.298424, 22.635775],
    [114.298524, 22.635875],
    [114.298624, 22.635975],
    [114.298724, 22.636075],
    [114.298824, 22.636175],
    [114.298924, 22.636275],
    [114.299024, 22.636375],
    [114.299124, 22.636475],
    [114.299224, 22.636575],
    [114.299324, 22.636675],
    [114.299424, 22.636775],
    [114.299524, 22.636875],
    [114.299624, 22.636975],
    [114.299724, 22.637075],
    [114.299824, 22.637175],
    [114.299924, 22.637275]]
  myChart.setOption(option = {
    animation: false,
    bmap: {
      center: [114.294924, 22.632275],
      zoom: 15,
      roam: false,
      mapStyle: {style: 'midnight'},
      enableMapClick:false
    },
    visualMap: {
      show: false,
      top: 'top',
      min: 0,
      max: 5,
      seriesIndex: 0,
      calculable: false,
      inRange: {
        color: ['blue', 'blue', 'green', 'yellow', 'red']
      }
    },
    series: [{
      type: 'heatmap',
      coordinateSystem: 'bmap',
      data: points,
      pointSize: 5,
      blurSize: 6
    }]
  })

  var markerDataArr = [
    {num: 1, point: [114.294924, 22.632275], imgurl: '', text: '東部華僑城'},
    {num: 2, point: [114.295031, 22.624567], imgurl: '', text: '東部華僑城大峽谷'},
    {num: 3, point: [114.309861, 22.614975], imgurl: '', text: '茶溪谷大峽谷'},
    {num: 4, point: [114.30691, 22.623766], imgurl: '', text: '華僑酒店'},
    {num: 6, point: [114.312242, 22.610332], imgurl: '', text: '華僑城總站'},
    {num: 7, point: [114.30165, 22.614285], imgurl: '', text: '東部華僑城天麓'},
    {num: 8, point: [114.284623, 22.636045], imgurl: '', text: '茵特拉根會議中心'},
    {num: 9, point: [114.286962, 22.638202], imgurl: '', text: '東部華僑城茶溪谷'},
    {num: 10, point: [114.283761, 22.647719], imgurl: '', text: '三洲田水庫'}
  ]

  if (!app.inNode) {
    // 新增百度地圖外掛
    var bmap = myChart.getModel().getComponent('bmap').getBMap()
    // bmap.setEnableMapClick('false')
    //MapOptions{ enableMapClick:false}
    var myIcon = new BMap.Icon('./0.png', new BMap.Size(42, 56))
    for (var i = 0; i < markerDataArr.length; i++) {
      var item = markerDataArr[i]
      var pointItem = new BMap.Point(item.point[0], item.point[1])
      var opts = {
        position: pointItem,    // 指定文字標註所在的地理位置
        offset: new BMap.Size(-30, 30)    //設定文字偏移量
      }
      var label = new BMap.Label(item.text, opts)  // 建立文字標註物件
      label.setStyle({
        color: '#fff',
        backgroundColor: 'transform',
        border: 'none',
        fontSize: '12px',
        fontFamily: '微軟雅黑'
      })
      var mapMaker = new BMap.Marker(pointItem, {icon: myIcon})
      bmap.addOverlay(mapMaker)
      bmap.addOverlay(label)
    }
  }
</script>
</body>
</html>

程式碼解釋及注意點:

  1. 搭配地圖外掛需要引入相應的庫
  2. 使用
    var bmap = myChart.getModel().getComponent('bmap').getBMap()  // 獲取百度地圖物件 從而使用地圖api
  3. 多查API,對比官方給出的例子,不是太難的功能都能做出的出來