在Arcgis地圖上繪製Echarts熱力圖(Heatmap)

       現如今,Echarts在數據可視化方面早已升入化境,已經不再拘泥於簡單的餅圖柱狀圖,已然從平面直角座標系,擴展到了極座標系和地理座標系等等。

  隨着地圖的使用越來越廣泛,統計圖與地圖結合的展示方式更加直觀,也更有視覺衝擊力。目前Echarts使用的是百度地圖,也可以自己註冊想要的地圖(GEOJSON格式),但終究不是在自己的地圖上進行統計圖的繪製,對於那些基於地圖開展業務的系統來說,很是不方便。

  最近一個項目中需要在地圖上繪製熱力圖,地圖使用的是Arcgis的rest服務,Arcgis也提供了用於熱力圖繪製的API(HeatmapRenderer),但效果不甚令人滿意。遂想到了Echarts,在Echarts提供的API中沒有找到針對Arcgis地圖的相關介紹,但在擴展下載中找到了wandergis提供的ArcGIS地圖擴展,這個擴展已經有人提供了散點圖和遷徙圖的Demo,效果很炫酷。於是準備拿來直接開幹,我準備好了數據,參照Demo和Echarts的API構造好了option,但熱力圖始終畫不出來,苦悶了很久,各種找bug,各種對比參數,無果。最後把大神寫的Echarts擴展文件main.js拿來研究,發現這樣一句代碼:

l=["bar","boxplot","candlestick","chord","effectScatter","funnel","gauge","lines","graph","line","map","parallel","pie","radar","sankey","scatter","treemap"]

而在echarts.js(3.0版本)中找到:

var COMPATITABLE_SERIES = [
        'bar', 'boxplot', 'candlestick', 'chord', 'effectScatter',
        'funnel', 'gauge', 'lines', 'graph', 'heatmap', 'line', 'map', 'parallel',
        'pie', 'radar', 'sankey', 'scatter', 'treemap'
    ];

好傢伙,看來是main.js中沒有實現heatmap類型的統計圖功能,於是,在main.js中添加對heatmap的支持(當然,不僅僅是在l數組中添加heatmap那麼簡單,還有部分關鍵的實現代碼),OK,解決了。

下面來看看具體使用吧,其實大神的Demo中已經寫的很清楚了。

先給出文章中Demo的GitHub地址:點擊這裏

1.創建地圖容器

<style type="text/css">
    html,body,#map {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
    }
</style>
<div id="map"></div>

2.引入jquery,echarts以及echarts擴展文件

<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="js/echarts.min.js"></script>
<!--echartsExtent.js要在arcgis api前面引用,否則會報錯-->
<script type="text/javascript" src="js/echartsExtent.js"></script>
<script type="text/javascript">
    /*
     * 這個配置必須寫在加載arcgis api之前,否則不能生效
     * location是一個絕對路徑,第一個斜槓前面會默認添加一級域名,所以後面要填上二級域名等等,
     * 比如:http://localhost:8065/index.html,這種只需要寫"/js"即可;
     * 而http://localhost:8065/EchartsHeatmapInArcgis/index.html這種就需要寫"/../js"或者"/EchartsHeatmapInArcgis/js"
     */
    var dojoConfig = {
        parseOnLoad: true,
        packages: [{
            "name": "src",
            "location": location.pathname.replace(/\/[^/]+$/, '') + "/js"
        }]
    };
</script>

Echarts擴展有兩個js文件,其中,Echarts3Layer.js用來創建用於繪製統計圖的圖層,echartsExtent.js用來完成統計圖的繪製。這兩個文件都必須在arcgis api引用前先引用,否則會報錯。

Echarts3Layer.js採用了模塊化編程,引用的時候有兩種方式。第一種方式是把文件直接放到arcgis api的init.js文件所在的目錄,這樣在加載的時候直接使用:

dojo.require("Echarts3Layer");

第二種方式是把文件放到項目中,這樣的話需要定義dojoConfig來指定文件路徑,路徑取名爲"src",路徑值location爲:網站路徑+相對路徑;這裏必須強調一下,location必須要用 location.pathname.replace(/\/[^/]+$/, '') 取得網站路徑,否則在有二級域名的情況下直接使用文件相對路徑是無法找到文件的,這個虧吃過一次後會記得更清晰,哈哈。加載方法爲:

dojo.require("src/Echarts3Layer");

3.引入arcgis api

<link rel="stylesheet" href="https://js.arcgis.com/3.19/esri/css/esri.css" />
<script src="https://js.arcgis.com/3.19/"></script>

到這一步後,整個頁面完整代碼爲:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>在ArcGis地圖中繪製Echarts熱力圖</title>
        <!--
            作者:tsq
            時間:2018-08-30
            描述:在ArcGis地圖中繪製Echarts熱力圖 Demo
        -->
        <style type="text/css">
            html,body,#map {
                width: 100%;
                height: 100%;
                margin: 0;
                padding: 0;
            }
        </style>
        <link rel="stylesheet" href="https://js.arcgis.com/3.19/esri/css/esri.css" />
        <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
        <script type="text/javascript" src="js/echarts.min.js"></script>
        <!--
            作者:tsq
            時間:2018-08-29
            描述:echartsExtent.js要在arcgis api前面引用,否則會報錯
        -->
        <script type="text/javascript" src="js/echartsExtent.js"></script>
        <script type="text/javascript">
            /*
             * 這個配置必須寫在加載arcgis api之前,否則不能生效
             * location是一個絕對路徑,第一個斜槓前面會默認添加一級域名,所以後面要填上二級域名等等,
             * 比如:http://localhost:8065/index.html,這種只需要寫"/js"即可;
             * 而http://localhost:8065/EchartsHeatmapInArcgis/index.html這種就需要寫"/../js"或者"/EchartsHeatmapInArcgis/js"
             */
            var dojoConfig = {
                parseOnLoad: true,
                packages: [{
                    "name": "src",
                    "location": location.pathname.replace(/\/[^/]+$/, '') + "/js"
                }]
            };
        </script>
        <script src="https://js.arcgis.com/3.19/"></script>
    </head>
    <body>
        <div id="map"></div>        
    </body>
</html>

4.創建地圖map

首先加載arcgis的地圖模塊和我們的Echarts3Layer,必須等到“萬事俱備”的時候纔可以繼續我們的後續操作,否則將會有一系列報錯。“萬事俱備”意味着Dom樹加載完成,dojo庫以及所有依賴模塊也都加載完成。這裏使用dojo.ready()函數,不用擔心瀏覽器之間的差異。

dojo.require("esri.map");
dojo.require("src/Echarts3Layer");

var map,echartsLayer;

dojo.ready(function() {
    //創建地圖
    map = new esri.Map('map', {
        basemap: 'dark-gray',
        center: [120.15785586158, 30.269122098642],
        zoom: 12,
        navigationMode: "css-transform",
        force3DTransforms: true,
        logo: false,
        fitExtent: true,
        fadeOnZoom: true,
        slider: false
    });
});

在這裏,我使用的是"dark-gray"背景圖,關於地圖的創建不作過多闡述。

5.創建Echarts圖層

//地圖加載完成後初始化Echarts圖層
dojo.connect(map, 'onLoad', function (themap) {
    //這裏在地圖上創建統計圖圖層,以後統計圖的繪製將從這裏進入
    var overlay = new Echarts3Layer(map, echarts);
    var chartsContainer = overlay.getEchartsContainer();
    var myChart = overlay.initECharts(chartsContainer);
    window.onresize = myChart.onresize;//似乎是然並卵,後面會介紹resize辦法
    
});

6.繪製統計圖

在Echarts官網Copy了一些示例數據,如有違反什麼制度侵權啥的請告知,本人將立馬整改。

var geoValue = [
    { name: "海門", value: 9 },
    { name: "鄂爾多斯", value: 12 },
    { name: "招遠", value: 12 },
    { name: "舟山", value: 12 },
    { name: "齊齊哈爾", value: 14 },
    { name: "鹽城", value: 15 },
    { name: "赤峯", value: 16 },
    { name: "青島", value: 18 },
    { name: "乳山", value: 18 },
    { name: "金昌", value: 19 },
    { name: "泉州", value: 21 },
    { name: "萊西", value: 21 },
    { name: "日照", value: 21 },
    { name: "膠南", value: 22 },
    { name: "南通", value: 23 },
    { name: "拉薩", value: 24 },
    { name: "雲浮", value: 24 },
    { name: "梅州", value: 25 },
    { name: "文登", value: 25 },
    { name: "上海", value: 25 },
    { name: "攀枝花", value: 25 },
    { name: "威海", value: 25 },
    { name: "承德", value: 25 },
    { name: "廈門", value: 26 },
    { name: "汕尾", value: 26 },
    { name: "潮州", value: 26 },
    { name: "丹東", value: 27 },
    { name: "太倉", value: 27 },
    { name: "曲靖", value: 27 },
    { name: "煙臺", value: 28 },
    { name: "福州", value: 29 },
    { name: "瓦房店", value: 30 },
    { name: "即墨", value: 30 },
    { name: "撫順", value: 31 },
    { name: "玉溪", value: 31 },
    { name: "張家口", value: 31 },
    { name: "陽泉", value: 31 },
    { name: "萊州", value: 32 },
    { name: "湖州", value: 32 },
    { name: "汕頭", value: 32 },
    { name: "崑山", value: 33 },
    { name: "寧波", value: 33 },
    { name: "湛江", value: 33 },
    { name: "揭陽", value: 34 },
    { name: "榮成", value: 34 },
    { name: "連雲港", value: 35 },
    { name: "葫蘆島", value: 35 },
    { name: "常熟", value: 36 },
    { name: "東莞", value: 36 },
    { name: "河源", value: 36 },
    { name: "淮安", value: 36 },
    { name: "泰州", value: 36 },
    { name: "南寧", value: 37 },
    { name: "營口", value: 37 },
    { name: "惠州", value: 37 },
    { name: "江陰", value: 37 },
    { name: "蓬萊", value: 37 },
    { name: "韶關", value: 38 },
    { name: "嘉峪關", value: 38 },
    { name: "廣州", value: 38 },
    { name: "延安", value: 38 },
    { name: "太原", value: 39 },
    { name: "清遠", value: 39 },
    { name: "中山", value: 39 },
    { name: "昆明", value: 39 },
    { name: "壽光", value: 40 },
    { name: "盤錦", value: 40 },
    { name: "長治", value: 41 },
    { name: "深圳", value: 41 },
    { name: "珠海", value: 42 },
    { name: "宿遷", value: 43 },
    { name: "咸陽", value: 43 },
    { name: "銅川", value: 44 },
    { name: "平度", value: 44 },
    { name: "佛山", value: 44 },
    { name: "海口", value: 44 },
    { name: "江門", value: 45 },
    { name: "章丘", value: 45 },
    { name: "肇慶", value: 46 },
    { name: "大連", value: 47 },
    { name: "臨汾", value: 47 },
    { name: "吳江", value: 47 },
    { name: "石嘴山", value: 49 },
    { name: "瀋陽", value: 50 },
    { name: "蘇州", value: 50 },
    { name: "茂名", value: 50 },
    { name: "嘉興", value: 51 },
    { name: "長春", value: 51 },
    { name: "膠州", value: 52 },
    { name: "銀川", value: 52 },
    { name: "張家港", value: 52 },
    { name: "三門峽", value: 53 },
    { name: "錦州", value: 54 },
    { name: "南昌", value: 54 },
    { name: "柳州", value: 54 },
    { name: "三亞", value: 54 },
    { name: "自貢", value: 56 },
    { name: "吉林", value: 56 },
    { name: "陽江", value: 57 },
    { name: "瀘州", value: 57 },
    { name: "西寧", value: 57 },
    { name: "宜賓", value: 58 },
    { name: "呼和浩特", value: 58 },
    { name: "成都", value: 58 },
    { name: "大同", value: 58 },
    { name: "鎮江", value: 59 },
    { name: "桂林", value: 59 },
    { name: "張家界", value: 59 },
    { name: "宜興", value: 59 },
    { name: "北海", value: 60 },
    { name: "西安", value: 61 },
    { name: "金壇", value: 62 },
    { name: "東營", value: 62 },
    { name: "牡丹江", value: 63 },
    { name: "遵義", value: 63 },
    { name: "紹興", value: 63 },
    { name: "揚州", value: 64 },
    { name: "常州", value: 64 },
    { name: "濰坊", value: 65 },
    { name: "重慶", value: 66 },
    { name: "台州", value: 67 },
    { name: "南京", value: 67 },
    { name: "濱州", value: 70 },
    { name: "貴陽", value: 71 },
    { name: "無錫", value: 71 },
    { name: "本溪", value: 71 },
    { name: "克拉瑪依", value: 72 },
    { name: "渭南", value: 72 },
    { name: "馬鞍山", value: 72 },
    { name: "寶雞", value: 72 },
    { name: "焦作", value: 75 },
    { name: "句容", value: 75 },
    { name: "北京", value: 79 },
    { name: "徐州", value: 79 },
    { name: "衡水", value: 80 },
    { name: "包頭", value: 80 },
    { name: "綿陽", value: 80 },
    { name: "烏魯木齊", value: 84 },
    { name: "棗莊", value: 84 },
    { name: "杭州", value: 84 },
    { name: "淄博", value: 85 },
    { name: "鞍山", value: 86 },
    { name: "溧陽", value: 86 },
    { name: "庫爾勒", value: 86 },
    { name: "安陽", value: 90 },
    { name: "開封", value: 90 },
    { name: "濟南", value: 92 },
    { name: "德陽", value: 93 },
    { name: "溫州", value: 95 },
    { name: "九江", value: 96 },
    { name: "邯鄲", value: 98 },
    { name: "臨安", value: 99 },
    { name: "蘭州", value: 99 },
    { name: "滄州", value: 100 },
    { name: "臨沂", value: 103 },
    { name: "南充", value: 104 },
    { name: "天津", value: 105 },
    { name: "富陽", value: 106 },
    { name: "泰安", value: 112 },
    { name: "諸暨", value: 112 },
    { name: "鄭州", value: 113 },
    { name: "哈爾濱", value: 114 },
    { name: "聊城", value: 116 },
    { name: "蕪湖", value: 117 },
    { name: "唐山", value: 119 },
    { name: "平頂山", value: 119 },
    { name: "邢臺", value: 119 },
    { name: "德州", value: 120 },
    { name: "濟寧", value: 120 },
    { name: "荊州", value: 127 },
    { name: "宜昌", value: 130 },
    { name: "義烏", value: 132 },
    { name: "麗水", value: 133 },
    { name: "洛陽", value: 134 },
    { name: "秦皇島", value: 136 },
    { name: "株洲", value: 143 },
    { name: "石家莊", value: 147 },
    { name: "萊蕪", value: 148 },
    { name: "常德", value: 152 },
    { name: "保定", value: 153 },
    { name: "湘潭", value: 154 },
    { name: "金華", value: 157 },
    { name: "岳陽", value: 169 },
    { name: "長沙", value: 175 },
    { name: "衢州", value: 177 },
    { name: "廊坊", value: 193 },
    { name: "菏澤", value: 194 },
    { name: "合肥", value: 229 },
    { name: "武漢", value: 273 },
    { name: "大慶", value: 279 }
];
var geoCoordMap = {
    "海門": [121.15, 31.89],
    "鄂爾多斯": [109.781327, 39.608266],
    "招遠": [120.38, 37.35],
    "舟山": [122.207216, 29.985295],
    "齊齊哈爾": [123.97, 47.33],
    "鹽城": [120.13, 33.38],
    "赤峯": [118.87, 42.28],
    "青島": [120.33, 36.07],
    "乳山": [121.52, 36.89],
    "金昌": [102.188043, 38.520089],
    "泉州": [118.58, 24.93],
    "萊西": [120.53, 36.86],
    "日照": [119.46, 35.42],
    "膠南": [119.97, 35.88],
    "南通": [121.05, 32.08],
    "拉薩": [91.11, 29.97],
    "雲浮": [112.02, 22.93],
    "梅州": [116.1, 24.55],
    "文登": [122.05, 37.2],
    "上海": [121.48, 31.22],
    "攀枝花": [101.718637, 26.582347],
    "威海": [122.1, 37.5],
    "承德": [117.93, 40.97],
    "廈門": [118.1, 24.46],
    "汕尾": [115.375279, 22.786211],
    "潮州": [116.63, 23.68],
    "丹東": [124.37, 40.13],
    "太倉": [121.1, 31.45],
    "曲靖": [103.79, 25.51],
    "煙臺": [121.39, 37.52],
    "福州": [119.3, 26.08],
    "瓦房店": [121.979603, 39.627114],
    "即墨": [120.45, 36.38],
    "撫順": [123.97, 41.97],
    "玉溪": [102.52, 24.35],
    "張家口": [114.87, 40.82],
    "陽泉": [113.57, 37.85],
    "萊州": [119.942327, 37.177017],
    "湖州": [120.1, 30.86],
    "汕頭": [116.69, 23.39],
    "崑山": [120.95, 31.39],
    "寧波": [121.56, 29.86],
    "湛江": [110.359377, 21.270708],
    "揭陽": [116.35, 23.55],
    "榮成": [122.41, 37.16],
    "連雲港": [119.16, 34.59],
    "葫蘆島": [120.836932, 40.711052],
    "常熟": [120.74, 31.64],
    "東莞": [113.75, 23.04],
    "河源": [114.68, 23.73],
    "淮安": [119.15, 33.5],
    "泰州": [119.9, 32.49],
    "南寧": [108.33, 22.84],
    "營口": [122.18, 40.65],
    "惠州": [114.4, 23.09],
    "江陰": [120.26, 31.91],
    "蓬萊": [120.75, 37.8],
    "韶關": [113.62, 24.84],
    "嘉峪關": [98.289152, 39.77313],
    "廣州": [113.23, 23.16],
    "延安": [109.47, 36.6],
    "太原": [112.53, 37.87],
    "清遠": [113.01, 23.7],
    "中山": [113.38, 22.52],
    "昆明": [102.73, 25.04],
    "壽光": [118.73, 36.86],
    "盤錦": [122.070714, 41.119997],
    "長治": [113.08, 36.18],
    "深圳": [114.07, 22.62],
    "珠海": [113.52, 22.3],
    "宿遷": [118.3, 33.96],
    "咸陽": [108.72, 34.36],
    "銅川": [109.11, 35.09],
    "平度": [119.97, 36.77],
    "佛山": [113.11, 23.05],
    "海口": [110.35, 20.02],
    "江門": [113.06, 22.61],
    "章丘": [117.53, 36.72],
    "肇慶": [112.44, 23.05],
    "大連": [121.62, 38.92],
    "臨汾": [111.5, 36.08],
    "吳江": [120.63, 31.16],
    "石嘴山": [106.39, 39.04],
    "瀋陽": [123.38, 41.8],
    "蘇州": [120.62, 31.32],
    "茂名": [110.88, 21.68],
    "嘉興": [120.76, 30.77],
    "長春": [125.35, 43.88],
    "膠州": [120.03336, 36.264622],
    "銀川": [106.27, 38.47],
    "張家港": [120.555821, 31.875428],
    "三門峽": [111.19, 34.76],
    "錦州": [121.15, 41.13],
    "南昌": [115.89, 28.68],
    "柳州": [109.4, 24.33],
    "三亞": [109.511909, 18.252847],
    "自貢": [104.778442, 29.33903],
    "吉林": [126.57, 43.87],
    "陽江": [111.95, 21.85],
    "瀘州": [105.39, 28.91],
    "西寧": [101.74, 36.56],
    "宜賓": [104.56, 29.77],
    "呼和浩特": [111.65, 40.82],
    "成都": [104.06, 30.67],
    "大同": [113.3, 40.12],
    "鎮江": [119.44, 32.2],
    "桂林": [110.28, 25.29],
    "張家界": [110.479191, 29.117096],
    "宜興": [119.82, 31.36],
    "北海": [109.12, 21.49],
    "西安": [108.95, 34.27],
    "金壇": [119.56, 31.74],
    "東營": [118.49, 37.46],
    "牡丹江": [129.58, 44.6],
    "遵義": [106.9, 27.7],
    "紹興": [120.58, 30.01],
    "揚州": [119.42, 32.39],
    "常州": [119.95, 31.79],
    "濰坊": [119.1, 36.62],
    "重慶": [106.54, 29.59],
    "台州": [121.420757, 28.656386],
    "南京": [118.78, 32.04],
    "濱州": [118.03, 37.36],
    "貴陽": [106.71, 26.57],
    "無錫": [120.29, 31.59],
    "本溪": [123.73, 41.3],
    "克拉瑪依": [84.77, 45.59],
    "渭南": [109.5, 34.52],
    "馬鞍山": [118.48, 31.56],
    "寶雞": [107.15, 34.38],
    "焦作": [113.21, 35.24],
    "句容": [119.16, 31.95],
    "北京": [116.46, 39.92],
    "徐州": [117.2, 34.26],
    "衡水": [115.72, 37.72],
    "包頭": [110, 40.58],
    "綿陽": [104.73, 31.48],
    "烏魯木齊": [87.68, 43.77],
    "棗莊": [117.57, 34.86],
    "杭州": [120.19, 30.26],
    "淄博": [118.05, 36.78],
    "鞍山": [122.85, 41.12],
    "溧陽": [119.48, 31.43],
    "庫爾勒": [86.06, 41.68],
    "安陽": [114.35, 36.1],
    "開封": [114.35, 34.79],
    "濟南": [117, 36.65],
    "德陽": [104.37, 31.13],
    "溫州": [120.65, 28.01],
    "九江": [115.97, 29.71],
    "邯鄲": [114.47, 36.6],
    "臨安": [119.72, 30.23],
    "蘭州": [103.73, 36.03],
    "滄州": [116.83, 38.33],
    "臨沂": [118.35, 35.05],
    "南充": [106.110698, 30.837793],
    "天津": [117.2, 39.13],
    "富陽": [119.95, 30.07],
    "泰安": [117.13, 36.18],
    "諸暨": [120.23, 29.71],
    "鄭州": [113.65, 34.76],
    "哈爾濱": [126.63, 45.75],
    "聊城": [115.97, 36.45],
    "蕪湖": [118.38, 31.33],
    "唐山": [118.02, 39.63],
    "平頂山": [113.29, 33.75],
    "邢臺": [114.48, 37.05],
    "德州": [116.29, 37.45],
    "濟寧": [116.59, 35.38],
    "荊州": [112.239741, 30.335165],
    "宜昌": [111.3, 30.7],
    "義烏": [120.06, 29.32],
    "麗水": [119.92, 28.45],
    "洛陽": [112.44, 34.7],
    "秦皇島": [119.57, 39.95],
    "株洲": [113.16, 27.83],
    "石家莊": [114.48, 38.03],
    "萊蕪": [117.67, 36.19],
    "常德": [111.69, 29.05],
    "保定": [115.48, 38.85],
    "湘潭": [112.91, 27.87],
    "金華": [119.64, 29.12],
    "岳陽": [113.09, 29.37],
    "長沙": [113, 28.21],
    "衢州": [118.88, 28.97],
    "廊坊": [116.7, 39.53],
    "菏澤": [115.480656, 35.23375],
    "合肥": [117.27, 31.86],
    "武漢": [114.31, 30.52],
    "大慶": [125.03, 46.58]
};
var convertData = function (data) {
    var res = [];
    for (var i = 0; i < data.length; i++) {
        var geoCoord = geoCoordMap[data[i].name];
        if (geoCoord) {
            res.push(geoCoord.concat(data[i].value));
        }
    }
    return res;
};

構建好option,要注意的是,backgroundColor必須設置成透明的,不然會遮擋住下面的地圖;geo中的map設爲空值,最好把show設爲false。

var option = {
    title: {
        text: '全國主要城市空氣質量',
        subtext: '作者:喬二哥',
        sublink: '',
        left: 'center',
        textStyle: {
            color: '#fff'
        }
    },
    backgroundColor: 'rgba(128, 128, 128, 0)',
    visualMap: {
        min: 0,
        max: 500,
        show: true,
        seriesIndex: 0,
        calculable: true,
        inRange: {
            color: ['blue', 'blue', 'green', 'yellow', 'red']
        },
        textStyle: {
            color: '#fff'
        }
    },
    geo: {
        map: '',
        show: false,
        label: {
            emphasis: {
                show: false
            }
        },
        left: 0,
        top: 0,
        right: 0,
        bottom: 0,
        roam: false,
        itemStyle: {
            normal: {
                areaColor: '#323c48',
                borderColor: '#111'
            },
            emphasis: {
                areaColor: '#2a333d'
            }
        }
    },
    series: [{
        type: 'heatmap', //effectScatter
        coordinateSystem: 'geo',
        data: convertData(geoValue),
        pointSize: 10,
        blurSize: 10
    }]
};

繪圖的時候調用 overlay 的setOption方法,而不是前面的myChart。

overlay.setOption(option);

7. 最終的效果

 

可以調整visualMap的取值範圍,以及series的pointSize和blurSize來調整統計圖的效果,pointSize是點的大小,blurSize是模糊半徑。

下面是我把所有的值設置爲1,visualMap取值範圍設置爲0-2,pointSize設置爲10,blurSize設置爲8之後的效果:

8.添加窗口縮放方法 resize

這個resize方法僅僅是對統計圖和統計圖容器div進行了resize操作,如果還有其他內容在窗口大小發生改變時需要做調整,這個視情況自己擴展。

$(window).on("resize", function () {
    resize();
});
function resize() {
    if (echartsLayer) {
        var myEchart = echartsLayer.getECharts(), //echarts對象
            $myEchartContainer = $(echartsLayer.getEchartsContainer()), //echarts統計圖所在的div
            myMap = echartsLayer.getMap(); //地圖
        var $myMapContainer = $(myMap.container); //地圖所在div
        var width = $myMapContainer.width(),
            height = $myMapContainer.height(); //獲取地圖的寬高

        $myEchartContainer.width(width); //設置統計圖容器的寬高爲地圖容器的寬高
        $myEchartContainer.height(height);

        myEchart.resize(); //調用echarts的resize方法
    }
}

9.添加清空方法 clear

目前還沒想到比較好的clear辦法,在需要clear的時候我的處理是從新執行一次繪圖操作,並且傳入的data是一個空的二維數組,以達到清除的效果。如果哪位大神發現了真正的clear方法請告知,我也學習一下。

function clear() {
    if (echartsLayer) {
        var opt = option;
        opt.series = [{
            type: 'heatmap',
            coordinateSystem: 'geo',
            data: [[]], //傳入空數據,以達到清除原有統計圖的效果
            pointSize: 10,
            blurSize: 8
        }];
        echartsLayer.setOption(opt);
    }
}

10.添加移除統計圖方法 remove

function remove() {
    if (echartsLayer) {
        var $echartsContainer = $(echartsLayer.getEchartsContainer());
        //移除圖層容器以達到刪除統計的效果
        $echartsContainer.remove();
    }
}

11. 完整代碼

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>在ArcGis地圖中繪製Echarts熱力圖</title>
        <!--
            作者:tsq
            時間:2018-08-30
            描述:在ArcGis地圖中繪製Echarts熱力圖 Demo
        -->
        <style type="text/css">
            html,
            body,
            #map {
                width: 100%;
                height: 100%;
                margin: 0;
                padding: 0;
            }
        </style>
        <link rel="stylesheet" href="https://js.arcgis.com/3.19/esri/css/esri.css" />
        <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
        <script type="text/javascript" src="js/echarts.min.js"></script>
        <!--
            作者:tsq
            時間:2018-08-29
            描述:echartsExtent.js要在arcgis api前面引用,否則會報錯
        -->
        <script type="text/javascript" src="js/echartsExtent.js"></script>
        <script type="text/javascript">
            /*
             * 這個配置必須寫在加載arcgis api之前,否則不能生效
             * location是一個絕對路徑,第一個斜槓前面會默認添加一級域名,所以後面要填上二級域名等等,
             * 比如:http://localhost:8065/index.html,這種只需要寫"/js"即可;
             * 而http://localhost:8065/EchartsHeatmapInArcgis/index.html這種就需要寫"/../js"或者"/EchartsHeatmapInArcgis/js"
             */
            var dojoConfig = {
                parseOnLoad: true,
                packages: [{
                    "name": "src",
                    "location": location.pathname.replace(/\/[^/]+$/, '') + "/js"
                }]
            };
        </script>
        <script src="https://js.arcgis.com/3.19/"></script>
    </head>

    <body>
        <div id="map"></div>
        <script type="text/javascript">
            dojo.require("esri.map");
            dojo.require("src/Echarts3Layer");

            var map, echartsLayer;

            var geoCoordMap = {
                "海門": [121.15, 31.89],
                "鄂爾多斯": [109.781327, 39.608266],
                "招遠": [120.38, 37.35],
                "舟山": [122.207216, 29.985295],
                "齊齊哈爾": [123.97, 47.33],
                "鹽城": [120.13, 33.38],
                "赤峯": [118.87, 42.28],
                "青島": [120.33, 36.07],
                "乳山": [121.52, 36.89],
                "金昌": [102.188043, 38.520089],
                "泉州": [118.58, 24.93],
                "萊西": [120.53, 36.86],
                "日照": [119.46, 35.42],
                "膠南": [119.97, 35.88],
                "南通": [121.05, 32.08],
                "拉薩": [91.11, 29.97],
                "雲浮": [112.02, 22.93],
                "梅州": [116.1, 24.55],
                "文登": [122.05, 37.2],
                "上海": [121.48, 31.22],
                "攀枝花": [101.718637, 26.582347],
                "威海": [122.1, 37.5],
                "承德": [117.93, 40.97],
                "廈門": [118.1, 24.46],
                "汕尾": [115.375279, 22.786211],
                "潮州": [116.63, 23.68],
                "丹東": [124.37, 40.13],
                "太倉": [121.1, 31.45],
                "曲靖": [103.79, 25.51],
                "煙臺": [121.39, 37.52],
                "福州": [119.3, 26.08],
                "瓦房店": [121.979603, 39.627114],
                "即墨": [120.45, 36.38],
                "撫順": [123.97, 41.97],
                "玉溪": [102.52, 24.35],
                "張家口": [114.87, 40.82],
                "陽泉": [113.57, 37.85],
                "萊州": [119.942327, 37.177017],
                "湖州": [120.1, 30.86],
                "汕頭": [116.69, 23.39],
                "崑山": [120.95, 31.39],
                "寧波": [121.56, 29.86],
                "湛江": [110.359377, 21.270708],
                "揭陽": [116.35, 23.55],
                "榮成": [122.41, 37.16],
                "連雲港": [119.16, 34.59],
                "葫蘆島": [120.836932, 40.711052],
                "常熟": [120.74, 31.64],
                "東莞": [113.75, 23.04],
                "河源": [114.68, 23.73],
                "淮安": [119.15, 33.5],
                "泰州": [119.9, 32.49],
                "南寧": [108.33, 22.84],
                "營口": [122.18, 40.65],
                "惠州": [114.4, 23.09],
                "江陰": [120.26, 31.91],
                "蓬萊": [120.75, 37.8],
                "韶關": [113.62, 24.84],
                "嘉峪關": [98.289152, 39.77313],
                "廣州": [113.23, 23.16],
                "延安": [109.47, 36.6],
                "太原": [112.53, 37.87],
                "清遠": [113.01, 23.7],
                "中山": [113.38, 22.52],
                "昆明": [102.73, 25.04],
                "壽光": [118.73, 36.86],
                "盤錦": [122.070714, 41.119997],
                "長治": [113.08, 36.18],
                "深圳": [114.07, 22.62],
                "珠海": [113.52, 22.3],
                "宿遷": [118.3, 33.96],
                "咸陽": [108.72, 34.36],
                "銅川": [109.11, 35.09],
                "平度": [119.97, 36.77],
                "佛山": [113.11, 23.05],
                "海口": [110.35, 20.02],
                "江門": [113.06, 22.61],
                "章丘": [117.53, 36.72],
                "肇慶": [112.44, 23.05],
                "大連": [121.62, 38.92],
                "臨汾": [111.5, 36.08],
                "吳江": [120.63, 31.16],
                "石嘴山": [106.39, 39.04],
                "瀋陽": [123.38, 41.8],
                "蘇州": [120.62, 31.32],
                "茂名": [110.88, 21.68],
                "嘉興": [120.76, 30.77],
                "長春": [125.35, 43.88],
                "膠州": [120.03336, 36.264622],
                "銀川": [106.27, 38.47],
                "張家港": [120.555821, 31.875428],
                "三門峽": [111.19, 34.76],
                "錦州": [121.15, 41.13],
                "南昌": [115.89, 28.68],
                "柳州": [109.4, 24.33],
                "三亞": [109.511909, 18.252847],
                "自貢": [104.778442, 29.33903],
                "吉林": [126.57, 43.87],
                "陽江": [111.95, 21.85],
                "瀘州": [105.39, 28.91],
                "西寧": [101.74, 36.56],
                "宜賓": [104.56, 29.77],
                "呼和浩特": [111.65, 40.82],
                "成都": [104.06, 30.67],
                "大同": [113.3, 40.12],
                "鎮江": [119.44, 32.2],
                "桂林": [110.28, 25.29],
                "張家界": [110.479191, 29.117096],
                "宜興": [119.82, 31.36],
                "北海": [109.12, 21.49],
                "西安": [108.95, 34.27],
                "金壇": [119.56, 31.74],
                "東營": [118.49, 37.46],
                "牡丹江": [129.58, 44.6],
                "遵義": [106.9, 27.7],
                "紹興": [120.58, 30.01],
                "揚州": [119.42, 32.39],
                "常州": [119.95, 31.79],
                "濰坊": [119.1, 36.62],
                "重慶": [106.54, 29.59],
                "台州": [121.420757, 28.656386],
                "南京": [118.78, 32.04],
                "濱州": [118.03, 37.36],
                "貴陽": [106.71, 26.57],
                "無錫": [120.29, 31.59],
                "本溪": [123.73, 41.3],
                "克拉瑪依": [84.77, 45.59],
                "渭南": [109.5, 34.52],
                "馬鞍山": [118.48, 31.56],
                "寶雞": [107.15, 34.38],
                "焦作": [113.21, 35.24],
                "句容": [119.16, 31.95],
                "北京": [116.46, 39.92],
                "徐州": [117.2, 34.26],
                "衡水": [115.72, 37.72],
                "包頭": [110, 40.58],
                "綿陽": [104.73, 31.48],
                "烏魯木齊": [87.68, 43.77],
                "棗莊": [117.57, 34.86],
                "杭州": [120.19, 30.26],
                "淄博": [118.05, 36.78],
                "鞍山": [122.85, 41.12],
                "溧陽": [119.48, 31.43],
                "庫爾勒": [86.06, 41.68],
                "安陽": [114.35, 36.1],
                "開封": [114.35, 34.79],
                "濟南": [117, 36.65],
                "德陽": [104.37, 31.13],
                "溫州": [120.65, 28.01],
                "九江": [115.97, 29.71],
                "邯鄲": [114.47, 36.6],
                "臨安": [119.72, 30.23],
                "蘭州": [103.73, 36.03],
                "滄州": [116.83, 38.33],
                "臨沂": [118.35, 35.05],
                "南充": [106.110698, 30.837793],
                "天津": [117.2, 39.13],
                "富陽": [119.95, 30.07],
                "泰安": [117.13, 36.18],
                "諸暨": [120.23, 29.71],
                "鄭州": [113.65, 34.76],
                "哈爾濱": [126.63, 45.75],
                "聊城": [115.97, 36.45],
                "蕪湖": [118.38, 31.33],
                "唐山": [118.02, 39.63],
                "平頂山": [113.29, 33.75],
                "邢臺": [114.48, 37.05],
                "德州": [116.29, 37.45],
                "濟寧": [116.59, 35.38],
                "荊州": [112.239741, 30.335165],
                "宜昌": [111.3, 30.7],
                "義烏": [120.06, 29.32],
                "麗水": [119.92, 28.45],
                "洛陽": [112.44, 34.7],
                "秦皇島": [119.57, 39.95],
                "株洲": [113.16, 27.83],
                "石家莊": [114.48, 38.03],
                "萊蕪": [117.67, 36.19],
                "常德": [111.69, 29.05],
                "保定": [115.48, 38.85],
                "湘潭": [112.91, 27.87],
                "金華": [119.64, 29.12],
                "岳陽": [113.09, 29.37],
                "長沙": [113, 28.21],
                "衢州": [118.88, 28.97],
                "廊坊": [116.7, 39.53],
                "菏澤": [115.480656, 35.23375],
                "合肥": [117.27, 31.86],
                "武漢": [114.31, 30.52],
                "大慶": [125.03, 46.58]
            };
            
            var geoValue = [{
                    name: "海門",
                    value: 9
                },
                {
                    name: "鄂爾多斯",
                    value: 12
                },
                {
                    name: "招遠",
                    value: 12
                },
                {
                    name: "舟山",
                    value: 12
                },
                {
                    name: "齊齊哈爾",
                    value: 14
                },
                {
                    name: "鹽城",
                    value: 15
                },
                {
                    name: "赤峯",
                    value: 16
                },
                {
                    name: "青島",
                    value: 18
                },
                {
                    name: "乳山",
                    value: 18
                },
                {
                    name: "金昌",
                    value: 19
                },
                {
                    name: "泉州",
                    value: 21
                },
                {
                    name: "萊西",
                    value: 21
                },
                {
                    name: "日照",
                    value: 21
                },
                {
                    name: "膠南",
                    value: 22
                },
                {
                    name: "南通",
                    value: 23
                },
                {
                    name: "拉薩",
                    value: 24
                },
                {
                    name: "雲浮",
                    value: 24
                },
                {
                    name: "梅州",
                    value: 25
                },
                {
                    name: "文登",
                    value: 25
                },
                {
                    name: "上海",
                    value: 25
                },
                {
                    name: "攀枝花",
                    value: 25
                },
                {
                    name: "威海",
                    value: 25
                },
                {
                    name: "承德",
                    value: 25
                },
                {
                    name: "廈門",
                    value: 26
                },
                {
                    name: "汕尾",
                    value: 26
                },
                {
                    name: "潮州",
                    value: 26
                },
                {
                    name: "丹東",
                    value: 27
                },
                {
                    name: "太倉",
                    value: 27
                },
                {
                    name: "曲靖",
                    value: 27
                },
                {
                    name: "煙臺",
                    value: 28
                },
                {
                    name: "福州",
                    value: 29
                },
                {
                    name: "瓦房店",
                    value: 30
                },
                {
                    name: "即墨",
                    value: 30
                },
                {
                    name: "撫順",
                    value: 31
                },
                {
                    name: "玉溪",
                    value: 31
                },
                {
                    name: "張家口",
                    value: 31
                },
                {
                    name: "陽泉",
                    value: 31
                },
                {
                    name: "萊州",
                    value: 32
                },
                {
                    name: "湖州",
                    value: 32
                },
                {
                    name: "汕頭",
                    value: 32
                },
                {
                    name: "崑山",
                    value: 33
                },
                {
                    name: "寧波",
                    value: 33
                },
                {
                    name: "湛江",
                    value: 33
                },
                {
                    name: "揭陽",
                    value: 34
                },
                {
                    name: "榮成",
                    value: 34
                },
                {
                    name: "連雲港",
                    value: 35
                },
                {
                    name: "葫蘆島",
                    value: 35
                },
                {
                    name: "常熟",
                    value: 36
                },
                {
                    name: "東莞",
                    value: 36
                },
                {
                    name: "河源",
                    value: 36
                },
                {
                    name: "淮安",
                    value: 36
                },
                {
                    name: "泰州",
                    value: 36
                },
                {
                    name: "南寧",
                    value: 37
                },
                {
                    name: "營口",
                    value: 37
                },
                {
                    name: "惠州",
                    value: 37
                },
                {
                    name: "江陰",
                    value: 37
                },
                {
                    name: "蓬萊",
                    value: 37
                },
                {
                    name: "韶關",
                    value: 38
                },
                {
                    name: "嘉峪關",
                    value: 38
                },
                {
                    name: "廣州",
                    value: 38
                },
                {
                    name: "延安",
                    value: 38
                },
                {
                    name: "太原",
                    value: 39
                },
                {
                    name: "清遠",
                    value: 39
                },
                {
                    name: "中山",
                    value: 39
                },
                {
                    name: "昆明",
                    value: 39
                },
                {
                    name: "壽光",
                    value: 40
                },
                {
                    name: "盤錦",
                    value: 40
                },
                {
                    name: "長治",
                    value: 41
                },
                {
                    name: "深圳",
                    value: 41
                },
                {
                    name: "珠海",
                    value: 42
                },
                {
                    name: "宿遷",
                    value: 43
                },
                {
                    name: "咸陽",
                    value: 43
                },
                {
                    name: "銅川",
                    value: 44
                },
                {
                    name: "平度",
                    value: 44
                },
                {
                    name: "佛山",
                    value: 44
                },
                {
                    name: "海口",
                    value: 44
                },
                {
                    name: "江門",
                    value: 45
                },
                {
                    name: "章丘",
                    value: 45
                },
                {
                    name: "肇慶",
                    value: 46
                },
                {
                    name: "大連",
                    value: 47
                },
                {
                    name: "臨汾",
                    value: 47
                },
                {
                    name: "吳江",
                    value: 47
                },
                {
                    name: "石嘴山",
                    value: 49
                },
                {
                    name: "瀋陽",
                    value: 50
                },
                {
                    name: "蘇州",
                    value: 50
                },
                {
                    name: "茂名",
                    value: 50
                },
                {
                    name: "嘉興",
                    value: 51
                },
                {
                    name: "長春",
                    value: 51
                },
                {
                    name: "膠州",
                    value: 52
                },
                {
                    name: "銀川",
                    value: 52
                },
                {
                    name: "張家港",
                    value: 52
                },
                {
                    name: "三門峽",
                    value: 53
                },
                {
                    name: "錦州",
                    value: 54
                },
                {
                    name: "南昌",
                    value: 54
                },
                {
                    name: "柳州",
                    value: 54
                },
                {
                    name: "三亞",
                    value: 54
                },
                {
                    name: "自貢",
                    value: 56
                },
                {
                    name: "吉林",
                    value: 56
                },
                {
                    name: "陽江",
                    value: 57
                },
                {
                    name: "瀘州",
                    value: 57
                },
                {
                    name: "西寧",
                    value: 57
                },
                {
                    name: "宜賓",
                    value: 58
                },
                {
                    name: "呼和浩特",
                    value: 58
                },
                {
                    name: "成都",
                    value: 58
                },
                {
                    name: "大同",
                    value: 58
                },
                {
                    name: "鎮江",
                    value: 59
                },
                {
                    name: "桂林",
                    value: 59
                },
                {
                    name: "張家界",
                    value: 59
                },
                {
                    name: "宜興",
                    value: 59
                },
                {
                    name: "北海",
                    value: 60
                },
                {
                    name: "西安",
                    value: 61
                },
                {
                    name: "金壇",
                    value: 62
                },
                {
                    name: "東營",
                    value: 62
                },
                {
                    name: "牡丹江",
                    value: 63
                },
                {
                    name: "遵義",
                    value: 63
                },
                {
                    name: "紹興",
                    value: 63
                },
                {
                    name: "揚州",
                    value: 64
                },
                {
                    name: "常州",
                    value: 64
                },
                {
                    name: "濰坊",
                    value: 65
                },
                {
                    name: "重慶",
                    value: 66
                },
                {
                    name: "台州",
                    value: 67
                },
                {
                    name: "南京",
                    value: 67
                },
                {
                    name: "濱州",
                    value: 70
                },
                {
                    name: "貴陽",
                    value: 71
                },
                {
                    name: "無錫",
                    value: 71
                },
                {
                    name: "本溪",
                    value: 71
                },
                {
                    name: "克拉瑪依",
                    value: 72
                },
                {
                    name: "渭南",
                    value: 72
                },
                {
                    name: "馬鞍山",
                    value: 72
                },
                {
                    name: "寶雞",
                    value: 72
                },
                {
                    name: "焦作",
                    value: 75
                },
                {
                    name: "句容",
                    value: 75
                },
                {
                    name: "北京",
                    value: 79
                },
                {
                    name: "徐州",
                    value: 79
                },
                {
                    name: "衡水",
                    value: 80
                },
                {
                    name: "包頭",
                    value: 80
                },
                {
                    name: "綿陽",
                    value: 80
                },
                {
                    name: "烏魯木齊",
                    value: 84
                },
                {
                    name: "棗莊",
                    value: 84
                },
                {
                    name: "杭州",
                    value: 84
                },
                {
                    name: "淄博",
                    value: 85
                },
                {
                    name: "鞍山",
                    value: 86
                },
                {
                    name: "溧陽",
                    value: 86
                },
                {
                    name: "庫爾勒",
                    value: 86
                },
                {
                    name: "安陽",
                    value: 90
                },
                {
                    name: "開封",
                    value: 90
                },
                {
                    name: "濟南",
                    value: 92
                },
                {
                    name: "德陽",
                    value: 93
                },
                {
                    name: "溫州",
                    value: 95
                },
                {
                    name: "九江",
                    value: 96
                },
                {
                    name: "邯鄲",
                    value: 98
                },
                {
                    name: "臨安",
                    value: 99
                },
                {
                    name: "蘭州",
                    value: 99
                },
                {
                    name: "滄州",
                    value: 100
                },
                {
                    name: "臨沂",
                    value: 103
                },
                {
                    name: "南充",
                    value: 104
                },
                {
                    name: "天津",
                    value: 105
                },
                {
                    name: "富陽",
                    value: 106
                },
                {
                    name: "泰安",
                    value: 112
                },
                {
                    name: "諸暨",
                    value: 112
                },
                {
                    name: "鄭州",
                    value: 113
                },
                {
                    name: "哈爾濱",
                    value: 114
                },
                {
                    name: "聊城",
                    value: 116
                },
                {
                    name: "蕪湖",
                    value: 117
                },
                {
                    name: "唐山",
                    value: 119
                },
                {
                    name: "平頂山",
                    value: 119
                },
                {
                    name: "邢臺",
                    value: 119
                },
                {
                    name: "德州",
                    value: 120
                },
                {
                    name: "濟寧",
                    value: 120
                },
                {
                    name: "荊州",
                    value: 127
                },
                {
                    name: "宜昌",
                    value: 130
                },
                {
                    name: "義烏",
                    value: 132
                },
                {
                    name: "麗水",
                    value: 133
                },
                {
                    name: "洛陽",
                    value: 134
                },
                {
                    name: "秦皇島",
                    value: 136
                },
                {
                    name: "株洲",
                    value: 143
                },
                {
                    name: "石家莊",
                    value: 147
                },
                {
                    name: "萊蕪",
                    value: 148
                },
                {
                    name: "常德",
                    value: 152
                },
                {
                    name: "保定",
                    value: 153
                },
                {
                    name: "湘潭",
                    value: 154
                },
                {
                    name: "金華",
                    value: 157
                },
                {
                    name: "岳陽",
                    value: 169
                },
                {
                    name: "長沙",
                    value: 175
                },
                {
                    name: "衢州",
                    value: 177
                },
                {
                    name: "廊坊",
                    value: 193
                },
                {
                    name: "菏澤",
                    value: 194
                },
                {
                    name: "合肥",
                    value: 229
                },
                {
                    name: "武漢",
                    value: 273
                },
                {
                    name: "大慶",
                    value: 279
                }
            ];
            var convertData = function(data) {
                var res = [];
                for(var i = 0; i < data.length; i++) {
                    var geoCoord = geoCoordMap[data[i].name];
                    if(geoCoord) {
                        res.push(geoCoord.concat(data[i].value)); 
                    }
                }
                return res;
            };

            var option = {
                title: {
                    text: '全國主要城市空氣質量',
                    subtext: 'data from PM25.in',
                    sublink: 'http://www.pm25.in',
                    left: 'center',
                    textStyle: {
                        color: '#fff'
                    }
                },
                backgroundColor: 'rgba(128, 128, 128, 0)',
                visualMap: {
                    min: 0,
                    max: 2,
                    show: false,
                    seriesIndex: 0,
                    calculable: true,
                    inRange: {
                        color: ['blue', 'blue', 'green', 'yellow', 'red']
                    },
                    textStyle: {
                        color: '#fff'
                    }
                },
                geo: {
                    map: '',
                    show: false,
                    label: {
                        emphasis: {
                            show: false
                        }
                    },
                    left: 0,
                    top: 0,
                    right: 0,
                    bottom: 0,
                    roam: false,
                    itemStyle: {
                        normal: {
                            areaColor: '#323c48',
                            borderColor: '#111'
                        },
                        emphasis: {
                            areaColor: '#2a333d'
                        }
                    }
                },
                series: [{
                    type: 'heatmap', //effectScatter
                    coordinateSystem: 'geo',
                    data: convertData(geoValue),
                    pointSize: 10,
                    blurSize: 8
                }]
            };

            dojo.ready(function() {
                //創建地圖
                map = new esri.Map('map', {
                    basemap: 'dark-gray',
                    center: [120.15785586158, 30.269122098642],
                    zoom: 5,
                    navigationMode: "css-transform",
                    force3DTransforms: true,
                    logo: false,
                    fitExtent: true,
                    fadeOnZoom: true,
                    slider: false
                });

                //地圖加載完成後初始化Echarts圖層
                dojo.connect(map, 'onLoad', function(themap) {
                    //這裏在地圖上創建統計圖圖層,以後統計圖的繪製將從這裏進入
                    var overlay = new Echarts3Layer(map, echarts);
                    var chartsContainer = overlay.getEchartsContainer();
                    var myChart = overlay.initECharts(chartsContainer);
                    //window.onresize = myChart.onresize;
                    echartsLayer = overlay;

                    $(window).on("resize", function() {
                        resize();
                    });

                    overlay.setOption(option);

                    setTimeout(function() {
                        clear();
                    }, 1000);
                });
            });

            function resize() {
                if(echartsLayer) {
                    var myEchart = echartsLayer.getECharts(), //echarts對象
                        $myEchartContainer = $(echartsLayer.getEchartsContainer()), //echarts統計圖所在的div
                        myMap = echartsLayer.getMap(); //地圖
                    var $myMapContainer = $(myMap.container); //地圖所在div
                    var width = $myMapContainer.width(),
                        height = $myMapContainer.height(); //獲取地圖的寬高

                    $myEchartContainer.width(width); //設置統計圖容器的寬高爲地圖容器的寬高
                    $myEchartContainer.height(height);

                    myEchart.resize(); //調用echarts的resize方法
                }
            }

            function clear() {
                if(echartsLayer) {
                    var opt = option;
                    opt.series = [{
                        type: 'heatmap',
                        coordinateSystem: 'geo',
                        data: [
                            []
                        ], //傳入空數據,以達到清除原有統計圖的效果
                        pointSize: 10,
                        blurSize: 8
                    }];
                    echartsLayer.setOption(opt);
                }
            }

            function remove() {
                if(echartsLayer) {
                    var $echartsContainer = $(echartsLayer.getEchartsContainer());
                    //移除圖層容器以達到刪除統計的效果
                    $echartsContainer.remove();
                }
            }
        </script>
    </body>

</html>

至此,已經介紹完了Arcgis Echarts熱力圖基本的使用。其中,要特別注意幾點:

1.Echarts3Layer.js路徑

2.option背景設置透明

3.使用overlay而非myChart

 

原文地址:http://www.cnblogs.com/qiaoge0923/p/9562304.html

發佈了7 篇原創文章 · 獲贊 9 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章