Echarts地圖使用擴充套件(1)
阿新 • • 發佈:2019-01-22
本文主要介紹map與geo兩種圖形的聯合使用,以及一些屬性的妙用。
實現效果:在世界地圖上標註省會城市的地理位置,以下只是選擇性的顯示了幾個點,如下圖所示:
實現此效果,需要有兩個series物件,series[0]為顏色漸變的世界地圖,series[1] 為 geo地理位置點;
需要引入的js
echarts.min.js 官網下載即可
world.js 官網下載即可
jquery-2.2.3.min.js
jquery.resize.js
實現過程
1、獲取世界地圖各省會城市對應的地理位置
我們可以看到echarts3官網上提供了world地圖檔案,可以儲存成js或者json格式,下載world.json格式的地圖檔案,開啟我們可以看到,每個國家對應有一個coordinates列表,裡面是這個國家對應的各個城市的座標列表,但是沒有明確說明哪個座標是省會城市,於是我摒棄了官網的world檔案,從網上找到了一份相對比較齊全的世界地圖省會城市的地理位置表。
以下是world.json檔案
{
"coordinates" : {
"阿富汗" : [69.11, 34.28],
"阿爾巴尼亞" : [19.49, 41.18],
"阿爾及利亞" : [3.08, 36.42],
"美屬薩摩亞" : [-170.43, -14.16],
"安道爾" : [1.32, 42.31],
"安哥拉" : [13.15, -8.50],
"安地卡及巴布達" : [-61.48, 17.20],
"阿根廷" : [-60.00, -36.30 ],
"亞美尼亞" : [44.31, 40.10],
"阿魯巴" : [-70.02, 12.32],
"澳大利亞" : [149.08, -35.15],
"奧地利" : [16.22, 48.12],
"亞塞拜然" : [49.56, 40.29],
"巴哈馬" : [-77.20, 25.05],
"巴林" : [50.30, 26.10],
"孟加拉國" : [90.26, 23.43],
"巴貝多" : [-59.30, 13.05],
"白俄羅斯" : [27.30 , 53.52],
"比利時" : [4.21, 50.51],
"貝里斯" : [-88.30, 17.18],
"貝南" : [2.42, 6.23],
"不丹" : [89.45, 27.31],
"玻利維亞" : [-68.10, -16.20],
"波斯尼亞和黑塞哥維那" : [18.26, 43.52],
"波札那" : [25.57, -24.45],
"巴西" : [-47.55, -15.47],
"英屬維爾京群島" : [-64.37, 18.27],
"汶萊" : [115.00, 4.52],
"保加利亞" : [23.20, 42.45],
"布吉納法索" : [-1.30, 12.15],
"蒲隆地" : [29.18, -3.16],
"柬埔寨" : [104.55, 11.33],
"喀麥隆" : [11.35, 3.50],
"加拿大" : [-75.42, 45.27],
"維德角" : [-23.34, 15.02],
"開曼群島" : [-81.24, 19.20],
"中非共和國" : [18.35, 4.23],
"查德" : [14.59, 12.10],
"智利" : [-70.40, -33.24],
"中國" : [116.20, 39.55],
"哥倫比亞" : [-74.00, 4.34],
"葛摩" : [43.16, -11.40],
"剛果" : [15.12, -4.09],
"哥斯大黎加" : [-84.02, 9.55],
"象牙海岸" : [-5.17, 6.49],
"克羅埃西亞" : [15.58, 45.50],
"古巴" : [-82.22, 23.08],
"塞普勒斯" : [33.25, 35.10],
"捷克共和國" : [14.22, 50.05],
"朝鮮" : [125.30, 39.09],
"剛果(扎伊爾)" : [15.15, -4.20],
"丹麥" : [12.34, 55.41],
"吉布提" : [42.20, 11.08],
"多明尼加" : [-61.24, 15.20],
"多明尼加共和國" : [-69.59, 18.30],
"東帝汶" : [125.34, -8.29],
"厄瓜多" : [-78.35, -0.15],
"埃及" : [31.14, 30.01],
"薩爾瓦多" : [-89.10, 13.40],
"赤道幾內亞" : [8.50, 3.45],
"厄利垂亞" : [38.55, 15.19],
"愛沙尼亞" : [24.48, 59.22],
"衣索比亞" : [38.42, 9.02],
"福克蘭群島(馬爾維納斯群島)" : [-59.51, -51.40],
"法羅群島" : [-6.56, 62.05],
"斐濟" : [178.30, -18.06],
"芬蘭" : [25.03, 60.15],
"法國" : [2.20, 48.50],
"法屬蓋亞那" : [-52.18, 5.05],
"法屬波利尼西亞" : [-149.34, -17.32],
"加彭" : [9.26, 0.25],
"甘比亞" : [-16.40, 13.28],
"喬治亞" : [44.50, 41.43],
"德國" : [13.25, 52.30],
"迦納" : [-0.06, 5.35],
"希臘" : [23.46, 37.58],
"格陵蘭" : [-51.35, 64.10],
"瓜德羅普島" : [-61.44, 16.00],
"瓜地馬拉" : [-90.22, 14.40],
"根西島" : [-2.33, 49.26],
"幾內亞" : [-13.49, 9.29],
"幾內亞比索" : [-15.45, 11.45],
"蓋亞那" : [-58.12, 6.50],
"海地" : [-72.20, 18.40],
"赫德島和麥當勞群島" : [74.00, -53.00],
"宏都拉斯" : [-87.14, 14.05],
"匈牙利" : [19.05, 47.29],
"冰島" : [-21.57, 64.10],
"印度" : [77.13, 28.37],
"印度尼西亞" : [106.49, -6.09],
"伊朗" : [51.30, 35.44],
"伊拉克" : [44.30, 33.20],
"愛爾蘭" : [-6.15, 53.21],
"以色列" : [35.12, 31.47],
"義大利" : [12.29, 41.54],
"牙買加" : [-76.50, 18.00],
"約旦" : [35.52, 31.57],
"哈薩克" : [71.30, 51.10],
"肯亞" : [36.48, -1.17],
"吉里巴斯" : [173.00, 1.30],
"科威特" : [48.00, 29.30],
"吉爾吉斯斯坦" : [74.46, 42.54],
"寮國" : [102.36, 17.58],
"拉脫維亞" : [24.08, 56.53],
"黎巴嫩" : [35.31, 33.53],
"賴索托" : [27.30, -29.18],
"賴比瑞亞" : [-10.47, 6.18],
"阿拉伯利比亞民眾國" : [13.07, 32.49],
"列支敦斯登" : [9.31, 47.08],
"立陶宛" : [25.19, 54.38],
"盧森堡" : [6.09, 49.37],
"馬達加斯加" : [47.31, -18.55],
"馬拉維" : [33.48, -14.00],
"馬來西亞" : [101.41, 3.09],
"馬爾地夫" : [73.28, 4.00],
"馬裡" : [-7.55, 12.34],
"馬耳他" : [14.31, 35.54],
"馬提尼克島" : [-61.02, 14.36],
"茅利塔尼亞" : [57.30, -20.10],
"馬約特島" : [45.14, -12.48],
"墨西哥" : [-99.10, 19.20],
"密克羅尼西亞(聯邦) " : [158.09, 6.55],
"摩爾多瓦共和國" : [28.50, 47.02],
"莫三比克" : [32.32, -25.58],
"緬甸" : [96.20, 16.45],
"納米比亞" : [17.04, -22.35],
"尼泊爾" : [85.20, 27.45],
"荷蘭" : [4.54, 52.23],
"荷屬安的列斯" : [-69.00, 12.05],
"新喀里多尼亞" : [166.30, -22.17],
"紐西蘭" : [174.46, -41.19],
"尼加拉瓜" : [-86.20, 12.06],
"尼日" : [2.06, 13.27],
"奈及利亞" : [7.32, 9.05],
"諾福克島" : [168.43, -45.20],
"北馬裡亞納群島" : [145.45, 15.12],
"挪威" : [10.45, 59.55],
"阿曼" : [58.36, 23.37],
"巴基斯坦" : [73.10, 33.40],
"帛琉" : [134.28, 7.20],
"巴拿馬" : [-79.25, 9.00],
"巴布亞紐幾內亞" : [147.08, -9.24],
"巴拉圭" : [-57.30, -25.10],
"祕魯" : [-77.00, -12.00],
"菲律賓" : [121.03, 14.40],
"波蘭" : [21.00, 52.13],
"葡萄牙" : [-9.10, 38.42],
"波多黎各" : [-66.07, 18.28],
"卡達" : [51.35, 25.15],
"韓國" : [126.58, 37.31],
"羅馬尼亞" : [26.10, 44.27],
"俄羅斯" : [37.35, 55.45],
"盧安達" : [30.04, -1.59],
"聖克里斯多福及尼維斯" : [-62.43, 17.17],
"聖露西亞" : [-60.58, 14.02],
"聖皮埃爾和密克隆" : [-56.12, 46.46],
"聖文森及格瑞那丁" : [-61.10, 13.10],
"薩摩亞" : [-171.50, -13.50],
"聖馬利諾" : [12.30, 43.55],
"聖多美和普林西比" : [6.39, 0.10],
"沙烏地阿拉伯" : [46.42, 24.41],
"塞內加爾" : [-17.29, 14.34],
"獅子山" : [-13.17, 8.30],
"斯洛伐克" : [17.07, 48.10],
"斯洛維尼亞" : [14.33, 46.04],
"索羅門群島" : [159.57, -9.27],
"索馬利亞" : [45.25, 2.02],
"比勒陀利亞" : [28.12, -25.44],
"西班牙" : [-3.45, 40.25],
"蘇丹" : [32.35, 15.31],
"蘇利南" : [-55.10, 5.50],
"史瓦濟蘭" : [31.06, -26.18],
"瑞典" : [18.03, 59.20],
"瑞士" : [7.28, 46.57],
"阿拉伯敘利亞共和國" : [36.18, 33.30],
"塔吉克" : [68.48, 38.33],
"泰國" : [100.35, 13.45],
"馬其頓" : [21.26, 42.01],
"多哥" : [1.20, 6.09],
"湯加" : [-174.00, -21.10],
"突尼西亞" : [10.11, 36.50],
"土耳其" : [32.54, 39.57],
"土庫曼" : [57.50, 38.00],
"吐瓦魯" : [179.13, -8.31],
"烏干達" : [32.30, 0.20],
"烏克蘭" : [30.28, 50.30],
"阿聯酋" : [54.22, 24.28],
"英國" : [-0.05, 51.36],
"坦尚尼亞" : [35.45, -6.08],
"美國" : [-77.02, 39.91],
"美屬維爾京群島" : [-64.56, 18.21],
"烏拉圭" : [-56.11, -34.50],
"烏茲別克" : [69.10, 41.20],
"萬那杜" : [168.18, -17.45],
"委內瑞拉" : [-66.55, 10.30],
"越南" : [105.55, 21.05],
"南斯拉夫" : [20.37, 44.50],
"尚比亞" : [28.16, -15.28],
"辛巴威" : [31.02, -17.43],
"日本":[139.69, 35.70]
},
"UTF8Encoding" : true
}
2、畫出顏色漸變的世界地圖 及 在地圖上標註出各個省會的地理位置
2.1 初始化世界地圖
function load_world_map(max, data){
//國家名稱中英文對應關係
var nameMap = {
'Afghanistan':'阿富汗',
'Angola':'安哥拉',
'Albania':'阿爾巴尼亞',
'United Arab Emirates':'阿拉伯聯合大公國',
'Argentina':'阿根廷',
'Armenia':'亞美尼亞',
'French Southern and Antarctic Lands':'法屬南半球領地',
'Australia':'澳大利亞',
'Austria':'奧地利',
'Azerbaijan':'亞塞拜然',
'Burundi':'蒲隆地',
'Belgium':'比利時',
'Benin':'貝南',
'Burkina Faso':'布吉納法索',
'Bangladesh':'孟加拉國',
'Bulgaria':'保加利亞',
'The Bahamas':'巴哈馬',
'Bosnia and Herzegovina':'波黑',
'Belarus':'白俄羅斯',
'Belize':'貝里斯',
'Bermuda':'百慕大',
'Bolivia':'玻利維亞',
'Brazil':'巴西',
'Brunei':'汶萊',
'Bhutan':'不丹',
'Botswana':'波札那',
'Central African Republic':'中非共和國',
'Canada':'加拿大',
'Switzerland':'瑞士',
'Chile':'智利',
'China':'中國',
'Ivory Coast':'象牙海岸',
'Cameroon':'喀麥隆',
'Democratic Republic of the Congo':'剛果民主共和國',
'Republic of the Congo':'剛果共和國',
'Colombia':'哥倫比亞',
'Costa Rica':'哥斯大黎加',
'Cuba':'古巴',
'Northern Cyprus':'北塞普勒斯',
'Cyprus':'塞普勒斯',
'Czech Republic':'捷克',
'Germany':'德國',
'Djibouti':'吉布提',
'Denmark':'丹麥',
'Dominican Republic':'多明尼加共和國',
'Algeria':'阿爾及利亞',
'Ecuador':'厄瓜多',
'Egypt':'埃及',
'Eritrea':'厄利垂亞',
'Spain':'西班牙',
'Estonia':'愛沙尼亞',
'Ethiopia':'衣索比亞',
'Finland':'芬蘭',
'Fiji':'斐濟',
'Falkland Islands':'福克蘭群島',
'France':'法國',
'Gabon':'加彭',
'United Kingdom':'英國',
'Georgia':'喬治亞',
'Ghana':'迦納',
'Guinea':'幾內亞',
'Gambia':'甘比亞',
'Guinea Bissau':'幾內亞比索',
'Equatorial Guinea':'赤道幾內亞',
'Greece':'希臘',
'Greenland':'格陵蘭島',
'Guatemala':'瓜地馬拉',
'French Guiana':'法屬蓋亞那',
'Guyana':'蓋亞那',
'Honduras':'宏都拉斯',
'Croatia':'克羅埃西亞',
'Haiti':'海地',
'Hungary':'匈牙利',
'Indonesia':'印度尼西亞',
'India':'印度',
'Ireland':'愛爾蘭',
'Iran':'伊朗',
'Iraq':'伊拉克',
'Iceland':'冰島',
'Israel':'以色列',
'Italy':'義大利',
'Jamaica':'牙買加',
'Jordan':'約旦',
'Japan':'日本',
'Kazakhstan':'哈薩克',
'Kenya':'肯亞',
'Kyrgyzstan':'吉爾吉斯斯坦',
'Cambodia':'柬埔寨',
'South Korea':'韓國',
'Kosovo':'科索沃',
'Kuwait':'科威特',
'Laos':'寮國',
'Lebanon':'黎巴嫩',
'Liberia':'賴比瑞亞',
'Libya':'利比亞',
'Sri Lanka':'斯里蘭卡',
'Lesotho':'賴索托',
'Lithuania':'立陶宛',
'Luxembourg':'盧森堡',
'Latvia':'拉脫維亞',
'Morocco':'摩洛哥',
'Moldova':'摩爾多瓦',
'Madagascar':'馬達加斯加',
'Mexico':'墨西哥',
'Macedonia':'馬其頓',
'Mali':'馬裡',
'Myanmar':'緬甸',
'Montenegro':'黑山',
'Mongolia':'蒙古',
'Mozambique':'莫三比克',
'Mauritania':'茅利塔尼亞',
'Malawi':'馬拉維',
'Malaysia':'馬來西亞',
'Namibia':'納米比亞',
'New Caledonia':'新喀里多尼亞群島',
'Niger':'尼日',
'Nigeria':'奈及利亞',
'Nicaragua':'尼加拉瓜',
'Netherlands':'荷蘭',
'Norway':'挪威',
'Nepal':'尼泊爾',
'New Zealand':'紐西蘭',
'Oman':'阿曼',
'Pakistan':'巴基斯坦',
'Panama':'巴拿馬',
'Peru':'祕魯',
'Philippines':'菲律賓',
'Papua New Guinea':'巴布亞紐幾內亞',
'Poland':'波蘭',
'Puerto Rico':'波多黎各',
'North Korea':'朝鮮',
'Portugal':'葡萄牙',
'Paraguay':'巴拉圭',
'Qatar':'卡達',
'Romania':'羅馬尼亞',
'Russia':'俄羅斯',
'Rwanda':'盧安達',
'Western Sahara':'西薩摩亞',
'Saudi Arabia':'沙烏地阿拉伯',
'Sudan':'蘇丹',
'South Sudan':'南蘇丹',
'Senegal':'塞內加爾',
'Solomon Islands':'索羅門群島',
'Sierra Leone':'獅子山',
'El Salvador':'薩爾瓦多',
'Somaliland':'索馬利亞蘭',
'Somalia':'索馬利亞',
'Republic of Serbia':'塞爾維亞',
'Suriname':'蘇利南',
'Slovakia':'斯洛伐克',
'Slovenia':'斯洛維尼亞',
'Sweden':'瑞典',
'Swaziland':'史瓦濟蘭',
'Syria':'敘利亞',
'Chad':'查德',
'Togo':'多哥',
'Thailand':'泰國',
'Tajikistan':'塔吉克',
'Turkmenistan':'土庫曼',
'East Timor':'東帝汶',
'Trinidad and Tobago':'特里尼達和多巴哥',
'Tunisia':'突尼西亞',
'Turkey':'土耳其',
'United Republic of Tanzania':'坦尚尼亞',
'Uganda':'烏干達',
'Ukraine':'烏克蘭',
'Uruguay':'烏拉圭',
'United States of America':'美國',
'Uzbekistan':'烏茲別克',
'Venezuela':'委內瑞拉',
'Vietnam':'越南',
'Vanuatu':'萬那杜共和國',
'West Bank':'西岸',
'Yemen':'葉門',
'South Africa':'南非',
'Zambia':'尚比亞',
'Zimbabwe':'辛巴威',
'Singapore':"新加坡"
};
var mapData = [];
$.each(data, function(i, obj){
var name = obj.name;
for(var key in nameMap) {
if( nameMap[key] == obj.name){
name = key;
}
}
mapData.push({
name : name,
value : obj.value,
tooltip : {
formatter : "{a}<br/>"+nameMap[name]+":"+obj.value
}
});
})
var option = {
tooltip: {
trigger: 'item'
},
visualMap: {
show: true,
min: 0,
max: max,
left: 'left',
top: 'bottom',
text: ['高','低'], // 文字,預設為數值文字
calculable: true,
seriesIndex:0, //多個series組成元素,此顏色配置範圍只用於series[0]
inRange: {
color: ['lightskyblue', 'yellow', 'orange']
}
},
geo: {
map: 'world',
show: true,
zoom: 1.2,
label:{
normal: {
show:false
},
emphasis: {
show:true
}
},
roam: true,
selectedMode : 'single'
},
series: [{
name: '數量',
type: 'map',
map: 'world',
roam: true,
zoom: 1.2,
label:{
normal: {
show:false,
},
emphasis : {
show : true,
formatter: function (params) {
return nameMap[params.name]; //此處代替nameMap
}
}
},
// nameMap : nameMap, //使用nameMap時,label顯示的會不準確,不在地圖中間
data: mapData,
geoIndex:0,
}]
};
var worldMapChart = echarts.init(document.getElementById('world-map'));
worldMapChart.setOption(option);
worldMapChart.on("click", function(param) {
var country_zh = param.name;
if (country_zh != undefined && country_zh!=null) {
country_zh = nameMap[country_zh]; //獲取中文名稱
common.doSearch("country", country_zh);
}
});
$('#world-map-box').resize(function() {
worldMapChart.resize();
});
}
2.2 載入資料,使地圖顏色漸變,並標註各個國家的省會地理位置
function loadData(){
var data = [{
"name" : "中國",
"value" : 20677
}, {
"name" : "美國",
"value" : 3337
}, {
"name" : "日本",
"value" : 484
}, {
"name" : "韓國",
"value" : 347
}, {
"name" : "印度",
"value" : 154
}, {
"name" : "澳大利亞",
"value" : 124
}, {
"name" : "德國",
"value" : 102
}, {
"name" : "新加坡",
"value" : 101
}, {
"name" : "泰國",
"value" : 91
}, {
"name" : "加拿大",
"value" : 81
}, {
"name" : "法國",
"value" : 58
}, {
"name" : "英國",
"value" : 56
}, {
"name" : "越南",
"value" : 56
}, {
"name" : "荷蘭",
"value" : 43
}, {
"name" : "印度尼西亞",
"value" : 40
}, {
"name" : "馬來西亞",
"value" : 39
}, {
"name" : "俄羅斯",
"value" : 38
}, {
"name" : "墨西哥",
"value" : 38
}, {
"name" : "義大利",
"value" : 34
}, {
"name" : "菲律賓",
"value" : 33
}, {
"name" : "波蘭",
"value"