【highcharts】highcharts(highmaps)實現疫情地圖(一看就會篇)

【highcharts】highcharts(highmaps)實現疫情地圖

有人可能問爲什麼不用echarts,echarts簡單容易上手啊,因爲echarts他官網沒有地圖數據的下載地址需要自己上網搜比較麻煩,並且highcharts官網有全世界的地圖,大到世界地圖小到世界各地市區地圖,都是比較全的,後期加個下鑽功能也是比較方便容易的。

一,highcharts使用介紹

Highcharts 是一個用純 JavaScript 編寫的一個圖表庫, 能夠很簡單便捷的在 Web 網站或是 Web 應用程序添加有交互性的圖表,並且免費提供給個人學習、個人網站和非商業用途使用。

注意

如果您既想做地圖又想做圖表,那麼您只需要從官網下載文件,並且引入
highcharts.js + map.js
官網地址:官網地址

<script src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script> 
<script src="http://cdn.hcharts.cn/highmaps/modules/map.js"></script> 

如果您只需要實現地圖的功能,那麼只需要 highmaps就ok.
highmaps下載地址:https://www.highcharts.com.cn/download

<script src="http://cdn.highcharts.com.cn/highmaps/8.0.4/highmaps.js"></script>

二,開始使用

1.首先你需要有一個具有寬高的dom元素

<div id="container" style="width: 600px;height:400px;"></div>

2.你需要中國地圖和世界地圖的js數據,地址https://img.hcharts.cn/mapdata/選擇js文件,然後他會打開一個網頁,你把內容全選並且複製到你的記事本里,把記事本後綴txt,改成json數據就算是完成了。
並且引用他們

<script src="./Js/China.json"></script>
<script src="./Js/word1.json"></script>

3.然後初始化charts,然後寫入數據,並且配置它,就直接上成品代碼,大家往裏套就好

 var map_china_tol_data = [{
                "name": "北京",
                "value": 480
            },
            {
                "name": "天津",
                "value": 136
            }, {
                "name": "河北",
                "value": 318
            }, {
                "name": "山西",
                "value": 133
            }, {
                "name": "內蒙古",
                "value": 75
            }, {
                "name": "遼寧",
                "value": 125
            }, {
                "name": "吉林",
                "value": 93
            }, {
                "name": "黑龍江",
                "value": 483
            }, {
                "name": "上海",
                "value": 363
            }, {
                "name": "江蘇",
                "value": 631
            }, {
                "name": "浙江",
                "value": 1233
            }, {
                "name": "安徽",
                "value": 990
            }, {
                "name": "福建",
                "value": 296
            }, {
                "name": "江西",
                "value": 935
            }, {
                "name": "山東",
                "value": 761
            }, {
                "name": "河南",
                "value": 1273
            }, {
                "name": "湖北",
                "value": 67800
            }, {
                "name": "湖南",
                "value": 1018
            }, {
                "name": "廣東",
                "value": 1378
            }, {
                "name": "廣西",
                "value": 253
            }, {
                "name": "海南",
                "value": 168
            }, {
                "name": "重慶",
                "value": 576
            }, {
                "name": "四川",
                "value": 540
            }, {
                "name": "貴州",
                "value": 146
            }, {
                "name": "雲南",
                "value": 176
            }, {
                "name": "西藏",
                "value": 1
            }, {
                "name": "陝西",
                "value": 246
            }, {
                "name": "甘肅",
                "value": 133
            }, {
                "name": "青海",
                "value": 18
            }, {
                "name": "寧夏",
                "value": 75
            }, {
                "name": "新疆",
                "value": 76
            }, {
                "name": "臺灣",
                "value": 108
            }, {
                "name": "香港",
                "value": 109
            }, {
                "name": "澳門",
                "value": 110
            }, {
                "name": "南海諸島",
                "value": 0
            }, {
                "name": "南海諸島",
                "value": 0
            }
        ];
        // 初始化圖表
        //map_china_tol:你的dom元素的id名
        var map = new Highcharts.Map('map_china_tol', {
            title: {
                text: '中國累計確診'
            },
            mapNavigation: {
                enabled: true,
                enableButtons: false,
                enableTouchZoom:false,
                enableDoubleClickZoomTo: true
            },
            legend: {
                align: 'left',
                verticalAlign: 'top',
                floating: true,
                x: 0,
                y: -20
            },
            colorAxis: {
                dataClasses: [{
                    to: 1,
                    color: 'white',
                }, {
                    from: 1,
                    to: 59,
                    color: '#f2ab9a',
                }, {
                    from: 59,
                    to: 599,
                    color: '#f96c4e',
                }, {
                    from: 599,
                    to: 2999,
                    color: '#f13c10',
                }, {
                    from: 2999,
                    color: '#500b00',
                }],

            },
            series: [{
                data: map_china_tol_data,
                name: '現存確診',
                mapData: Highcharts.maps['cn/china'],
                joinBy: 'name' // 根據 name 屬性進行關聯
            }]
        });

還有一點需要注意

mapData: Highcharts.maps['cn/china'],

這個地方,需要和你地圖數據的js文件的
在這裏插入圖片描述
這個位置對應上,不然是跟沒有地圖數據是一樣的,一片空白。

我做的這個支持雙擊放大,鼠標滾輪放大,但是不支持手機的手勢操作,想要添加手勢操作的同學 把enableTouchZoom:false的false改成ture就好了。

4.世界地圖注意
下載過世界地圖的同學可能知道,世界地圖國家名稱都是英文的,那麼如何改成中文的呢,

{
        "type": "Feature",
        "id": "US",
        "properties": {
            "hc-group": "admin0",
            "hc-middle-x": 0.70,
            "hc-middle-y": 0.68,
            "hc-key": "us",
            "hc-a2": "US",
            "name": "美國",
            //解決方法
            //這個name原來是英文,改成中文,
            //然後在js配置數據的時候,你的名字就可以是中文的了
            //不過這個name要和你js配置數據的name保持一致,不然是無效的
            "labelrank": "2",
            "country-abbrev": "U.S.A.",
            "subregion": "Northern America",
            "region-wb": "North America",
            "iso-a3": "USA",
            "iso-a2": "US",
            "woe-id": "23424977",
            "continent": "North America"
        },

解決方法就是我註釋中提到的這些了,這是個笨方法只能一個個改,
原諒我才疏淺陋,其他漢化方法我還沒想到。


以上就是我在做完疫情地圖這個項目之後的總結,可能比較low,但是我把我做項目的時候遇到的問題都分享出來了,大家可以避免踩很多坑。

各位學長學姐知道其他簡單的漢化方法的可以評論區告訴我,謝謝大家了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章