亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

百度地圖、ECharts整合HT for Web網絡拓撲圖應用
來源:易賢網 閱讀:2464 次 日期:2015-08-24 14:25:07
溫馨提示:易賢網小編為您整理了“百度地圖、ECharts整合HT for Web網絡拓撲圖應用”,方便廣大網友查閱!

前一篇談及到了ECharts整合HT for Web的網絡拓撲圖應用,后來在ECharts的Demo中看到了有關空氣質量的相關報表應用,就想將百度地圖、ECharts和HT for Web三者結合起來也做一個類似空氣質量報告的報表+拓撲圖應用,于是有了下面的Demo:

名單

在這個Demo中,將GraphView拓撲圖組件添加到百度地圖組件中,覆蓋在百度地圖組件之上,并且在百度地圖組件上和GraphView拓撲圖組件上分別添加事件監聽,相互同步經緯度和屏幕位置信息,從而來控制拓撲圖上的組件位置固定在地圖上,并在節點和節點之間的連線上加上了流動屬性。右下角的圖標框是采用HT for Web的Panel面板組件結合ECharts圖表組件完成的。

接下來我們來看看具體的代碼實現:

1.百度地圖是如何與HT for Web組件結合的;

map = new BMap.Map("map"); var view = graphView.getView(); view.className = 'graphView'; var mapDiv = document.getElementById('map'); mapDiv.firstChild.firstChild.appendChild(view);

首先需要在body中存在id為map的div,再通過百度地圖的api來創建一個map地圖對象,然后創建GraphView拓撲圖組件,并獲取GraphView組件中的view,最后將view添加到id為map的div的第二代孩子節點中。這時候問題就來了,為什么要將view添加到map的第二代孩子節點中呢,當你審查元素時你會發現這個div是百度地圖的遮罩層,將view添加到上面,會使view會是在地圖的頂層可見,不會被地圖所遮擋。

2.百度地圖和GraphView的事件監聽;

map.addEventListener('moveend', function(e){ resetPosition(); }); map.addEventListener('dragend', function(e){ resetPosition(); }); map.addEventListener('zoomend', function(e){ resetPosition(); }); graphView.handleScroll = function(){}; graphView.handlePinch = function(){}; function resetPosition(e){ graphView.tx(0); graphView.ty(0); dataModel.each(function(data){ var lonLat, position; if(data instanceof ht.HtmlNode){ if(data.getId() != 'chartTotal') { position = data.getHost().getPosition(); position = {x: position.x + 168, y: position.y + 158}; data.setPosition(position.x, position.y); } } else if(data instanceof ht.Node){ lonLat = data.lonLat; position = map.pointToPixel(lonLat); data.setPosition(position.x,position.y); } }); }

首先監聽map的三個事件:moveend、 dragend、 zoomend,這三個事件做了同一件事--修改DataModel中所有data的position屬性,讓其在屏幕上的坐標與地圖同步,然后將GraphView的Scroll和Pinch兩個事件的執行函數設置為空函數,就是當監聽到Scroll或者Pinch事件時不做任何的處理,將這兩個事件交給map來處理。

在resetPosition函數中,做的事情很簡單:遍歷DataModel中的data,根據它們各自在地圖上的經緯度來換算成屏幕坐標,并將坐標設置到相應的data中,從而達到GraphView中的節點能夠固定在地圖上的效果。

名單

3.創建右下角的圖表組件:

ht.Chart = function(option){ var self = this, view = self._view = document.createElement('div'); view.style.position = 'absolute'; view.style.setProperty('box-sizing', 'border-box', null); self._option = option; self._chart = echarts.init(self.getView()); if(option) self._chart.setOption(option); self._FIRST = true; }; ht.Default.def('ht.Chart', Object, { ms_v: 1, ms_fire: 1, ms_ac: ['chart', 'option', 'isFirst', 'view'], validateImpl: function(){ var self = this, chart = self._chart; chart.resize(); if(self._FIRST){ self._FIRST = false; chart.restore(); } }, setSize: function(w, h){ var view = this._view; view.style.width = w + 'px'; view.style.height = h + 'px'; } }); function createPanel(title, width, height){ chart = new ht.Chart(option); var c = chart.getChart(); c.on(echarts.config.EVENT.LEGEND_SELECTED, legendSelectedFun); var chartPanel = new ht.widget.Panel({ title: title, restoreToolTip: "Overview", width: width, contentHeight: height, narrowWhenCollapse: true, content: chart, expanded: true }); chartPanel.setPositionRelativeTo("rightBottom"); chartPanel.setPosition(0, 0); chartPanel.getView().style.margin = '10px'; document.body.appendChild(chartPanel.getView()); }

首先定義了ht.Chart類,并實現了validateImpl方法,方法中處理的邏輯也很簡單:在每次方法執行的時候調用圖表的reset方法重新設定圖標的展示大小,如果該方法是第一次執行的話,就調用圖表的restore方法將圖表還原為最原始的狀態。會有這樣的設計是因為ht.Chart類中的view是動態創建的,在沒有添加到dom之前將一直存在于內存中,在內存中因為并沒有瀏覽器寬高信息,所以div的實際寬高均為0,因此chart將option內容繪制在寬高為0的div中,即使你resize了chart,如果沒用重置圖表狀態的話,圖表狀態將無法在圖表上正常顯示。

接下來就是創建panel圖表組件了,這是HT for Web的Panel組件的基本用法,其中content屬性的值可以是HT for Web的任何組件或div元素,如果是HT fro Web組件的話,該組件必須實現了validateImpl方法,因為在panel的屬性變化后將會調用content對應組件的validateImpl方法來重新布局組件內容。

4.ECharts和GraphView拓撲圖組件的交互:

legendSelectedFun = function(param) { if(chart._legendSelect){ delete chart._legendSelect; return; } console.info(param); var id = nodeMap[param.target], dm = graphView.dm(), data = dm.getDataById(id), sm = dm.sm(), selection = sm.getSelection(); if(param.selected[param.target]) { sm.appendSelection([data]); if(selectionData.indexOf(param.target) < 0){ selectionData.push(param.target); } }else { sm.removeSelection([data]); var index = selectionData.indexOf(param.target); if(index >= 0){ selectionData.splice(index, 1); } } sm.setSelection(selection.toArray()); }; graphView.mi(function(e){ console.info(e.kind, e.data); var c = chart.getChart(), legend = c.component.legend, selectedMap = legend.getSelectedMap(); if(e.kind === 'endRectSelect'){ chart._legendSelect = true; for(var name in notes){ legend.setSelected(name, false); } notes = {}; graphView.dm().sm().each(function(data){ var note = data.s('note'); if(note) notes[note] = 1; }); for(var name in notes){ legend.setSelected(name, true); } } else if(e.kind === 'clickData'){ chart._legendSelect = true; var data = e.data; if(data instanceof ht.Node){ var note = data.s('note'); if(note){ var selected = legend.isSelected(note); if(selected){ graphView.dm().sm().removeSelection([data]); } legend.setSelected(note, !selected); } } } });

legendSelectedFun函數是EChart圖表的legend插件選中事件監聽,其中處理的邏輯是:當legend插件中的某個節點被選中了,也選中在GraphView拓撲圖中對應的節點,當取消選中是,也取消選中GraphView拓撲圖中對應的節點。

在GraphView中添加交互監聽,如果在GraphView中做了框選操作,在框選結束后,將原本legend插件上被選中的節點取消選中,然后再獲取被選中節點,并在legend插件上選中對應節點;當GraphView上的節點被選中,則根據legend插件中對應節點選中情況來決定legend插件中的節點和graphView上的節點是否選中。

在GraphView交互中,我往chart實例中添加了_legendSelect變量,該變量的設定是為了阻止在GraphView交互中修改legend插件的節點屬性后回調legendSelectedFun回調函數做修改GraphView中節點屬性操作。

名單

更多信息請查看IT技術專欄

更多信息請查看技術文章
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
99国产精品99久久久久久粉嫩| 1024成人| 亚洲特色特黄| 亚洲第一在线综合在线| 国产精品久久亚洲7777| 麻豆成人精品| 韩日视频一区| 免费在线日韩av| 激情自拍一区| 奶水喷射视频一区| 亚洲成人直播| 午夜久久久久| 亚洲一区二区三区精品动漫| 欧美日韩亚洲一区二区三区在线 | 欧美一区视频| 99人久久精品视频最新地址| 久久综合伊人| 国产欧美大片| 亚洲二区在线| 欧美日韩一区二区三区在线视频 | 欧美精品入口| 99国产精品久久久久老师| 久久亚洲风情| 国产麻豆日韩| 99精品国产一区二区青青牛奶| 欧美国产综合| 欧美在线综合| 国产精品最新自拍| 99热精品在线| 亚洲精品社区| 亚洲欧洲日本一区二区三区| 国产综合视频| 亚洲视频碰碰| 韩国自拍一区| 亚洲调教视频在线观看| 欧美激情精品久久久六区热门| 欧美主播一区二区三区美女 久久精品人| 最近看过的日韩成人| 久久一区激情| 久久久久中文| 欧美在线免费| 欧美区一区二| 国产精品九九| 亚洲性图久久| 亚洲精品一级| 亚洲精品免费观看| 亚洲黄网站黄| 久久久久久一区二区| 午夜精品一区二区三区四区| 亚洲一区二区三区涩| 亚洲精品一区二区三区蜜桃久| 国产精品大片免费观看| 欧美日韩一区二区国产| 欧美1区2区3区| 午夜精品视频在线观看一区二区| 久久婷婷麻豆| 欧美精品一区二区三区在线看午夜| 裸体一区二区| 午夜精品久久| 尹人成人综合网| 99精品国产在热久久婷婷| 99精品视频免费观看视频| 亚洲久久视频| 亚洲综合日韩| 久久日韩精品| 黄色欧美成人| 国产一区二区三区黄| 亚洲女人av| 久久夜色精品| 精品1区2区3区4区| 国产精品日本| 欧美一区二区三区在线免费观看| 国产精品啊啊啊| 日韩香蕉视频| 久久一二三四| 亚洲精品综合| 老**午夜毛片一区二区三区| 欧美日韩午夜| 亚洲一区二区精品在线观看| 欧美一区二区三区四区夜夜大片| 欧美伊人影院| 亚洲免费高清| 午夜久久一区| 国产一区二区三区成人欧美日韩在线观看 | 一区二区久久| 欧美激情第10页| 99国产一区| 欧美日韩一区二区高清| 国产精品一区毛片| 激情综合亚洲| 欧美成人一区二区在线 | 99riav国产精品| 欧美精品福利| 噜噜噜91成人网| 亚洲伦伦在线| 国模精品娜娜一二三区| 久久国产一区二区| 亚洲深夜av| 永久久久久久| 欧美视频观看一区| 午夜国产精品视频| 久久深夜福利| 久久久久一区二区| 国产精品午夜av在线| 亚洲三级毛片| 亚洲国内精品| 91久久在线| 在线观看不卡| 一区二区亚洲精品| 国内不卡一区二区三区| 女人色偷偷aa久久天堂| 久久国产精品高清| 翔田千里一区二区| 国产精品免费区二区三区观看| 在线观看欧美一区| 在线国产欧美| 亚洲国产1区| 亚洲国内精品| 亚洲精品乱码| 99xxxx成人网| 国产一区二区精品| 亚洲一区欧美激情| 亚洲专区免费| 久久久久一区二区| 欧美激情1区| 欧美精品三区| 伊人影院久久| 日韩一区二区免费看| 亚洲精品乱码视频| 国产色综合网| 久久精品国语| 国产精品成人观看视频免费| 亚洲天堂偷拍| 亚洲一区日韩在线| 欧美va亚洲va日韩∨a综合色| 欧美大片专区| 亚洲国产精品日韩| 国产精品久久久一区二区| 亚洲影视综合| 欧美视频在线观看| 9国产精品视频| 亚洲欧美日韩一区在线观看| 欧美一区影院| 在线日韩av| 裸体素人女欧美日韩| 国模 一区 二区 三区| 一区二区三区av| 欧美在线首页| 国产一区二区三区成人欧美日韩在线观看| 久久av一区二区| 极品尤物久久久av免费看| 亚洲中午字幕| 亚洲精品123区| 欧美尤物一区| 国产精品一区亚洲| 国自产拍偷拍福利精品免费一| 99亚洲视频| 国内自拍一区| 久久天天狠狠| 中文精品一区二区三区| 欧美性久久久| 久久综合狠狠综合久久综青草| 亚洲第一网站| 欧美精品午夜| 久久久综合网| 亚洲综合不卡| 一区二区av| 欧美先锋影音| 欧美阿v一级看视频| 国产精品伊人日日| 日韩亚洲国产欧美| 一区二区亚洲精品| 欧美日韩亚洲一区| 可以看av的网站久久看| 亚洲一区二区在线看| 亚洲国产精品www| 欧美私人啪啪vps| 女主播福利一区| 另类激情亚洲| 亚洲综合另类| 亚洲综合日韩| 国产精品最新自拍| 老鸭窝毛片一区二区三区| 亚洲欧洲一二三| 伊人成年综合电影网| 国产精品magnet| 欧美亚韩一区| 亚洲午夜精品久久久久久app| 女同一区二区| 欧美粗暴jizz性欧美20| 久久国产主播| 老司机午夜免费精品视频| 久久久久久久久久久一区| 久久国产主播| 欧美精品福利| 激情综合网址| 一本色道久久综合| 夜夜爽av福利精品导航| aa级大片欧美三级| 亚洲日本无吗高清不卡| 91久久精品www人人做人人爽| 在线免费高清一区二区三区| 在线成人亚洲| 在线亚洲一区| 久久精品日韩| 午夜精品剧场| 在线观看不卡| 亚洲中午字幕| 欧美激情第六页| 国内精品久久国产| 一本久道综合久久精品| 久久aⅴ国产紧身牛仔裤| 欧美在线日韩| 亚洲三级电影在线观看| 新67194成人永久网站| 午夜日韩激情| 亚洲国产清纯| 欧美日韩一区二区三| 在线免费观看一区二区三区| 国产日韩一区二区三区在线| 久久经典综合| 亚洲日韩视频| 午夜天堂精品久久久久| 99国内精品| 亚洲欧美影院| 国产精品区二区三区日本| 久久中文在线| 99精品热6080yy久久| 欧美一区91| 国产亚洲激情| 韩国自拍一区| 久久精品在线| 99精品国产福利在线观看免费| 久久久久久久久久码影片| 在线成人亚洲| 欧美极品一区二区三区| 国产精品久久久久久久久婷婷| 欧美a级片网站| 国产精品视频| 久久高清国产| 亚洲欧洲日本mm| 亚洲永久免费| 在线一区免费观看| 国产私拍一区| 91久久亚洲| 国产美女诱惑一区二区| 影音先锋亚洲电影| 麻豆久久久9性大片| 亚洲国产精品第一区二区三区| 午夜综合激情| 亚洲国产片色| 欧美日韩免费观看一区=区三区| 在线亚洲观看| 在线看片日韩| 国产一区二区中文| 欧美在线三级| 美日韩精品视频| 国产精品豆花视频| 久久久成人网| 亚洲国产日韩综合一区| 久久久久久九九九九| 9国产精品视频| 亚洲高清视频一区| 激情文学一区| 欧美午夜视频在线| 欧美va天堂在线| 一区二区精品在线观看| 激情欧美日韩| 老色鬼久久亚洲一区二区| 99亚洲精品| 在线观看亚洲视频啊啊啊啊| 欧美婷婷久久| 欧美日韩精品不卡| 欧美日韩亚洲一区二区三区在线| 美女国产一区| 久久久久一区二区| 亚洲欧美网站| 亚洲黄色成人| 亚洲视频一二| 久久一区二区三区超碰国产精品| 中文精品一区二区三区| 亚洲福利久久| 一区二区三区福利| 国产精品日韩| 一区二区欧美日韩| 在线精品亚洲| 影院欧美亚洲| 午夜精品一区二区在线观看 | 99亚洲一区二区| aa日韩免费精品视频一| 国产欧美高清| 中国女人久久久| 国产精品porn| 久久亚洲免费| 国产精品a级| 亚洲日韩成人| 久久精品伊人| 精品9999| 美女爽到呻吟久久久久| 欧美日韩亚洲一区二区三区四区| 狠色狠色综合久久| 亚洲一区日韩| 欧美三区视频| 一本色道久久综合一区| 玖玖在线精品| 一区二区日本视频| 欧美日韩国产精品一区二区亚洲| 亚洲国产精品www| 久久国产66| 亚洲欧洲精品一区二区| 欧美有码视频| 亚洲神马久久| 在线成人h网| 可以看av的网站久久看| 一区二区精品在线| 狠狠入ady亚洲精品| 美女国产精品| 中文亚洲免费| 国内自拍视频一区二区三区| 亚洲一区高清| 亚洲精品美女| 欧美日韩国产在线一区| 亚洲一区在线直播| 日韩午夜在线| 亚洲人成免费| 欧美日韩在线精品| 欧美 日韩 国产在线| 免费久久久一本精品久久区 | 欧美午夜在线| 蜜桃av综合| 亚洲一区高清| 在线视频亚洲| 日韩亚洲国产欧美| 亚洲成人自拍视频| 狠狠色狠狠色综合人人| 欧美日韩大片一区二区三区| 香蕉国产精品偷在线观看不卡| 99精品视频免费观看| 一区视频在线| 在线国产日韩| 一区免费在线| 亚洲电影在线| 亚洲国产精品一区| 亚洲激情偷拍| 在线亚洲欧美| 国产精品一区在线观看| 国产亚洲网站| 亚洲欧美日韩在线综合| 亚洲一区二区三区高清不卡| 亚洲九九精品| 国产精品日韩精品欧美精品| 国产欧美一区二区色老头| 国产亚洲精品久久飘花| 亚洲一区二区三区四区五区午夜| 国产精品日韩欧美一区| 久久国产88| 老牛影视一区二区三区| 国产一区再线| 一本一道久久综合狠狠老精东影业 | 国产精品日韩二区| 亚洲中字黄色| 欧美黄免费看| 欧美日韩三级电影在线| 影音先锋中文字幕一区二区| 亚洲二区视频| 亚洲欧美精品| 国产一区在线免费观看| 99亚洲视频| 久久美女性网| 亚洲青色在线| 久久精品道一区二区三区| 欧美黄色免费| 妖精视频成人观看www| 久久午夜精品| 亚洲大片在线| 久久精品女人| 亚洲激情社区| 久久精品亚洲| 9国产精品视频| 欧美精品啪啪| 99视频一区| 欧美日韩视频| 国产精品手机视频| 好看不卡的中文字幕| 国产精品一区视频网站| 欧美三区视频| 久久国产精品久久精品国产| 激情综合在线| 欧美国产91| 美女黄色成人网| 亚洲精品一二| 狠狠色综合网站久久久久久久| 午夜一区不卡| 亚洲精品资源| 黑人中文字幕一区二区三区| 亚洲欧美高清| 国产日韩精品视频一区二区三区| 欧美婷婷在线| 欧美国产91| 久久午夜影视|