国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[2016年末巨獻(xiàn)] — HTML5可交互地鐵線路圖(第二季:帝都進(jìn)階版)

yck / 2754人閱讀

摘要:兩個(gè)月前是的,兩個(gè)月過(guò)去了,歲月如梭,哥幫小弟做的魔都地鐵拖拖樂(lè)打了下廣告,沒(méi)想到一炮而紅,好評(píng)如潮。下面進(jìn)入正題一些基本功能這里不再贅述,大家可以查看上一篇有關(guān)魔都地鐵圖的文章。一旦地鐵發(fā)生故障,會(huì)導(dǎo)致大量乘客滯留。

兩個(gè)月前(是的,兩個(gè)月過(guò)去了,歲月如梭),哥幫小弟做的“HTML5魔都地鐵拖拖樂(lè)”打了下廣告,沒(méi)想到一炮而紅,好評(píng)如潮。現(xiàn)在的年輕人,還是很上進(jìn)的,一被表?yè)P(yáng),動(dòng)力無(wú)窮。年底雖然忙得眼底發(fā)黑,小弟硬是忙里偷閑又做了一個(gè)帝都的版本。

這個(gè)版本,不光是換成了帝都的地鐵圖,還增加了很多聽(tīng)起來(lái)就很能“變現(xiàn)”的功能:線路規(guī)劃、站點(diǎn)告警展示、站點(diǎn)內(nèi)部電路圖、站點(diǎn)三維呈現(xiàn)……在這個(gè)信息過(guò)剩的年代,多數(shù)人都是涉獵很廣卻學(xué)而不精,小弟這種對(duì)問(wèn)題進(jìn)行深度挖掘的精神,哥真的很佩服。

------------------------------------------------下面進(jìn)入正題-----------------------------------------------------------

一些基本功能這里不再贅述,大家可以查看上一篇有關(guān)魔都地鐵圖的文章。哥今天主要給大家介紹新增功能。

我們先來(lái)看一下小弟做的帝都地鐵圖的效果,基本上是參照baidu的地鐵圖來(lái)復(fù)現(xiàn)的:

依然是純矢量、可交互、有動(dòng)態(tài)效果、無(wú)失真縮放的拓?fù)鋱D:

可視化效果具體就不展開(kāi)了,拿到過(guò)拖拖樂(lè)的兄弟們都了解。下面主要還是說(shuō)說(shuō)這次新增的功能點(diǎn),怎么形容呢?殺很大噢~

選中線路會(huì)發(fā)光

鼠標(biāo)點(diǎn)擊某條地鐵線路,選中的線路會(huì)以發(fā)光的形式突出顯示出來(lái)。

小弟說(shuō)之所以要增加這個(gè)功能,是因?yàn)楝F(xiàn)在的地鐵線路太多了,想查看單條線路的時(shí)候經(jīng)常會(huì)看串……也是,雖然交通部門在設(shè)計(jì)地鐵線路圖的時(shí)候已經(jīng)盡量用不同的顏色去標(biāo)注每條線路,但是擋不住地鐵十幾二十條地往上加,要想查看單條線路還真是費(fèi)勁。有了這個(gè)功能,頓時(shí)清爽了很多有木有? 哥必須為這個(gè)功能點(diǎn)個(gè)贊……

實(shí)現(xiàn)代碼其實(shí)很簡(jiǎn)單:

function changeAlpha(lineNumber,alpha){
        alpha = alpha || 1;
        var list = lines[lineNumber];
        list.forEach(function(li){
            li.setStyle("whole.alpha",alpha);
            li.s("outer.style", alpha < 1 ? "none":"glow");
            li.s("label.shadowable", alpha >= 1 );
        });
        list = stations[lineNumber];
        list.forEach(function(li){
            li.setStyle("whole.alpha",alpha);
            li.s("outer.style", alpha < 1 ? "none":"glow");
            li.s("label.shadowable", alpha >= 1 );
        });
    }

為啥這么好的想法,地圖廠商都不提供呢?如果你對(duì)仍然體會(huì)不是很深刻的話,看看下面這張圖,相信你會(huì)覺(jué)得這個(gè)功能是多么賞心悅目……

高亮顯示兩站點(diǎn)間的路線

用鼠標(biāo)右鍵點(diǎn)擊同一條線路上的兩個(gè)站點(diǎn),這兩個(gè)站點(diǎn)之間的路線會(huì)高亮顯示。小弟說(shuō),從用戶角度來(lái)說(shuō),這個(gè)功能可以用來(lái)進(jìn)行路線的規(guī)劃。不過(guò)一般我們不會(huì)在前端做路線規(guī)劃,只需要把計(jì)算好的路線結(jié)果顯示出來(lái)就可以了。小弟做這個(gè)功能的另一個(gè)目的是為了方便運(yùn)維人員查看某一段線路上的告警站點(diǎn)。

告警站點(diǎn)一目了然

說(shuō)到告警,才進(jìn)入了這次的重點(diǎn)。

地鐵因運(yùn)量大、速度快、無(wú)堵車等優(yōu)點(diǎn),已經(jīng)成為眾多上班族的首選出行方式。一旦地鐵發(fā)生故障,會(huì)導(dǎo)致大量乘客滯留。因此,對(duì)于地鐵運(yùn)維人員來(lái)說(shuō),能夠快速發(fā)現(xiàn)故障站點(diǎn)并及時(shí)排除故障就顯得尤為重要。

我們可以看到,小弟做的這張帝都地鐵圖,與普通地鐵圖最大的不同是上面增加了許多五顏六色的告警標(biāo)識(shí),告警站點(diǎn)一目了然,上面還標(biāo)明了告警的數(shù)量以及告警級(jí)別。這樣,地鐵運(yùn)維人員就可以快速掌握各地鐵站點(diǎn)的告警情況,合理安排故障排查的優(yōu)先級(jí)。

因?yàn)槲覀児臼亲銎髽I(yè)應(yīng)用的嘛,這個(gè)功能是很容易放上去的,代碼也不復(fù)雜。

Util.addAlarm("alarm" + p["-sid"], n, twaver.AlarmSeverity.severities.get(random), box.getAlarmBox(),random);
addAlarm: function (alarmID, staNode, alarmSeverity, alarmBox,random) {
  var alarm = new twaver.Alarm(alarmID, staNode.getId(), alarmSeverity);
  alarm.setClient("MAPPINGID",this.alarmCode[random]);
  alarm.setClient("raisedTime",new Date());
  alarm.setClient("platform",staNode.getName());
  alarm.setAcked(Math.random()* 10 > 5? true:false);
  alarmBox.add(alarm);
}                             
軌線告警數(shù)據(jù)展示

雙擊一條線路,會(huì)彈出該線路的所有告警數(shù)據(jù),包括告警站臺(tái)、告警級(jí)別、告警發(fā)生時(shí)間等詳細(xì)信息。這里用的是現(xiàn)成的表格組件。

實(shí)現(xiàn)也很簡(jiǎn)單,首先兩行代碼將表格和DataBox關(guān)聯(lián):

var table = new twaver.controls.Table(box.getAlarmBox());
var tablePane = new twaver.controls.TablePane(table);

然后用以下代碼實(shí)現(xiàn):

    var alarmSeverity = {
        Critical: "嚴(yán)重",
        Major:"主要",
        WARNING:"警告",
    } 
    table.onCellRendered = function (params) {
        if (params.column.getName() === "告警級(jí)別") {
            params.div.style.backgroundColor = params.data.getAlarmSeverity().color;
        }
    };
    var column = createColumn(table, "站臺(tái)", "platform", "client", "string",100,40);
    column.setHorizontalAlign("center");
    var column = createColumn(table, "告警級(jí)別", "alarmSeverity", "accessor", "string", true);
    column.setWidth(80);
    column.setHorizontalAlign("center");
    var setValue = column.setValue;
    column.setValue = function (data, value, view) {
        value = twaver.AlarmSeverity.getByName(value);
        setValue.call(column, data, value, view);
    };
    column.setEnumInfo(twaver.AlarmSeverity.severities.toArray());
    var column = createColumn(this.table, "告警碼", "MAPPINGID", "client","string",166);
    column.setHorizontalAlign("center");
    var column = createColumn(this.table, "告警問(wèn)題", "alarmque", "client");
    column.setHorizontalAlign("center");
    var timeColumn = createColumn(table, "告警發(fā)生時(shí)間", "raisedTime", "client");
    timeColumn.setWidth(167);
    timeColumn.setHorizontalAlign("center");
    timeColumn.renderCell = function (params) {
        var span = document.createElement("span");
        span.innerHTML = formatDate(params.value, "yyyy-MM-dd hh:mm:ss");
        span.style.whiteSpace = "nowrap";
        params.div.appendChild(span);
    }
}
站點(diǎn)信息展示

單擊站點(diǎn),會(huì)彈出一個(gè)功能菜單,現(xiàn)在有展示、告警、電路等模塊。小弟說(shuō)還可以根據(jù)需要,定制更多功能模塊,全方位展示站點(diǎn)信息。我們一一來(lái)看幾個(gè)菜單都展示了些啥。

單個(gè)站點(diǎn)告警

點(diǎn)擊“告警”,彈出站點(diǎn)告警數(shù)據(jù),還可以查看該站點(diǎn)的歷史告警數(shù)據(jù)。

小弟說(shuō),前幾天他去看了一個(gè)很高大上的軌道交通技術(shù)展會(huì),了解到每個(gè)站點(diǎn)內(nèi)就有大量的設(shè)備,像電力設(shè)備、環(huán)控設(shè)備、屏蔽門設(shè)備、電梯設(shè)備、門禁設(shè)備、廣播和閉路電視設(shè)備、通訊設(shè)備等等。因此,每個(gè)站點(diǎn)也必須要有集中的告警展示。當(dāng)然,現(xiàn)在做的還比較簡(jiǎn)單,如果有真實(shí)數(shù)據(jù),就能做得更好看了,反正菜單定義都很方便。

站點(diǎn)內(nèi)部拓?fù)鋱D展示

地鐵里的通信系統(tǒng)還是比較復(fù)雜的,據(jù)我了解,除了有專用的通信系統(tǒng)外,還要提供民用的通信系統(tǒng),以及專用的電源管理、廣播、視頻監(jiān)控等等子系統(tǒng)。這就必須要咱們擅長(zhǎng)的拓?fù)鋱D上場(chǎng)了。

點(diǎn)擊“圖紙”按鈕,彈出站點(diǎn)內(nèi)部設(shè)備的拓?fù)鋱D。所有的圖元都可以拖拽、縮放,告警、分組這些該有的功能都有,如果拓?fù)鋱D有多個(gè)層級(jí),不停往下加layer就好了。

代碼稍復(fù)雜:

button.onclick = function (e) {
    var dialog = document.getElementById(id);
    dialog && document.body.removeChild(dialog);
    var box2 = new twaver.ElementBox();
    var network2 = new twaver.vector.Network(box2);
    var view = network2.getView();
    var autoLayouter = new twaver.layout.AutoLayouter(box2);
        // network2.setZoomManager(new twaver.vector.MixedZoomManager(network2,false));
        var items = Util.topo_data;
        var i,item;
        for(i = 0;i < items.length; i++){
            item = items[i];
            Util.createElement(box2, item);
        }
        var self = this;
        var hGap=80;
        autoLayouter.getDimension=function (node) {
            if (node instanceof twaver.Group && node.getChildrenSize() > 0) {
                var rect = null;
                for (var i = 0, n = node.getChildrenSize(); i < n; i++) {
                    var child = node.getChildAt(i);
                    if (child instanceof twaver.Node) {
                        if (rect) {
                            rect = _twaver.math.unionRect(rect, child.getRect());
                        } else {
                            rect = child.getRect();
                        }
                    }
                }
                if (rect) {
                    return { width: rect.width+hGap, height: rect.height };
                } else {
                    return null;
                }
            } else {
                return { width: node.getWidth()+hGap, height: node.getHeight() };
            }
        },
        autoLayouter.doLayout("hierarchic", function(){
            network2.zoomOverview();
        });
        var left = e.clientX, top = e.clientY;
        var width = 760, height = 360;
        Util.showTopo("dialog_topo",element,network2,width+"px",height+"px","260px","0px","圖紙");
        Util.changeState();
        $("#dialog_topo").animate({
            top:"100px",
        },"normal","swing",function(){
        });
    }
站點(diǎn)三維展示

這個(gè)功能可謂是很趕時(shí)髦的,點(diǎn)擊“展示”模塊,跳出當(dāng)前站點(diǎn)的三維展示圖,重點(diǎn)標(biāo)識(shí)了幾個(gè)出口的位置。

小弟說(shuō)現(xiàn)在地鐵站的出口示意圖一般都是平面圖,或者是假3D圖,身邊有些妹子經(jīng)常表示看不太懂,尤其在一些比較復(fù)雜的換乘站點(diǎn),所以整了個(gè)3D示意圖,還可以任意角度旋轉(zhuǎn)、縮放什么的。整個(gè)過(guò)程我的注意力就被“妹子”吸引了,不得不說(shuō)為了妹子,小弟的這個(gè)地鐵站可是像模像樣的。

模型內(nèi)部也可以進(jìn)入,用來(lái)展示一些消防用具的位置。不過(guò)這地鐵內(nèi)部,我越看越覺(jué)得像某部喪尸片呢……

電路展示

最后,點(diǎn)擊“電路”模塊,彈出站點(diǎn)內(nèi)部電路圖。如果對(duì)接上地鐵的供配電系統(tǒng),那還是這個(gè)展示平臺(tái)上相當(dāng)不錯(cuò)的一個(gè)亮點(diǎn)。

功能介紹到這里就基本結(jié)束了。

總結(jié)一下,上次小弟主要是在可視化方面下了功夫,而這次是從乘客、監(jiān)控和運(yùn)維的角度去設(shè)計(jì)的功能。盡管很多功能只是點(diǎn)到為止,但真要在實(shí)際項(xiàng)目中用起來(lái),相信又是一個(gè)亮點(diǎn)工程了。

2016總結(jié)

看到今天sfgg有2016總結(jié)活動(dòng)呢,那哥也來(lái)總結(jié)一把。

還得先說(shuō)2015年,哥初來(lái)sfgg,斗膽發(fā)了幾篇文章,認(rèn)識(shí)了不少朋友,也給了不少建議。2016年,項(xiàng)目進(jìn)展順利,很多精力都投入在非技術(shù)領(lǐng)域,自然文章也寫的不勤快了。除了一篇3D機(jī)房的文章,后來(lái)就開(kāi)始沾我小弟的光了。不過(guò)這也沒(méi)啥,江山代有小弟出,團(tuán)隊(duì)就怕缺牛人。從技術(shù)走向管理的路,大多也是如此吧。

最后祝大家:

 
 
 
 
 

Happy New Year!

索取代碼照舊:tw-service@servasoft.com

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/86716.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.35 - WebGL:打開(kāi)網(wǎng)頁(yè)看大片

    摘要:在文末,我會(huì)附上一個(gè)可加載的模型方便學(xué)習(xí)中文藝術(shù)字渲染用原生可以很容易地繪制文字,但是原生提供的文字效果美化功能十分有限。 showImg(https://segmentfault.com/img/bVWYnb?w=900&h=385); WebGL 可以說(shuō)是 HTML5 技術(shù)生態(tài)鏈中最為令人振奮的標(biāo)準(zhǔn)之一,它把 Web 帶入了 3D 的時(shí)代。 初識(shí) WebGL 先通過(guò)幾個(gè)使用 Web...

    objc94 評(píng)論0 收藏0
  • 基于 HTML5 Canvas 的交互地鐵路圖

    摘要:前言前兩天在上尋找靈感的時(shí)候,看到了很多有關(guān)地圖類似的例子,地圖定位等等,但是好像就是沒(méi)有地鐵線路圖,就自己花了一些時(shí)間搗鼓出來(lái)了這個(gè)交互式地鐵線路圖的,地鐵線路上的點(diǎn)是在網(wǎng)上隨便下載了一個(gè),這篇文章記錄自己的一些收獲畢竟我還是個(gè)菜鳥(niǎo)以及代前言前兩天在 echarts 上尋找靈感的時(shí)候,看到了很多有關(guān)地圖類似的例子,地圖定位等等,但是好像就是沒(méi)有地鐵線路圖,就自己花了一些時(shí)間搗鼓出來(lái)了這個(gè)交...

    zengdongbao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<