简介
通过对leaflet以及其插件的学习,我们了解到使用Leaflet.Path.DashFlow插件可实现轨迹动态展示、管道流向动态展示、河流流向动态展示等,达到增强可视化展示的效果。
但是在使用的过程中,发现该插件有个弊端,就是当使用Canvas方式绘制地图(初始化地图preferCanvas参数为true)时,动态效果不可用。
通过对Leaflet.Path.DashFlow以及leaflet源码的研究,发现动态线的效果主要通过动态刷新dashOffset参数的值,以改变线的样式来实现。L.SVG在updateStyle的时候,更新了dashOffset参数,但是L.Canvas在updateStyle时,并没有更新dashOffset属性。
由此,我们找到了解决思路,即在L.Canvas的_updateStyle方法中,参考L.SVG的处理方式,添加对dashOffset参数的控制。
为方便使用,我们将L.Path.DashFlow插件重新封装,大家引用这个插件,即可在Canvas和SVG两种方式下使用此插件。
用法
该插件使用方式非常简单,只需在正常添加线的时候,加入dashArray和dashSpeed参数即可。
示例
<!-- 引入leafletapi -->
<link rel="stylesheet" href="./lib/leaflet.css" />
<script src="./lib/leaflet.js"></script>
<!-- 引入图层组显示隐藏插件 -->
<script type="text/javascript" src='../Leaflet.PathDashFlow.js'></script>