echarts結(jié)合百度地圖使用--熱力圖

公司的項目要做一個熱力圖备蚓,本來想著是用百度地圖直接搞定饮焦,但是完成之后恩商,產(chǎn)品經(jīng)理說要有一個標(biāo)尺旺坠,根據(jù)顏色不同來區(qū)分熱力程度谚鄙,然后我就一直找插件熙宇,但是找了很久朦乏,也沒有找到找颓,于是就想到了echarts的熱力圖岳颇,結(jié)果一做下去照捡,踩了好多坑。

請大家耐心的看下去话侧,因為栗精,這篇文章應(yīng)該能解開你所有的疑惑。
我用的框架是vue-cli里面還要用到webpack所以就憑空增添了一點難度瞻鹏,請看分解

第一步悲立,既然要用到百度地圖肯定就要引入百度地圖了,首先申請密匙新博,
地址:http://lbsyun.baidu.com/index.php?title=jspopular

image.png

然后在你的index.html引入

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <!--引入百度地圖-->
    <script  type="text/javascript" 
              src="http://api.map.baidu.com/api?v=2.0&ak=DDLwA2CBFGHRpxFzFx3K5KnBQtHP4hte" ></script>
    <!--引入百度熱力圖-->
    <script type="text/javascript" src="http://api.map.baidu.com/library/Heatmap/2.0/src/Heatmap_min.js"></script>

    <script type="text/javascript" src=""></script>
    <title>official</title>

  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

引入后需要在webpack.base.conf.js里面添加

module.exports = {
...
externals: {
    "BMap": "BMap",
  },
...
}

第二步 引入echarts 關(guān)于如何引入echarts我已經(jīng)在我之前的文章寫過了级历,不會的同學(xué)可以去看下http://www.reibang.com/p/894b7969ed12
第三步 復(fù)制echarts的例子,http://gallery.echartsjs.com/editor.html?c=xSJNKs7EX

<template>
  <!--一定要給寬高叭披,不然會報錯寥殖,container沒有高度-->
  <div id="chart">
    echarts百度地圖
  </div>
</template>

<script>
  
  

  export default {
    data(){
      return {

      }
    },
    mounted(){
      let myChart = this.$echarts.init(document.getElementById('chart'));
      var uploadedDataURL = "/asset/get/s/data-1464248983149-HJ1jcQNX.json";

      $.getJSON(uploadedDataURL, function (data) {

        var points = [].concat.apply([], data.map(function (track) {
          return track.map(function (seg) {
            return seg.coord.concat([1]);
          });
        }));
        myChart.setOption({
          animation: false,
          bmap: {
            center: [120.13066322374, 30.240018034923],
            zoom: 14,
            roam: true
          },
          visualMap: {
            show: false,
            top: 'top',
            min: 0,
            max: 5,
            seriesIndex: 0,
            calculable: true,
            inRange: {
              color: ['blue', 'blue', 'green', 'yellow', 'red']
            }
          },
          series: [{
            type: 'heatmap',
            coordinateSystem: 'bmap',
            data: points,
            pointSize: 5,
            blurSize: 6
          }]
        });

        var bmap = myChart.getModel().getComponent('bmap').getBMap();
        bmap.addControl(new BMap.MapTypeControl());
      });


    },
    methods:{

    }
  }
</script>

<style>
 #chart{
   width: 100%;
   height: 100%;
 }
</style>

做到這一步的時候遇到坑了,
第一個是找不到/asset/get/s/data-1464248983149-HJ1jcQNX.json這個url涩蜘,404錯誤
第二個是$ is not defined嚼贡,這兩個放在一塊解決

先說出現(xiàn)這兩個錯誤的原因
第一個是跨域的問題,
第二個是沒有安裝jquery
這兩個問題搞的我很煩躁同诫,于是我就想直接把echarts demo上的文件放到本地

如何把echarts的數(shù)據(jù)放到本地粤策?
第一步 打開echarts demo鏈接
[http://gallery.echartsjs.com/editor.html?c=xSJNKs7EX](http://gallery.echartsjs.com/editor.html?c=xSJNKs7EX)
第二步 先按f12點擊network,點擊右上角的預(yù)覽误窖,我們會看到一堆請求
第三步 找到chart-iframe點擊展開叮盘,找到data-1464248983149-HJ1jcQNX.json,雙擊
ok,你會發(fā)現(xiàn)數(shù)據(jù)的json文件已經(jīng)下載下來了(我是用谷歌瀏覽器下載的)

下載完之后把數(shù)據(jù)復(fù)制到你的項目里霹俺,我是在components下新建了一個datas文件夾柔吼,放進(jìn)去,然后把名字改成baiduData.json
然后在我寫的地圖組件里面引入import baiduJSON from '../datas/baiduData'

<template>
 <!--一定要給寬高丙唧,不然會報錯愈魏,container沒有高度-->
  <div id="chart">
    echarts百度地圖
  </div>
</template>

<script>
 //引入json數(shù)據(jù)
  import baiduJSON from '../datas/baiduData'

  export default {
    data(){
      return {

      }
    },
    mounted(){
      let myChart = this.$echarts.init(document.getElementById('chart'));
      let pointsData = baiduJSON;//其實這一步是多余的
      //把數(shù)據(jù)處理成需要的格式,只是把數(shù)值都改成了1,具體項目可以根據(jù)自己實際來處理
      var points = [].concat.apply([], pointsData.map(function (track) {
        return track.map(function (seg) {
          return seg.coord.concat([1]);
        });
      }));

let option;
myChart.setOption(option = {
  animation: false,
  bmap: {
    center: [120.13066322374, 30.240018034923],
    zoom: 14,
    roam: true
  },
  visualMap: {
    show: true,
    top: 'top',
    min: 0,
    max: 5,
    seriesIndex: 0,
    calculable: true,
    inRange: {
      color: ['blue', 'blue', 'green', 'yellow', 'red']
    }
  },
  series: [{
    type: 'heatmap',
    coordinateSystem: 'bmap',
    data: points,
    pointSize: 5,
    blurSize: 6
  }]
});

        var bmap = myChart.getModel().getComponent('bmap').getBMap();
        bmap.addControl(new BMap.MapTypeControl());


    },
    methods:{

    }
  }
</script>

<style>
 #chart{
   width: 100%;
   height: 100%;
 }
</style>

把上面的敲下來本以為能看見效果了培漏,但是 怎么還報錯 (getMap的問題)
這時我找了網(wǎng)上很多資料說是要引入一個百度組合echarts使用的擴(kuò)展插件溪厘,讓在index.html引入

    <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/extension/bmap.min.js"></script>

好多人都說問題解決了,但是我的還是依然報錯牌柄,蛋疼
然后我去翻echarts官方文檔說明http://echarts.baidu.com/changelog.html

image.png

點擊進(jìn)去
image.png

看了上面的引入我發(fā)現(xiàn)這個插件好像安裝echarts的時候應(yīng)該一塊下載下來了畸悬,既然本地就有那我還引個錘子,直接把本地拿出來用就好了
于是本著懷疑的態(tài)度珊佣,我找了node_modules -- echarts -- extension -- bmap -- bmap.js
果然是有的傻昙,于是我在main.js里引入import 'echarts/extension/bmap/bmap';

import Vue from 'vue'
import App from './App'
import axios from 'axios'
import router from './router'
import store from './store/index'
import ElementUI from 'element-ui'
import './components/global.js'
import 'element-ui/lib/theme-chalk/index.css'
import './assets/index.css'
import echarts from 'echarts'
import 'echarts/extension/bmap/bmap';

然后刷新頁面,果然彩扔,效果出現(xiàn)了
雖然都是一些小問題,但是不知道還是蠻浪費時間的僻爽,所幸都解決了
效果圖


效果圖.png

歡迎有問題的同學(xué)留言交流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虫碉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胸梆,更是在濱河造成了極大的恐慌敦捧,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碰镜,死亡現(xiàn)場離奇詭異兢卵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绪颖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門秽荤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人柠横,你說我怎么就攤上這事窃款。” “怎么了牍氛?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵晨继,是天一觀的道長。 經(jīng)常有香客問我搬俊,道長紊扬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任唉擂,我火速辦了婚禮餐屎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玩祟。我一直安慰自己啤挎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著庆聘,像睡著了一般胜臊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伙判,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天象对,我揣著相機(jī)與錄音,去河邊找鬼宴抚。 笑死勒魔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菇曲。 我是一名探鬼主播冠绢,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼常潮!你這毒婦竟也來了弟胀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤喊式,失蹤者是張志新(化名)和其女友劉穎孵户,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岔留,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡夏哭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了献联。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竖配。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖里逆,靈堂內(nèi)的尸體忽然破棺而出械念,到底是詐尸還是另有隱情,我是刑警寧澤运悲,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布龄减,位于F島的核電站,受9級特大地震影響班眯,放射性物質(zhì)發(fā)生泄漏希停。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一署隘、第九天 我趴在偏房一處隱蔽的房頂上張望宠能。 院中可真熱鬧,春花似錦磁餐、人聲如沸违崇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羞延。三九已至渣淳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伴箩,已是汗流浹背入愧。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留嗤谚,地道東北人棺蛛。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像巩步,于是被迫代替她去往敵國和親旁赊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容