1. 程式人生 > 程式設計 >JavaScript資料視覺化:ECharts製作地圖

JavaScript資料視覺化:ECharts製作地圖

目錄
  • 概述
  • 注意事項
    • 一. 使用方式
    • 二. 實現步驟
  • 初步實現程式碼
    • 效果:
      • geo常見配置
        • 加上面配置之後的效果圖:
          • 顯示某一個省份(河南省)
            • 效果
              • 不同區域顯示不同顏色
                • 地圖和散點圖的結合
                  • 總結

                    概述

                    地圖在我們日常的資料視覺化分析中是很常見的一種展示手段,不僅美觀而且很大氣。尤其是在大屏展示中更是扮演著必不可缺的角色

                    注意事項

                    一. 使用方式

                    1.百度地圖API(高德地圖API)

                    • 需要申請百度API

                    2.向量地圖

                    • 需要準備向量地圖資料

                    二. 實現步驟

                    1.ECharts最基本的程式碼結構

                    引入檔案–DOM容器–初始化物件–設定option

                    2.準備中國的向量地圖json檔案,放到json/map/的目錄下

                    3.使用Ajax獲取china.json

                    //
                    $get('json/map/china.json',function (chinaJson) {})
                    

                    4.在回撥函式中往echarts全域性物件註冊地圖的json資料

                    echarts.registerMap('chinaMap',chinaJson)
                    

                    5.在geo下設定

                    {
                        type:'map',map:'chinaMap'
                    }
                    

                    初步實現程式碼

                    <!DOCTYPE html>
                    <html lang="en">
                    <head>
                        <meta charset="UTF-8">
                        <meta http-equiv="X-UA-Compatible" content="IE=edge">
                        <meta name
                    ="viewport" content="width=device-width,initial-scale=1.0"> <title>地圖的實現</title> <script src="./lib/echarts.min.js"></script> <script src="./lib/.min.js"></script> </head> <body> <div style="width:600px;height:400px;"></div> <script> var myCharts = echarts.init(document.querySelector('div')) $.get('./json/map/china.json',function (chinaJson) { // chinaJson 就是中國的各個省份的向量地圖資料 // console.log(chinaJson); // 註冊地圖資料 echarts.registerMap('chinaMap',chinaJson) var option = { geo:{ type: 'map',//chinaMap需要和registerMap中的第一個引數保持一致 map: 'chinaMap' } } myCharts.setOption(option) }) </script> </body> </html>

                    返回資料chinaJson在瀏覽器後臺輸出截圖:

                    在這裡插入圖片描述

                    我們展開某一省份看一下(以臺灣省為例):

                    在這裡插入圖片描述

                    效果:

                    在這裡插入圖片描述

                    geo常見配置

                    允許縮放和拖拽效果

                    roam: true

                    名稱顯示

                    label{
                    show:true
                    }

                    初始縮放比例

                    zoom: 1.2

                    設定地圖中心點的座標

                    // 這個座標點在我們返回的資料裡是可以拿到的
                    center: [121.509062,25.044332]

                    新增上面配置之後的效果圖:

                    在這裡插入圖片描述

                    顯示某一個省份(河南省)

                    這裡沒什麼好說的,就是把向量地圖資料由原來的全國換成河南就好

                    PS:款哥是河南的,所以用了河南省舉例

                    <!DOCTYPE html>
                    <html lang="en">
                    <head>
                        <meta charset="UTF-8">
                        <meta http-equiv="X-UA-Compatible" content="IE=edge">
                        <meta name="viewport" content="width=device-width,initial-scale=1.0">
                        <title>地圖-某一區域的展示</title>
                        <script src="./lib/echarts.min.js"></script>
                        <script src="./lib/jquery.min.js"></script>
                    </head>
                    <body>
                        <div style="width:600px;height:400px;"></div>
                        <script>
                            var myCharts = echarts.init(document.querySelector('div'))
                            $.get('json/map/henan.json',(ret) => {
                                echarts.registerMap('henanMap',ret)
                                console.log(ret);
                                var option = {
                                    geo:{
                                        type:'map',map:'henanMap',zoom: 1,label: {
                                            show: true
                                        },center: [115.650497,34.437054],roam: true
                                    }
                                }
                                myCharts.setOption(option)
                            })
                        </script>
                    </body>
                    </html>
                    

                    效果

                    在這裡插入圖片描述

                    不同區域顯示不同顏色

                    1.顯示基本的中國地圖

                    2.將空氣質量的資料設定給series下的物件

                    3.將series下的資料和geo關聯起來

                    4.配置visualMap

                    注意:這裡我們需要準備一個數組,這個數組裡面是一個一個物件,每個物件有兩個key值name對應省份名稱,value對應的是顏色值

                    先看下效果圖是不是很熟悉:

                    在這裡插入圖片描述

                    類似於我們的新冠資料圖就是大致這個效果,疫情遠沒有結束,大家一定不要掉以輕心,積極接種疫苗,做好日常防護

                    程式碼如下,註釋也比較詳細,就不一一解讀了

                    <!DOCTYPE html>
                    <html lang="en">
                    <head>
                        <meta charset="UTF-8">
                        <meta http-equiv="X-UA-Compatible" content="IE=edge">
                        <meta name="viewport" content="width=device-width,initial-scale=1.0">
                        <title>地圖的實現</title>
                        <script src="./lib/echarts.min.js"></script>
                        <script src="./lib/jquery.min.js"></script>
                    </head>
                    <body>
                        <div style="width:600px;height:400px;"></div>
                        <script>
                            /**
                             * 1.顯示基本的中國地圖
                             * 2.將空氣質量的資料設定給series下的物件
                             * 3.將series下的資料和geo關聯起來
                             * 4.配置visualMap
                             */
                            var airData = [
                                { name: '北京',value: 39.92 },{ name: '天津',value: 39.13 },{ name: '上海',value: 31.22 },{ name: '重慶',value: 66 },{ name: '河北',value: 147 },{ name: '河南',value: 113 },{ name: '雲南',value: 25.04 },{ name: '遼寧',value: 50 },{ name: '黑龍江',value: 114 },{ name: '湖南',value: 175 },{ name: '安徽',value: 117 },{ name: '山東',value: 92 },{ name: '新疆',value: 84 },{ name: '江蘇',value: 67 },{ name: '浙江',{ name: '江西',value: 96 },{ name: '湖北',value: 273 },{ name: '廣西',value: 59 },{ name: '甘肅',value: 99 },{ name: '山西',value: 39 },{ name: '內蒙古',value: 58 },{ name: '陝西',value: 61 },{ name: '吉林',value: 51 },http://www.cppcns.com       { name: '福建',value: 29 },{ name: '貴州',value: 71 },{ name: '廣東',value: 38 },{ name: '青海',value: 57 },{ name: '西藏',value: 24 },{ name: '四川',{ name: www.cppcns.com'寧夏',value: 52 },{ name: '海南',value: 54 },{ name: '臺灣',value: 88 },{ name: '香港',{ name: '澳門',value: 77 },{ name: '南海諸島',value: 55 }
                            ]
                            var myCharts = echarts.init(document.querySelector('div'))
                            $.get('./json/map/china.json',function (chinaJson) {
                                echarts.registerMap('chinaMap',//chinaMap需要和registerMap中的第一個引數保持一致
                                        map: 'chinaMap',// 允許縮放和拖拽效果
                                        roam: true,// 名稱顯示
                                        label:{
                                            show: true
                                        }
                                    },series: [
                                        {
                                            type: 'map',data: airData,geoIndex: 0 //將空氣質量的資料與第0個geo的配置關聯起來
                                        }
                                    ],visualMap: {
                                        min: 0,max: 300,inRange: {
                                            // 控制顏色漸變的範圍
                                            color: ['#fff','#f00']
                                        },// 出現滑塊
                                        calculable: true
                                    }
                                }
                                myCharts.setOption(option)
                            })
                        </script>
                    </body>
                    </html>
                    

                    地圖和散點圖的結合

                    1.就是給上面的程式碼基礎上,series新增下面這段配置

                    {
                         data: scatterData,//配置散點的座標資料
                         type: 'effectScatter',coordinateSystem: 'geo',//指明散點使用的座標系統  geo的座標系統
                         rippleEffect: {
                              scale: 10  //設定漣漪動畫的縮放比例
                         }
                    }
                    

                    效果圖:

                    在這裡插入圖片描述

                    總結

                    本片文章就到這裡了,希望能夠給你帶來幫助,也希望您能www.cppcns.com夠多多關注我們的更多內容!