
接下來我們來看看具體的代碼實作:
1.百度地圖是如何與HT for Web元件結合的;
2.百度地圖和GraphView的事件監聽;
首先監聽map的三個事件:moveend、 dragend、 zoomend,這三個事件做了同一件事--修改DataModel中所有data的position屬性,讓其在螢幕上的坐标與地圖同步,然後将GraphView的Scroll和Pinch兩個事件的執行函數設定為空函數,就是當監聽到Scroll或者Pinch事件時不做任何的處理,将這兩個事件交給map來處理。
3.建立右下角的圖表元件:
首先定義了ht.Chart類,并實作了validateImpl方法,方法中處理的邏輯也很簡單:在每次方法執行的時候調用圖表的reset方法重新設定圖示的展示大小,如果該方法是第一次執行的話,就調用圖表的restore方法将圖表還原為最原始的狀态。會有這樣的設計是因為ht.Chart類中的view是動态建立的,在沒有添加到dom之前将一直存在于記憶體中,在記憶體中因為并沒有浏覽器寬高資訊,是以div的實際寬高均為0,是以chart将option内容繪制在寬高為0的div中,即使你resize了chart,如果沒用重置圖表狀态的話,圖表狀态将無法在圖表上正常顯示。
在GraphView中添加互動監聽,如果在GraphView中做了框選操作,在框選結束後,将原本legend插件上被選中的節點取消選中,然後再擷取被選中節點,并在legend插件上選中對應節點;當GraphView上的節點被選中,則根據legend插件中對應節點選中情況來決定legend插件中的節點和graphView上的節點是否選中。
在GraphView互動中,我往chart執行個體中添加了_legendSelect變量,該變量的設定是為了阻止在GraphView互動中修改legend插件的節點屬性後回調legendSelectedFun回調函數做修改GraphView中節點屬性操作。