摘要:導(dǎo)語(yǔ)大數(shù)據(jù)呈現(xiàn)應(yīng)用越來(lái)越廣泛支持大數(shù)據(jù)呈現(xiàn)的,水平較高的有然而在地圖呈現(xiàn)的功能上,大都只能繪制矢量地圖,而不能呈現(xiàn)具有真實(shí)效果的地圖鑒于此,本文重點(diǎn)在于如何制作一張,即可以看到真實(shí)效果,又能進(jìn)行交互的矢量地圖先睹為快若有所思技術(shù)選擇想實(shí)現(xiàn)上
導(dǎo)語(yǔ)
先睹為快 若有所思 技術(shù)選擇大數(shù)據(jù)呈現(xiàn)應(yīng)用越來(lái)越廣泛,支持大數(shù)據(jù)呈現(xiàn)的SDK,水平較高的有echarts、highchart、D3;然而在地圖呈現(xiàn)的功能上,大都只能繪制矢量地圖,而不能呈現(xiàn)具有真實(shí)效果的地圖;鑒于此,本文重點(diǎn)在于如何制作一張,即可以看到真實(shí)效果,又能進(jìn)行交互的矢量地圖;
想實(shí)現(xiàn)上述效果,最先想到的SDK是TWaver,思路也非常的簡(jiǎn)單;
使用Node呈現(xiàn)一張地圖背景圖片,像素越大越好,縮放效果好;
使用ShapeNode加載地圖數(shù)據(jù),并設(shè)置好位置、縮放比例等因素,恰好與地圖重疊;
3.控制地圖的Layer為底層,不可選中;ShapeNode為上層,可交互;
本文使用ichart + zrender技術(shù),繪制上述的效果;
為什么使用zrender呢?實(shí)際上zrender的功能比較簡(jiǎn)單,用于繪制基本的形狀;其實(shí)細(xì)心的你會(huì)發(fā)現(xiàn),echarts的底層就是使用了zrender;
有為什么使用ichart呢?ichart用于繪制常用的圖表,底層基于Canvas繪制,也比較容易改造;而echarts使用的是SVG,修改起來(lái)就沒(méi)那么容易啦!
實(shí)驗(yàn)天地 目標(biāo)一:實(shí)現(xiàn)柱單節(jié)狀圖效果實(shí)現(xiàn)柱狀圖效果,還真沒(méi)那么容易!ichart不支持怎么辦? 定制!
找到ichart的柱狀圖類(lèi):Cylinder.js,好就從改造他開(kāi)始了!
找到繪制網(wǎng)元的方法buildPath
Cylinder.prototype = { type: "cylinder", /** * 創(chuàng)建圓形路徑 * @param {CanvasRenderingContext2D} ctx * @param {module:zrender/shape/Cylinder~ICircleStyle} style */ buildPath : function (ctx, style) { //拿到你的畫(huà)筆,我就隨便畫(huà)啦 } }
如上所言,獲取了Canvas的畫(huà)筆,自由的繪制一個(gè)矩形,上下各一個(gè)橢圓,不就完事了?
this.ellipse(ctx, style.x, style.y, style.a, style.b); ctx.fillRect(style.x - style.a, style.y - a, style.a * 2 , d); this.ellipse(ctx, style.x, style.y - a, style.a, style.b);
封裝完畢,打包,混淆,加上測(cè)試代碼,看效果;
目標(biāo)二:實(shí)現(xiàn)柱多節(jié)柱狀圖效果Cylinder
問(wèn)題來(lái)了,如果想實(shí)現(xiàn)多段的柱狀圖,如何是好呢?我想您自己都已經(jīng)有思路了;多畫(huà)幾段不就完事了嗎?
buildPath : function (ctx, style) { var rect = this.getRect(style); // ctx.strokeRect(rect.x,rect.y,rect.width,rect.height); // Better stroking in ShapeBundle // ctx.moveTo(style.x + style.a, style.y - style.height/2); // ctx.arc(style.x, style.y, style.r, 0, Math.PI * 2, true); // ctx.arc(style.x, style.y, style.a, 0, Math.PI * 2, true); // this.endDraw(style,ctx); var data = style.data, color = style.color, isPercent = style.isPercent || false, maxHeight = style.maxHeight || 100; if(isPercent) { if(data instanceof Array) { var data2 = []; var all = 0; for(var i = 0;i目標(biāo)三:繪制地圖 使用zrender的PolygonShape繪制矢量地圖;但是前提是,和底圖圖片完全吻合的數(shù)據(jù)哪里來(lái)呢?
聰明的我想到了使用TWaver自帶編輯器,完美扣除地圖數(shù)據(jù);得到結(jié)果,形如如下數(shù)據(jù)格式:
< px="1209.5549397107488" y="1242.081312831646"/> < px="1209.5549397107488" y="1233.5993604641965"/> < px="1179.8681064246748" y="1212.3944795455723"/> < px="1184.1090826083996" y="1199.6715509943976"/> < px="1171.3861540572252" y="1161.502765340874"/> < px="1162.9042016897754" y="1157.2617891571492"/>稍微加工處理下,得到如下數(shù)據(jù):
{"type": "Feature","properties":{"id":"65","size":"550","name":"新疆","cp":[471.08525328117855,-97.6746544555845],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[1143.6222085570992,-80.96566177792188], [1131.0904640488523,-76.78841360850622], [1131.0904640488523,-93.49740628616884], [1126.9132158794366,-135.26988798032542],開(kāi)始加入數(shù)據(jù),創(chuàng)建矢量地圖;
var smoothLine = new PolylineShape({ style : { pointList : points, smooth : "spline", brushType : "stroke", color : "white", strokeColor : "white", lineWidth : 2, lineType : "dotted" }, zlevel:1, draggable : true, }); zr.addShape(smoothLine);最后附上完整代碼:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82076.html
摘要:安全態(tài)勢(shì)可視化系統(tǒng)的目的是生成網(wǎng)絡(luò)安全綜合態(tài)勢(shì)圖,以多視圖多角度多尺度的方式與用戶(hù)進(jìn)行交互??梢钥吹?,黑客攻擊是無(wú)處不在,無(wú)時(shí)不有的,世界互聯(lián)網(wǎng)的安全態(tài)勢(shì)并不如我們印象中那么隱蔽和少見(jiàn)。 導(dǎo)語(yǔ) 網(wǎng)絡(luò)態(tài)勢(shì)可視化技術(shù)作為一項(xiàng)新技術(shù),是網(wǎng)絡(luò)安全態(tài)勢(shì)感知與可視化技術(shù)的結(jié)合,將網(wǎng)絡(luò)中蘊(yùn)涵的態(tài)勢(shì)狀況通過(guò)可視化圖形方式展示給用戶(hù),并借助于人在圖形圖像方面強(qiáng)大的處理能力,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)異常行為的分析和檢測(cè)...
摘要:俗話(huà)說(shuō),不會(huì)使用工具來(lái)完成任務(wù)的都是進(jìn)化不完全的表現(xiàn),大數(shù)據(jù)時(shí)代,可視化已經(jīng)深深鉆進(jìn)我們的生活,使用可視化工具也變的相當(dāng)普遍,今天我們來(lái)總結(jié)下當(dāng)下可視化工具都有哪些。是一個(gè)地圖庫(kù),主要面向數(shù)據(jù)可視化用戶(hù)。 俗話(huà)說(shuō),不會(huì)使用工具來(lái)完成任務(wù)的都是進(jìn)化不完全的表現(xiàn),大數(shù)據(jù)時(shí)代,可視化已經(jīng)深深鉆進(jìn)我們的生活,使用可視化工具也變的相當(dāng)普遍,今天我們來(lái)總結(jié)下當(dāng)下可視化工具都有哪些。 showImg...
本文主要是給大家介紹了python大數(shù)據(jù)可視化制作全球人口地形圖的實(shí)例詳細(xì)說(shuō)明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家盡可能發(fā)展,盡早漲薪 序言 信息來(lái)源:population_data.json, 先看看數(shù)據(jù)信息長(zhǎng)什么樣 [ { "CountryName":"ArabWorld", "Country...
摘要:使用純語(yǔ)言利用的標(biāo)簽繪制各式圖形。致力于為您的應(yīng)用提供簡(jiǎn)單直觀可交互的體驗(yàn)級(jí)圖表組件。目前支持餅圖環(huán)形圖折線(xiàn)圖面積圖柱形圖條形圖。是基于協(xié)議的開(kāi)源項(xiàng)目。陰影圖形效果圖其他形狀的圖標(biāo)類(lèi)似,不再陳述。 導(dǎo)語(yǔ) ichartjs是一款基于HTML5的圖形庫(kù)。使用純javascript語(yǔ)言, 利用HTML5的canvas標(biāo)簽繪制各式圖形。 ichartjs致力于為您的應(yīng)用提供簡(jiǎn)單、直觀、可交互的...
摘要:不建議底圖選擇中存在兩種不同坐標(biāo)體系,如下圖坐標(biāo)存在明顯的偏差,火星坐標(biāo)在采用坐標(biāo)系的地圖上位置偏上彩色中國(guó)天地圖全球衛(wèi)星地圖例如我們使用的類(lèi)進(jìn)行查找,返回的數(shù)據(jù)都是國(guó)際坐標(biāo),因此必須進(jìn)行偏差糾正。 ArcGIS for javascript開(kāi)發(fā)心得 本次實(shí)例中采用ArcGIS for javascript3.24版本,由于版本3與4在API等存在較大區(qū)別,就不一一列舉,詳細(xì)區(qū)別看官方...
閱讀 610·2021-11-18 13:12
閱讀 1328·2021-11-15 11:39
閱讀 2489·2021-09-23 11:22
閱讀 6224·2021-09-22 15:15
閱讀 3670·2021-09-02 09:54
閱讀 2322·2019-08-30 11:10
閱讀 3254·2019-08-29 14:13
閱讀 2919·2019-08-29 12:49