Echarts地圖實(shí)例詳解(地圖樣式、合并地圖、增加地圖)
概述
地圖在我們?nèi)粘5臄?shù)據(jù)可視化分析中是很常見(jiàn)的一種展示手段,不僅美觀而且很大氣。尤其是在大屏展示中更是扮演著必不可缺的角色。
地圖實(shí)現(xiàn)
下面我們就來(lái)實(shí)現(xiàn)一個(gè)基本的地圖,并為之添加一些好看的樣式。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>地圖</title>
<script src="js/echarts.js"></script>
<script src="js/jquery-2.1.1.min.js"></script>
</head>
<body>
<div id="map" style="width: 1000px;height: 800px"></div>
<script type="text/javascript">
var dt = [
{name:'芙蓉區(qū)', value: 40000.34,text:'貸款筆數(shù):54412<br/>貸款金額:468452.35萬(wàn)',selected:true},
{name:'岳麓區(qū)', value: 38000,text:'繳存人數(shù):32412'},
{name:'開(kāi)福區(qū)', value: 18000,text:'繳存人數(shù):22412'},
{name:'天心區(qū)', value: 15092,text:'繳存人數(shù):42412'},
{name:'雨花區(qū)', value: 28000,text:'繳存人數(shù):52412'},
{name:'望城區(qū)', value: 12000,text:'繳存人數(shù):72412'},
{name:'長(zhǎng)沙縣', value: 32000,text:'繳存人數(shù):82412'},
{name:'寧鄉(xiāng)縣', value: 5100,text:'繳存人數(shù):6412'},
{name:'瀏陽(yáng)市', value: 2200,text:'繳存人數(shù):3412'},
{name:'分中心', value: 4918,text:'繳存人數(shù):66412'}
];
var option = {
title : {
text: '長(zhǎng)沙市',
subtext: '各區(qū)縣',
x:'center'
},
tooltip : {
trigger: 'item',
type:'cross',
/* backgroundColor:"#ff7f50",//提示標(biāo)簽背景顏色
textStyle:{color:"#fff"}, //提示標(biāo)簽字體顏色
formatter:function(param){
return dt[param.dataIndex].name + "<br />" +dt[param.dataIndex].text;
} */
alwaysShowContent: false,
bordeRadius: 4,
borderWidth: 1,
borderColor: 'rgba(0,0,0,0.2)',
backgroundColor: 'rgba(255,255,255,0.9)',
padding: 0,
// position: "top",
textStyle: {
fontSize: 12,
color: '#333'
},
formatter: function(params) {
var color = "#FFB84D";
var a = "<div style='background-color:"+color+";padding: 5px 10px;text-align:center;color:white;font-size: 16px;'>" + dt[params.dataIndex].name + "</div>";
var num = Math.ceil(params.data.name[1].length / 10);
a += "<div style='padding:3px;'>";
for (var i = 0; i < num; i++) {
a += dt[params.dataIndex].text + "<br>";
}
a += "</div>";
return a;
}
},
visualMap: {
min: 800,
max: 50000,
text:['High','Low'],
x:'left',
y:'center',
realtime: false,
calculable: true,
inRange: {
color: ['lightskyblue','yellow', 'orangered']
}
},
toolbox:{
show : true,
orient : 'vertical',
x: 'right',
y: 'center',
borderColor: '#FFF', // 工具箱邊框顏色
borderWidth: 0, // 工具箱邊框線寬,單位px,默認(rèn)為0(無(wú)邊框)
padding: 5, // 工具箱內(nèi)邊距,單位px,默認(rèn)各方向內(nèi)邊距為5,
showTitle: false,
feature : {
saveAsImage: { show : true,
title : '保存為圖片',
type : 'jpeg'
},
restore: {show: true},
}
},
series: [{
name: '長(zhǎng)沙',
type: 'map',
map:'cs',
// symbol:'../images/shine.jpg',
// symbolSize: 41,
roam:true,
label: {
normal: {
show: true
},
emphasis: {
show: true
}
},
layoutCenter: ['50%', '50%'], //屬性定義地圖中心在屏幕中的位置,一般結(jié)合layoutSize 定義地圖的大小
// layoutSize: 11200,
itemStyle:{
normal:{label:{show:true}},
emphasis:{label:{show:true}}
},
data:dt
}]
};
$.get('json/cs.json', function (csJson) {
echarts.registerMap('cs', csJson);
var chart = echarts.init(document.getElementById('map'));
chart.setOption(option);
});
</script>
</body>
</html>示意圖如下:

一個(gè)基本的地圖就出來(lái)了。
提出問(wèn)題
熟悉長(zhǎng)沙的人就會(huì)知道,在上面這個(gè)地圖中,多了一塊區(qū)域“分中心”,在長(zhǎng)沙的地圖板塊中是沒(méi)有這個(gè)區(qū)域的,那么我是怎樣將他改變成這樣的呢。
這其實(shí)是當(dāng)初用戶(hù)提出的一個(gè)需求,因?yàn)樗麄冎惺怯幸粋€(gè)分中心的,而長(zhǎng)沙地區(qū)是沒(méi)有這個(gè)地圖區(qū)域的,所以最后決定是添加一塊湖南縮略圖樣式的區(qū)域來(lái)代表這個(gè)分中心。
當(dāng)初也是找了很多資料,沒(méi)有找到合適的辦法,然后決定用兩個(gè)地圖來(lái)表示,然后給用戶(hù)看了樣式,用戶(hù)也覺(jué)得很滿(mǎn)意,但是在真正開(kāi)發(fā)過(guò)程中確遇到了很多問(wèn)題,數(shù)據(jù)不好一起展示和聯(lián)動(dòng)。后來(lái)也是找了很久才找到一個(gè)網(wǎng)站
自定義地圖
下面來(lái)講解這個(gè)網(wǎng)站如何使用:
打開(kāi)網(wǎng)址我們可以看到這個(gè)網(wǎng)站的樣子

網(wǎng)頁(yè)的左上角是菜單欄,在open選項(xiàng)中打開(kāi)我們需要編輯的json文件
open----->file

編輯完成之后在第二個(gè)save菜單中保存我們編輯的內(nèi)容即可
save------>GeoJSON

在網(wǎng)頁(yè)的中部有一塊區(qū)域就是我們需要重點(diǎn)掌握的畫(huà)圖工具

第一個(gè)
就是根據(jù)點(diǎn)來(lái)繪圖,繪制的都是線條形狀的圖形

第二個(gè)
就是多邊形,可以快速的繪制一個(gè)多邊形區(qū)域或者是比較復(fù)雜的地圖區(qū)域。

第三個(gè)
就是矩形,能夠快速的繪制一個(gè)簡(jiǎn)單的矩形區(qū)域。

當(dāng)我們?cè)诘貓D上新增了一塊區(qū)域之后還要為這塊區(qū)域命名:

如圖:點(diǎn)擊這塊新增的區(qū)域,會(huì)出現(xiàn)一個(gè)該區(qū)域的屬性框,點(diǎn)擊Add按鈕,新增一個(gè)name屬性值為分中心。這樣就完成了地圖區(qū)域的增加。

上面這個(gè)圖的左上角就是我自己繪制的,長(zhǎng)沙的地圖原本是只有下面這塊區(qū)域的。
有了地圖的增加,那么必然會(huì)有地圖的合并。
以長(zhǎng)沙為例,假如由于行政區(qū)域的劃分,開(kāi)福區(qū)和芙蓉區(qū)合并為一個(gè)區(qū),那么我們就需要在地圖上將這兩個(gè)區(qū)進(jìn)行合并。
首先將這兩個(gè)區(qū)刪除:點(diǎn)擊芙蓉區(qū)和開(kāi)福區(qū)然后把他們兩個(gè)刪除掉

刪除后的樣子是這樣

可以看到中間空了一塊區(qū)域,然后再利用我們的點(diǎn)畫(huà)圖工具再地圖上的那塊空白區(qū)域進(jìn)行繪制即可,利用多邊形畫(huà)圖工具
將空白區(qū)域的點(diǎn)鏈接起來(lái)即可,在繪制過(guò)程中利用鼠標(biāo)滾輪盡量把地圖擴(kuò)大這樣方便繪制并且繪制的更加精密,最后將它的名字修改成合并后的名字即可。

最后將繪制完成的保存到本地即可。
地圖的東西大概就是這么多,有問(wèn)題的可以留言一起討論。
最后送上一個(gè)3D版的地圖:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../js/echarts.js"></script>
<script src="../js/echarts-gl.js"></script>
<script src="../js/jquery-2.1.1.min.js"></script>
</head>
<body>
<div id="mp" style="height: 700px;width: 100%;margin:0px;padding: 0px;"></div>
<script>
var dt = [
{name:'芙蓉區(qū)', value: 1,height:2.5},
{name:'岳麓區(qū)', value: 2,height:3.5},
{name:'開(kāi)福區(qū)', value: 3,height:4.5},
{name:'天心區(qū)', value: 4,height:1.5},
{name:'雨花區(qū)', value: 5,height:5.5},
{name:'望城區(qū)', value: 6,height:3.5},
{name:'長(zhǎng)沙縣', value: 7,height:2.5},
{name:'寧鄉(xiāng)縣', value: 8,height:4.5},
{name:'瀏陽(yáng)市', value: 9,height:5.5}
];
var option = {
// backgroundColor: "#333",
geo3D:[{
show:true,
type:'map',
map:'cs',
symbolSize: 1300,
// environment: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
// offset: 0, color: '#00aaff' // 天空顏色
// }, {
// offset: 0.7, color: '#998866' // 地面顏色
// }, {
// offset: 1, color: '#998866' // 地面顏色
// }], false),
environment:'../images/shine.jpg',
groundPlane: {
show: false,
color: "#0080FF"
},
shading: 'realistic',
// backgroundColor:'red',
itemStyle: {
areaColor: '#fff',
opacity:1,
borderColor: "rgba(100,149,237,1)",
borderWidth: 2
},
label: {
show:true,
textStyle: {
color: '#ff0000'
}
},
emphasis:{
label:{
show:true,
distance: 2
//formatter: ''
},
itemStyle:{
color:'#EF7E10',
opacity:1
}
},
instancing: false,
width: "100%",
height: "100%",
boxWidth: 160,
boxHeight: 2,
regions: dt
}],
series:[{
bevelSmoothness: 50,
type: "bar3D",
coordinateSystem: "geo3D",
backgroundcolor:'blcak',
data:[{
name:'芙蓉區(qū)',value:[112.988094,28.193106,2.5],itemStyle: {
color: "#dd6b66"
}},
{name:'岳麓區(qū)',value:[112.911591,28.213044,2.5],itemStyle: {
color: "#759aa0"
}},
{name:'開(kāi)福區(qū)',value:[112.985525,28.201336,2.5],itemStyle: {
color: "#e69d87"
}},
{name:'天心區(qū)',value:[112.97307,28.192375,2.5],itemStyle: {
color: "#8dc1a9"
}},
{name:'雨花區(qū)',value:[113.016337,28.109937,2.5],itemStyle: {
color: "#ea7e53"
}},
{name:'望城區(qū)',value:[112.819549,28.347458,2.5],itemStyle: {
color: "#eedd78"
}},
{name:'長(zhǎng)沙縣',value:[113.080098,28.237888,2.5],itemStyle: {
color: "#73a373"
}},
{name:'寧鄉(xiāng)縣',value:[112.553182,28.253928,2.5],itemStyle: {
color: "#73b9bc"
}},
{name:'瀏陽(yáng)市',value:[113.633301,28.141112,2.5],itemStyle: {
color: "#7289ab"
}
}],
maxHeight: 20,
minHeight:0,
barSize: 4
}]
};
$.get('../json/cs.json', function (chinaJson) {
echarts.registerMap('cs', chinaJson);
var chart = echarts.init(document.getElementById('mp'));
chart.setOption(option);
})
</script>
</body>
</html>效果圖:

總結(jié)
到此這篇關(guān)于Echarts地圖實(shí)例詳解的文章就介紹到這了,更多相關(guān)Echarts地圖詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
原生JS實(shí)現(xiàn)輪播效果+學(xué)前端的感受(防止走火入魔)
下面小編就為大家?guī)?lái)一篇原生JS實(shí)現(xiàn)輪播效果+學(xué)前端的感受(防止走火入魔)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
JavaScript原型式繼承實(shí)現(xiàn)方法
這篇文章主要介紹了JavaScript原型式繼承實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
JavaScript輸入郵箱自動(dòng)提示實(shí)例代碼
這篇文章主要介紹了JavaScript輸入郵箱自動(dòng)提示實(shí)例代碼,有需要的朋友可以參考一下2014-01-01
javascript權(quán)威指南 學(xué)習(xí)筆記之變量作用域分享
最近一直在看《javascript權(quán)威指南 第五版》,變量作用域這一章,看得真的有點(diǎn)累。不過(guò),收獲還是多多。2011-09-09
用json方式實(shí)現(xiàn)在 js 中建立一個(gè)map
這篇文章主要介紹了用json方式實(shí)現(xiàn)在javascript / js 中建立一個(gè)map,需要的朋友可以參考下2014-05-05
JS實(shí)現(xiàn)css hover操作的方法示例
這篇文章主要介紹了JS實(shí)現(xiàn)css hover操作的方法,涉及javascript事件響應(yīng)及頁(yè)面元素css屬性動(dòng)態(tài)操作相關(guān)技巧,需要的朋友可以參考下2017-04-04
關(guān)于document.cookie的使用javascript
構(gòu)造通用的cookie處理函數(shù) cookie的處理過(guò)程比較復(fù)雜,并具有一定的相似性。因此可以定義幾個(gè)函數(shù)來(lái)完成cookie的通用操作,從而實(shí)現(xiàn)代碼的復(fù)用。2010-10-10

