新聞中心
可視化我們已不再陌生,地圖也很常用。有很多公司業(yè)務(wù)范圍可能僅限于某個(gè)市區(qū),所以畫一個(gè) china 地圖意義不大,就只需要繪制某個(gè)省份或者市區(qū)的地圖,然后統(tǒng)計(jì)各個(gè)區(qū)域的一個(gè)分布情況,具體的效果如圖所示:

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、合水網(wǎng)絡(luò)推廣、微信平臺(tái)小程序開發(fā)、合水網(wǎng)絡(luò)營銷、合水企業(yè)策劃、合水品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供合水建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
一、實(shí)現(xiàn)原理:
繪制地圖之前,我們先需要明白實(shí)現(xiàn)原理是啥樣的,然后按照具體的實(shí)現(xiàn)步驟,依次實(shí)現(xiàn)效果。如果不明白原理,每次完成的都是復(fù)制粘貼。
1、開始之前,先確認(rèn)自己的地圖需要分幾層,及其作用。
2、該效果實(shí)現(xiàn),需要三層地圖實(shí)現(xiàn)效果。
- 一層放在最底層,設(shè)置地圖的邊框,對(duì)應(yīng)地圖里最外層的藍(lán)色地圖線。
- 二層放在中間,實(shí)現(xiàn)基本的地圖層,顯示對(duì)應(yīng)各個(gè)區(qū)域的名稱。
- 三層放在最外層,實(shí)現(xiàn)數(shù)據(jù)標(biāo)記,對(duì)應(yīng)地圖里圓圈和數(shù)據(jù)。
3、拖動(dòng)或縮放的時(shí)候出現(xiàn)錯(cuò)位,使其同步縮放和拖動(dòng)。
二、Echarts 使用五部曲:
1、下載并引入 echarts
Echarts 已更新到了 5.0 版本,安裝完記得檢查下自己的版本是否是 5.0 。
npm install echarts --save
下載地圖的 json 數(shù)據(jù)。
可以下載中國以及各個(gè)省、市、區(qū)地圖數(shù)據(jù)。免費(fèi)的文件下載地址:
http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=30.332329214580188&lng=106.72278672066881&zoom=3.5。
下載對(duì)應(yīng)的省份或者市區(qū)的地圖數(shù)據(jù)。
引入:
import * as echarts from "echarts"
import chinaJSON from '../../assets/json/china.json'
2、準(zhǔn)備容器
給元素定義寬高確定的容器用來裝地圖。
3、實(shí)例化 echarts 對(duì)象
import * as echarts from 'echarts'
import xianJSON from '../../assets/json/xian.json'
const xian = ref()
var myChart = echarts.init(xian.value)
// 創(chuàng)建了一個(gè) myChart 對(duì)象
如果是繪制的地圖,需要先引入和注冊(cè)地圖:
echarts.registerMap('xa', xianJSON)
4、指定配置項(xiàng)和數(shù)據(jù)
var option = {
// 存放需要繪制圖片類型,以及樣式設(shè)置
}
5、給 echarts 對(duì)象設(shè)置配置項(xiàng)
myChart.setOption(option)
三、具體實(shí)現(xiàn)步驟
步驟1:繪制基本地圖層,顯示各個(gè)區(qū)域。
具體代碼為:
style="width: 100%;height: 800px;border: solid 1px red;background: #011868;"
>
步驟2:底層繪制一個(gè)地圖層,設(shè)置地圖外層邊框。
添加 series 屬性,再繪制一個(gè)地圖層,利用 z 放到最底層。
series: [
//繪制一個(gè)新地圖
{
type: 'map',
map: 'xa',
zoom: 1,
roam: true,
center: [109.00853, 34.11078],
z: -1, // 置于底層
itemStyle: {
normal: {
areaColor: '#2e488f',
borderColor: '#0074ff',
borderWidth: 5,//設(shè)置外層邊框線粗細(xì)
},
},
},
],
步驟3:添加分布的數(shù)據(jù)點(diǎn)標(biāo)記。
給 series 中再添加一個(gè)配置項(xiàng):
{
type: 'effectScatter', // 特效散點(diǎn)圖
coordinateSystem: 'geo',
symbol: 'circle',
// symbolSize 設(shè)置標(biāo)記點(diǎn)的大小,
//把大小限制再 30 - 50 之間
symbolSize: function (val) {
return 30 + (val[2] / 100) * 20
},
colorBy: 'series',
//顯示name并設(shè)置樣式
label: {
show: true,
formatter: function (data) {
return data.value[2]
},
color: '#080b1a',
fontSize: '16',
offset: [0, 0],
align: 'center',
},
//漣漪效果設(shè)置
rippleEffect: {
color: '#32479d',
number: 3,
period: 4,
scale: 2,
brushType: 'stroke',
},
itemStyle: {
normal: {
color: '#00e6ff',
borderColor: '#32479d',
borderWidth: 2,
},
},
data: [
{ name: '藍(lán)田', value: [109.423479, 34.181634, 50] },
{ name: '長安區(qū)', value: [108.923479, 34.110134, 30] },
{ name: '周至縣', value: [108.123479, 34.010134, 2] },
{ name: '鄠邑區(qū)', value: [108.573479, 34.100134, 4] },
{ name: '臨潼區(qū)', value: [109.283479, 34.510134, 3] },
{ name: '高陵區(qū)', value: [109.059479, 34.550134, 1] },
],步驟4:處理放大縮小時(shí)不同步的問題。
捕捉 georoam 事件,上層的 geo 縮放、偏移的時(shí)候,讓下層的 map 跟著上層同步進(jìn)行。添加代碼:
myChart.on('georoam', function (params) {
var option = myChart.getOption() //獲得option對(duì)象
if (params.zoom != null && params.zoom != undefined) {
//捕捉到縮放時(shí)
option.series[0].zoom = option.geo[0].zoom //下層geo的縮放等級(jí)跟著上層的geo一起改變
option.series[0].center = option.geo[0].center //下層的geo的中心位置隨著上層geo一起改變
} else {
//捕捉到拖曳時(shí)
option.series[0].center = option.geo[0].center //下層的geo的中心位置隨著上層geo一起改變
}
myChart.setOption(option) //設(shè)置option
})
四、完整源碼
ref="xian"
style="
width: 100%;
height: 800px;
border: solid 1px red;
background: #0c0b2a;
"
>
當(dāng)前題目:用好Echart5繪制地圖,讓可視化大屏描邊酷炫
鏈接分享:http://m.fisionsoft.com.cn/article/dhddgep.html


咨詢
建站咨詢
