這篇文章主要介紹了如何實現(xiàn)支持Canvas的Leaflet.Path.DashFlow動態(tài)流向線,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、遵化網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
通過對leaflet以及其插件的學習,我們了解到使用Leaflet.Path.DashFlow
插件可實現(xiàn)軌跡動態(tài)展示、管道流向動態(tài)展示、河流流向動態(tài)展示等,達到增強可視化展示的效果。該插件使用方式非常簡單,只需在正常添加線的時候,加入dashArray
和dashSpeed
參數(shù)即可。核心代碼如下:
注意,在
dashSpeed
為負時,線是正向流動。
效果如下:
但是在使用的過程中,發(fā)現(xiàn)該插件有個弊端,就是當使用Canvas
方式繪制地圖(初始化地圖preferCanvas
參數(shù)為true
)時,動態(tài)效果不可用。那要如何解決這個問題呢?
通過對Leaflet.Path.DashFlow
以及leaflet
源碼的研究,發(fā)現(xiàn)動態(tài)線的效果主要是通過動態(tài)刷新dashOffset
參數(shù)的值,以改變線的樣式來實現(xiàn)。
L.SVG
在_updateStyle
的時候,更新了dashOffset
參數(shù),但是L.Canvas
在_updateStyle
時,并沒有更新dashOffset
參數(shù)。這即是在Canvas
方式繪制時沒有動態(tài)效果的原因。
L.SVG:
L.Canvas:
由此,我們找到了解決思路,即在L.Canvas
的_updateStyle
方法中,參考L.SVG
的處理方式,添加對dashOffset
參數(shù)的控制。核心代碼如下:
為方便使用,我們將L.Path.DashFlow
插件重新封裝,大家引用這個插件,即可在Canvas
和SVG
兩種方式下使用此插件。
使用Leaflet.Path.DashFlow
插件可實現(xiàn)軌跡動態(tài)展示、管道流向動態(tài)展示等動態(tài)線效果。
默認插件在使用Canvas
方式繪制地圖(初始化地圖preferCanvas
參數(shù)為true
)時,動態(tài)效果不可用。
通過修改L.Canvas
中代碼,即可在Canvas
方式時實現(xiàn)動態(tài)線效果。
將L.Path.DashFlow
插件重新封裝,引用插件,即可在Canvas
和SVG
兩種方式下實現(xiàn)動態(tài)線效果。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何實現(xiàn)支持Canvas的Leaflet.Path.DashFlow動態(tài)流向線”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!